[2026-09-22] eagle: family/how-to/gitea-config.md family/projects/watchlist-sync.md personal/plans/watchlist-tmdb-missing-marker.md personal/tech/lampac-deployment.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-22 17:38:36 +06:00
1 parent e3618d5001
commit 62c4ba3d06
4 files changed
+199 -15

No files matched your search

+50 -1
View File
@@ -71,14 +71,63 @@ related:
/Users/admin/Developer/lampac-scripts/
├── scripts/gen_watchlist.py (из gen_watchlist_v2.py — ПРОД-генератор)
├── scripts/deploy_lampac.py
├── scripts/mark_missing.py (в прод НЕ ставить — см. план, Шаг 1.3)
├── scripts/mark_missing.py (маркер ❓, вход — missing.json)
└── tests/accept_step1.py, tests/accept_step1_order.py
```
**Первый коммит:** `1765c05` (gitea `git_admin/lampac-scripts`, private).
Проверка push: `git rev-parse HEAD` == `git ls-remote origin refs/heads/main`.
Создание репо через API — `~/lampac-tmp/create_gitea_repo.py` (Python, а не bash:
подстановка `$( … | sed … )` вырезается фильтром безопасности — питфолл №2 из
[[family/how-to/gitea-config.md]]).
## 🔎 Резолв позиций в каталоге — три уровня (2026-09-22)
Генератор ищет фильм по цепочке, от точного к эвристике:
```
1) Radarr по названию
2) TMDB по названию как есть
2c) Кинопоиск по KP_ID ИЗ ССЫЛКИ .md -> имя/EN-алиас -> TMDB ← машинный ключ
2b) Кинопоиск по НАЗВАНИЮ -> имя/EN-алиас -> TMDB ← эвристика
3) miss -> позиция в JSON каталога НЕ попадает, имя в missing.json -> ❓ в .md
```
🔴 **2c ВЫШЕ 2b намеренно.** `kp_id` из ссылки — машинный ключ, он не зависит от
переименований. Пример: в `.md` «Астрал. Могильный ритуал 2», КП по id `11825624`
отдаёт актуальное имя «Могильный ритуал. Зло вернулось» → TMDB **1576953**.
Если бы 2b шёл первым, он привязал бы **1-ю часть** (1264397) по общему префиксу.
🔴 **`KP_SIM_THRESHOLD = 0.75`** — порог близости документа КП к запросу.
Документ с `sim ≥ 0.75`, но нерезолвенный в TMDB = **окончательный промах**,
дальше перебирать нельзя. Без порога перебор уходил в мусор: по «WeWork»
релевантный документ (sim=1.00) не резолвился из-за **латинской `C`** в слове
«Cоздание» (дефект данных КП), и скрипт брал `We Work for the Dead` (1135465)
вместо `795622`.
⚠️ Порог и `kp_id` — **числовые/машинные критерии**, не ручной словарь соответствий.
Инвариант «никаких ручных правок» не нарушен.
### `missing.json` и маркер ❓
Генератор пишет снимок нерезолвленных рядом с каталогом:
```json
{"generated": true, "count": 30, "missing": ["All systems red", "..."]}
```
Маркер ставится **по факту промаха**, а не по тексту `.md`:
```bash
python3 scripts/mark_missing.py --missing <wwwroot>/missing.json <путь.md> [--apply]
```
🔴 **Первая версия `mark_missing.py` решала «нет TMDB» по тексту строки** и дала
**344 пометки вместо 18** (помечала рабочие позиции с постерами). В прод не пошла.
Сопоставление теперь по нормализованному названию (нижний регистр, `ё→е`, без
пунктуации/эмодзи, без хвостового года). `🗓️` и `[x]` не трогаются, `❓` не дублируется.
## 🔄 Ночной крон на Кра́кене — что делает автоматика
`~/scripts/watchlist-nightly.sh`, cron **01:00**: