Раскладка: сходимость папки сериала (второй сезон в ту же папку)
При подтверждённом матче база папки (имя+год) наследуется от живой папки-якоря того же (provider, provider_id) вместо печати заново из выхода LLM — так второй/последующий сезон ложится в ТУ ЖЕ папку, а не заводит рядом почти одинаковую. Отдельная сущность «тайтл» не вводится. - layout: Plan.FolderBase перекрывает базу в папке и именах файлов; TitleFolder разбирает dst_path в папку тайтла и базу (снятие тега). - store: LiveTitleFolders — dst_path живых ссылок того же матча. - worker: resolveFolderBase (живость якоря — по наличию папки на диске, os.Lstat, а не по статусу ссылки в БД) в linkPlan и в превью ревью (превью=применение); рассинхрон нескольких живых папок → review из linking (deferred→review в графе нет). Схема БД не менялась. Change series-folder-convergence заархивирован, требования влиты в openspec/specs/file-layout. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -248,12 +248,19 @@ qBittorrent, но: v1/v2/гибрид дают разные значения; п
|
||||
|
||||
```
|
||||
1. ULID загрузки + download_infohash (дедуп переезжает). ← фундамент
|
||||
2. правило сходимости папки при плане раскладки. ← «второй сезон»
|
||||
2. правило сходимости папки при плане раскладки. ← «второй сезон» ✓ реализовано
|
||||
3. merge-раскладка (докачивание: доложить недостающее). ← §6.2
|
||||
4. группа «тайтл» в UI (вычисляемая) + удаление целиком (path 2). ← §6.4
|
||||
(state_transition — вставить, когда захочется таймлайн/метрики)
|
||||
```
|
||||
|
||||
> Шаг 2 (правило сходимости папки) реализован — change
|
||||
> `openspec/changes/archive/2026-07-10-series-folder-convergence/`, требования
|
||||
> влиты в `openspec/specs/file-layout/`. Отличие от §5.2 черновика: живость якоря
|
||||
> определяется существованием папки на диске (`os.Lstat`), а не только статусом
|
||||
> ссылки; рассинхрон нескольких живых папок → review; in-app разрешение
|
||||
> рассинхрона осознанно вне scope (ручной фикс на диске).
|
||||
|
||||
Каждый шаг — отдельный OpenSpec change; 1–2 самодостаточны и закрывают главную
|
||||
боль.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user