# tubev — Modules Map Модулі = `views/modules/*.etlua` partials що включаються через `<%= include … %>` у layout/page templates. ## Канонічні модулі (присутні скрізь або майже) | Module | Sites Present | Reuse signal | Notes | |--------|--------------:|--------------|-------| | `video.etlua` | 14/14 | ❌ всі md5 різні (67-77% common lines) | **Top SSOT candidate** — найвища similarity, зберігає однакову data-loop структуру | | `related_video.etlua` | 13/14 (no 8148) | ❌ всі md5 різні | structurally similar, candidates for shared partial | | `recommended_video.etlua` | 13/14 (no 8148) | ❌ | те саме | | `relink_videos.etlua` | 13/14 (no 8148) | ❌ | те саме | | `cat_list_alpha.etlua` | 13/14 (no 8129) | mixed | | | `cat_list_thumb.etlua` | 12/14 | ❌ всі md5 різні | + 5 варіантів з пробілами/"with ads" — потребує нормалізації | | `lang.etlua` | 12/14 (no 8081, 8129, 8148) | 9 unique md5, 2 ідентичні | i18n switcher | | `pager.etlua` | 10/14 | ✅ **3 unique md5, 7 ідентичні** | **Shared candidate** — вже фактично shared | | `removed_notify.etlua` | 10/14 | ✅ **4 unique md5, 6 ідентичні** | **Shared candidate** — вже фактично shared | | `paginator.etlua` | 10/14 | ❌ всі різні | + `paginator_old.etlua`, `paginator_ajax.etlua` варіанти | | `donors.etlua` | 12/14 | ❌ всі md5 різні | | ## Site-specific (тільки на 1 сайті) | Module | Site | Why | |--------|------|-----| | `profile_index.etlua` | 8081 | NL agego SPA-like, профілі користувачів — окрема архітектура | | `profile_public.etlua` | 8081 | те саме | | `profile_upload.etlua` | 8081 | те саме | | `channel_list_thumb.etlua` | 8081 | unique to 8081 | | `_cat_list_thumb.etlua` | 8081 | underscore-prefix variant | | `related_top_channels.etlua` | 8081 | | | `ga/ga.etlua` | 8081, 8112 | Google Analytics module | ## DEL_* tombstones (24 файли × 6 сайтів) **Видалити при першій нагоді (XS task, ~15 хв).** Префікс `DEL_` явно signals tombstone, але файли досі живуть і шумлять у grep. | Module | Sites | |--------|-------| | `DEL_channel_id.etlua` | 8100, 8102, 8107, 8112, 8131, 8133 | | `DEL_friend_list.etlua` | 8100, 8102, 8107, 8112, 8131, 8133 | | `DEL_lang.etlua` | 8100, 8102, 8107, 8112, 8131, 8133 | | `DEL_lang_mob.etlua` | 8100, 8102, 8107, 8112, 8131, 8133 | Деталі: **[RECOMMENDATIONS.md](RECOMMENDATIONS.md)** #2. ## `_test.etlua` / .test.js (sandbox у prod tree) Tests не повинні жити у prod. Перенести у `/tests/` або видалити. | File | Sites | |------|-------| | `cat_list_thumb_test.etlua` | 8084, 8085 | | `cat_index_test.etlua` | 8084, 8085 | | `main_list_test.etlua` | 8084, 8085 | | `video_test.etlua` | 8084, 8085 | | `counters.min.test.js` | 8133 | ## Backup-via-rename артефакти (~30 файлів) **Видалити при першій нагоді (S task, ~1h).** Файлові імена з пробілами ламають shell scripts. Версії повинні бути у git, не у filename. | Pattern | Examples | Sites | |---------|----------|-------| | `header copy bongo link 25_10_22.etlua` | (один з typo `bogolink` на 8112) | 8084, 8085, 8112, 8126, 8131 | | `* copy_ads_actual.etlua` | `id_index copy_ads_actual.etlua` | 8084, 8085 | | `* copy.etlua/.js` | `my copy.js`, `machine copy.js` | 8 sites | | `* with ads.etlua` / `* without ads.etlua` | `cat_list_thumb with ads.etlua` | 8112 (10 файлів) | | `* with titles.etlua` | | 8100 (5 файлів) | | `untitled file` | IDE saved-no-name | 8126 (×2) | | `*_old/`, `*_bak*` | `js_old/`, `img_old/`, `paginator_old.etlua`, `layout_bak_25-05-18.etlua` | 8085 (dirs), 8086, 8100 | | `asdadsasd.html`, `del___search_top.etlua` | obvious garbage | 8086 | ## Obfuscated JS (10 файлів — потребує origin audit) **Random naming підозріло на adblock-bypass scripts.** Не у sync.sh. Походження невідоме. | File | Site | |------|------| | `9qFdXQ7.js` | 8131 | | `gD0A3.js` | 8131 | | `PxqbeCb.js` | 8131 | | `gk5LT.js` | 8107 | | `f4T4s.js` | 8126 | | `aOKM9.js` | 8085 | | `N7Ym4F.js` | 8084 | | `k3KL5.js` | 8102 | | `qDap9.js` | 8112 | | `c24c4cd9.js` | (неідентифіковано) | | `popa.js`, `mo.js` | (неідентифіковано) | **Питання до розробника:** ваші adblock-bypass payloads, legacy ad scripts, чи невідомий drop? ## Banners модулі `views/modules/banners/` — окрема зона з ~30+ файлів native_adspy variants, embed_*adspy classes. Site-specific. Map поки не побудовано (P4 doc). ## Refactor candidate: shared base partial `video.etlua` — найкращий кандидат на extraction до shared partial з per-site CSS theme overrides. Деталі: **[RECOMMENDATIONS.md](RECOMMENDATIONS.md)** #4. --- *Source: gocc2 + gocc3 + gocc4 audits 2026-04-30.*