[2026-09-27] eagle: personal/plans/music-artist-albumartist-repair.md personal/tech/music-tags-repair-truenas.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-27 21:34:55 +06:00
1 parent 7932f70274
commit 68356f1677
2 files changed
+166 -20

No files matched your search

+33 -6
View File
@@ -23,18 +23,45 @@ related:
# Music Tags Repair — TrueNAS (7906 → 7905 файлов)
> ## 🔴 АКТУАЛЬНОЕ СОСТОЯНИЕ (2026-09-27, сессия 29-ОКТИ) — ЧИТАЙ ЭТО ПЕРВЫМ
> ## 🔴 АКТУАЛЬНОЕ СОСТОЯНИЕ (2026-09-27, сессия ~30) — ЧИТАЙ ЭТО ПЕРВЫМ
>
> ✅ **DRY-RUN ВЫПОЛНЕН УСПЕШНО.** План `/tmp/apply-plan-v3.csv` (md5
> `6b9e49b2baa3f1d1708e4566972266a9`) скопирован на NAS как `/tmp/tw306/apply-plan.csv`
> (md5 совпал). Вывод — `/tmp/dryrun.log` / NAS `/tmp/tw306/dryrun.log`:
> ```
> строк в плане 7861 · mp3 на диске 7861 · не найдено 0 · к обработке 7653
> пропущено changed=no 208 · не-mp3 562 · DRY-RUN, ничего не записано
> ```
> **`TCON` доказан рабочим** — пример: `Кони привередливые.mp3` `genre 'Разное' → 'Бардовская песня'`.
>
> 🔴 **БОЕВОЙ ПРОГОН НЕ СОСТОЯЛСЯ — НИЧЕГО НЕ ЗАПИСАНО, музыка не тронута.**
> Причина: у `tagwriter:latest` в образе прописан `CMD=["--dry-run"]` →
> `docker create` без своего CMD запустил dry-run (`exit=0`, в логе снова DRY-RUN).
> **Перед повтором:** `docker inspect tagwriter:latest --format 'CMD={{json .Config.Cmd}}'`
> + явный флаг в `create`. См. § ПИТФОЛЛЫ доки плана.
>
> **Решение Alex (снят вопрос о диффе):** пишем **ПОЛНЫЙ НАБОР полей** (не только `TCON`),
> дифф НЕ пересобираем. Требование «dry-run должен совпасть с `APPLY-PLAN-v3-changes`»
> снято самим Alex: дифф считает ГРУППЫ, dry-run — ФАЙЛЫ, совпадение недостижимо by design.
>
> ✅ **КАНОННЫЙ ДИФФ v3 СОБРАН И ЗАКРЫТ:** `~/Downloads/music-tags/DIFF-base-vs-applyplan-v3.csv`
> — **945 записей** (`ПАПКА` 711 · `ТРЕК` 234), `md5 bdb20c6ae00e7dfab4da2f76653fe084`.
> Поля: `album` 28 · `albumartist` 6 · **`genre` 911 групп / 427 уникальных имён**.
> `track` — **0** (весь блок убран как шум, см. ниже).
> — **945 записей**, `md5 bdb20c6ae00e7dfab4da2f76653fe084`. Поля: `album` 28 ·
> `albumartist` 6 · `genre` 911 (ГРУПП, не файлов). `track` — **0** (убран как шум).
> ⚠️ **`genre` в диффе НЕ выдержан по `scope`:** в папке `!Radio/w 2008-07` дифф даёт
> 5 значений, в плане 11 — одиночки отброшены правилом «ПАПКА, если ≥2 файла».
> **Числа полей брать ИЗ ПЛАНА** (`cur_* != new_*`): `genre 4359 · albumartist 7213 ·
> album 2031 · track 441 · artist 381 · title 8`.
> База 7861 ↔ план 7861, сопоставлено 7861, **не найдено 0** (фильтр `path NOT LIKE 'backup%'`).
> Источник: `/tmp/apply-plan-v3.csv` (7861, из `new_*` `APPLY-PLAN.csv` + правило корня;
> **31 правка**, лог с колонкой `reason` — `~/Downloads/music-tags/APPLY-PLAN-v3-changes.csv`).
> **31 правка**, лог с колонкой `reason` — `~/Downloads/music-tags/APPLY-PLAN-v3-changes.csv`,
> ⚠️ **лог УСТАРЕЛ**: 3 строки расходятся с планом после `fix_ruki`/`fix_rockopop`).
> Сборщик: `/tmp/build_canon_diff_v3.py`.
>
> 🔴 **ВЕРИФИКАЦИЯ v3 (2026-09-27) — dry-run НЕ ЗАПУЩЕН, 3 расхождения.** Полный разбор —
> 🔴 **ЛОГ DRY-RUN НЕПОЛНЫЙ** — печатает 40 файлов из 7653, итогов по полям НЕТ.
> Не считать «genre меняется у 37» — это 40 показанных файлов, а не итог.
>
> ✅ **ВЕРИФИКАЦИЯ v3 (2026-09-27) — ВЫПОЛНЕНА, 3 расхождения.** dry-run с тех пор ЗАПУЩЕН
> и ПРОШЁЛ. Полный разбор —
> [[personal/plans/music-artist-albumartist-repair]] § ВЕРИФИКАЦИЯ v3 ПЕРЕД DRY-RUN.
> Коротко: (1) **лог `APPLY-PLAN-v3-changes.csv` УСТАРЕЛ** — писался до `fix_ruki.py`/
> `fix_rockopop_track.py`, 3 строки врут (`Руки` вместо `Руки вверх`, `!rock_o_pop` вместо