- Раскладка docs/ приведена к канону 2: заведены passport/architecture/ database/security/review и research; docs/specs, drafts, backlog, review/ и BRIEF.md разобраны и удалены, беклог переехал в docs/tasks (34 задачи, 6 целей, слаги на английский). - Нарративы specs удалены как дубли openspec-спек после поимённой сверки; остаток заведён задачами (редактор маппинга ревью, крайние случаи именования), отказ от сущности title промоутнут в ADR. - Проектные копии агентов и скиллов ревью/пайплайна удалены в пользу плагинов av-dev-pm и av-dev-pipeline; в task gate добавлен шаг canon вместо er-schema.
38 lines
2.5 KiB
Markdown
38 lines
2.5 KiB
Markdown
## 1. Экспортируемое слоистое разрешение (naming)
|
||
|
||
- [x] 1.1 `internal/naming`: тип `LabelFields` (Title/Director/Year/Season string)
|
||
с методом `Label()`, зовущим существующий `Label(...)`
|
||
- [x] 1.2 `internal/naming`: функция `EffectiveFields(parsedContext string, plan
|
||
recognize.Plan) LabelFields` — перенести логику слоёв из
|
||
`worker.effectiveDisplayName` (план → контекст; сводка сезонов плана →
|
||
контекстный `SeasonLabel`); выбор слоя по сырым значениям, выбранные скаляры
|
||
на возврате прогнать через `sanitize` (идемпотентно — `Label()` даёт прежний
|
||
результат); битый `parsed_context` → пустой слой
|
||
- [x] 1.3 Юнит-тесты `naming.EffectiveFields`: режиссёр/год/сезон из плана;
|
||
фолбэк на контекст; матч бьёт контекст; битый `parsed_context`; пустые
|
||
значения; режиссёр из управляющих символов/лишних пробелов → `.Director`
|
||
очищен и `.Label()` совпадает с прежним `display_name`
|
||
|
||
## 2. Переиспользование (worker)
|
||
|
||
- [x] 2.1 `worker.effectiveDisplayName` → тонкая обёртка
|
||
`naming.EffectiveFields(d.ParsedContext, plan).Label()`; поведение и тесты
|
||
`displayname_test.go` не меняются
|
||
|
||
## 3. Вывод режиссёра в вью (httpapi)
|
||
|
||
- [x] 3.1 `download.go`: поле `downloadDetailView.Director`; в `buildDownloadView`
|
||
заполнить из `naming.EffectiveFields(d.ParsedContext, rd.Plan).Director`
|
||
- [x] 3.2 `review.go`: `view.Director` из `naming.EffectiveFields(rd.Download.
|
||
ParsedContext, rd.Plan).Director` вместо `rd.Plan.Director`
|
||
- [x] 3.3 `web/templates/partials/download_main.html`: поле «Режиссёр» —
|
||
`{{if .Director}}…{{else}}<span class="faint">—</span>{{end}}` вместо прочерка
|
||
|
||
## 4. Проверки и закрытие
|
||
|
||
- [x] 4.1 (опц.) httpapi-тест: режиссёр присутствует во вью страницы загрузки,
|
||
если инфраструктура тестов позволяет
|
||
- [x] 4.2 `task test` и `task lint` зелёные; `openspec validate --strict`
|
||
- [x] 4.3 Удалить `docs/tasks/items/rezhisser-v-kartochke-zagruzki.md` и строку в
|
||
индексе беклога `docs/tasks/BACKLOG.md`
|