[2026-09-27] eagle: personal/plans/music-artist-albumartist-repair.md personal/tech/batch-data-edit-review-loop.md
This commit is contained in:
1 parent
5bc7737d3e
commit
a33383a135
2 files changed
+158
-14
No files matched your search
@@ -68,8 +68,50 @@ related:
|
||||
**Правило:** каждое срабатывание детектора проверять глазами; не править пачкой.
|
||||
В волне 38 из ~100 «срабатываний» реальными были **7**.
|
||||
|
||||
## 🔴 Уроки диффа планов (2026-09-27)
|
||||
|
||||
### 4. Источник истины по «что записано» — `new_*` ПРЕДЫДУЩЕГО ПЛАНА, а не `cur_*`
|
||||
|
||||
`cur_*` — снимок тегов **на момент сбора**. Он НЕ равен тому, что записано в файлы после прогона.
|
||||
Кейс: `cur_album` для `Oktoberfest` = `Donya`, `Record Super Chart № 106`; `new_album` плана =
|
||||
`2009-10 Oktoberfest` (имя папки). Значения `Donya` в файлы **не писались** — они жили только в `cur_*`.
|
||||
|
||||
**Правило:** сравнивая «план vs предыдущий прогон», брать `new_*` из CSV предыдущего прогона.
|
||||
`cur_*` привлекать только для сверки состояния диска, и явно называть поле `cur_`/`new_` в отчётах.
|
||||
|
||||
### 5. Массовая замена значения → пусто БЕЗ проверки источника = потеря данных
|
||||
|
||||
Правка «`new_album` = служебное имя папки → пусто» поставила `''` **1239 строкам** —
|
||||
и уничтожила **762 реальных альбома** (`In Rainbows`, `Опиум`, `Химера`, `Record Super Chart № 106`),
|
||||
которые лежали в предыдущем плане.
|
||||
Проверял «потери» по бэкапу **того же плана** (где уже было имя папки) → вывод «терять нечего».
|
||||
**Ложная проверка: сравнивал не тот файл.**
|
||||
|
||||
**Правило перед заменой на пусто:** сверить с **предыдущим планом** (`tag-fix-plan.csv`), а не
|
||||
с бэкапом правимого файла. Если в предыдущем плане значение осмысленное — вернуть его.
|
||||
Лечится `restore_album.py` (бэкап-база + дозаполнение из предыдущего плана).
|
||||
|
||||
### 6. Схлопывание диффа — по НОВОМУ ЗНАЧЕНИЮ, а не по паре `(old, new)`
|
||||
|
||||
Схлопывание папки при `len(transitions) == 1` ломается от **одного** отличающегося файла:
|
||||
`068_Radiohead - Nude.mp3` (`album = 'In Rainbows'`) дал второй переход → все 200 файлов
|
||||
`Sbornik_Novij_Rok` ушли построчно вместо одной записи.
|
||||
**Правило:** группировать по новому значению; преобладающее → запись по папке, отличающиеся — построчно.
|
||||
|
||||
### 7. Пустая разница ≠ корректность
|
||||
|
||||
`'' → ''` не попадает в дифф. Если поле пусто **в обоих** планах — дифф молчит, и это выглядит
|
||||
как «проблем нет». Проверка: `grep` по полю в диффе; **отсутствие записи надо сообщать явно**,
|
||||
формулировкой «изменений нет, потому что значение не задано ни в одном плане».
|
||||
|
||||
### 8. Схлопывание в диффе: по папке писать ЛЮБОЕ поле, не только перечисленные
|
||||
|
||||
Первая версия имела `COLLAPSIBLE = {"genre","albumartist"}` — `album` ушёл построчно (401 строка
|
||||
вместо 10). Ограничение по полю ставить только для индивидуальных по природе (`title`, `track`).
|
||||
|
||||
## Связанное
|
||||
|
||||
- [[personal/tech/music-tags-repair-truenas]] — волновой лог канонического инстанса
|
||||
- [[personal/plans/music-tags-wave38-fixes]] — план/результат волны 38
|
||||
- [[personal/tech/music-tags-rename-audit]] — аудит, нашедший эти дефекты
|
||||
- [[personal/plans/music-artist-albumartist-repair]] — дифф `APPLY-PLAN` vs 38-го прогона
|
||||
Reference in new issue
Block a user