Files
jellybit/openspec/changes/archive/2026-07-17-2026-07-17-jellyfin-scan-on-revert-delete/tasks.md
T
avandClaude Opus 4.8 1639ebfdd7 Пересканирование Jellyfin: расширить триггер на reverted и deleted
Скан Jellyfin (POST /Library/Refresh) слался только при входе в done.
После Undo (reverted) и Delete (deleted) наши хардлинки сняты, а Jellyfin
держал битые записи до скана по расписанию.

Гейт скана в едином чекпоинте transitionErr переведён с state == done на
предикат triggersScan(state) по множеству {done, reverted, deleted}: гейт по
состоянию-цели естественно ловит пользовательские Undo/Delete и
reconcile-производный deleted, идемпотентно. target_missing/orphaned —
промежуточный рассинхрон (ждём relink/лечения) — исключены.

OpenSpec: заведена и влита дельта file-layout (требование
«Пересканирование Jellyfin после изменения библиотечных ссылок»); change
архивирован. Синк рукописных доков architecture.md/workflow.md. Тесты:
скан стреляет на reverted и deleted, молчит на входе вне множества.
Закрыта задача беклога jellyfin-skan-posle-udaleniya.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 21:14:18 +03:00

35 lines
2.3 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.
## 1. worker — расширить гейт скана
- [x] 1.1 В `internal/worker/worker.go` (`transitionErr`) заменить условие
`state == store.StateDone` на проверку принадлежности `state` множеству
`{done, reverted, deleted}` (небольшой предикат-хелпер для читаемости).
Остальную механику скана (фоновый ctx, `capFileLayout`-scoped-логгер,
неблокирующая горутина, `w.scanner != nil`) переиспользовать как есть.
- [x] 1.2 Обновить поясняющий комментарий: скан не только «раскладка завершена»,
а «наши библиотечные хардлинки изменились» (разложены при `done`, сняты при
`reverted`/`deleted`).
## 2. Тесты
- [x] 2.1 `internal/worker/review_test.go`: тест, что скан стреляет на входе в
`reverted` (после `Undo`).
- [x] 2.2 Тест, что скан стреляет на входе в `deleted` (после `Delete`).
- [x] 2.3 (Опц.) Негативный точечный тест: на входе, не меняющем наши ссылки,
скан не дёргается.
## 3. Доки
- [x] 3.1 `docs/specs/architecture.md` («Пересканирование Jellyfin» и строка
«Решённые вопросы»): формулировку «при входе в `done`» заменить на «после
раскладки (`done`) и после снятия наших ссылок (`reverted`/`deleted`)».
- [x] 3.2 `docs/specs/workflow.md`: в описании `done` и снятия ссылок отразить,
что скан дёргается и после Undo/Delete.
## 4. Ревью и сверка
- [x] 4.1 `task test` и `task lint` зелёные.
- [x] 4.2 Ревью кода (второй чекпоинт) перед archive.
- [x] 4.3 `openspec validate 2026-07-17-jellyfin-scan-on-revert-delete --strict` зелёный.
- [x] 4.4 Синк дельты в `openspec/specs/file-layout`, архив change; удалить
`docs/backlog/jellyfin-skan-posle-udaleniya.md` и строку из индекса беклога.