Files
vtube/docs/MODULES.md
goboss a9db23dfa4 initial: tubev infrastructure docs
- CLAUDE.md lean entry-point + index
- BOT_WORKFLOW.md dispatch rules + no-make-work + recommendations cadence
- SITES.md 14 ports inventory
- SYNC_WORKFLOW.md 2 sync paradigms
- MODULES.md module map + DEL_/test/obfuscated flags
- REFACTOR_RULES.md REFACTOR vs CLEANUP vs BUG vs FEATURE
- RECOMMENDATIONS.md initial backlog from gocc1+2+3+4 audits 2026-04-30
- docs/roles/ 4 bot roles
2026-04-30 14:18:23 +00:00

104 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.*