На /download/{id} поле «Режиссёр» было захардкожено прочерком, хотя экран
ревью режиссёра уже выводит: слоистое разрешение полей ярлыка было заперто в
неэкспортируемом worker.effectiveDisplayName. Из-за этого билдеры вью видели
только слой распознавания+матч (rd.Plan.Director) без слоя контекста — то же
на экране ревью.
Вынес разрешение в экспортируемую naming.EffectiveFields(parsedContext, plan)
LabelFields с методом Label(): выбор слоя по сырым значениям (как прежде),
выбранные скаляры возвращаются очищенными (sanitize идемпотентен, display_name
побайтно тот же). effectiveDisplayName стал тонкой обёрткой; страница загрузки
и экран ревью берут режиссёра из той же функции — согласованно с заголовком.
OpenSpec: web-ui (ADDED «Режиссёр в блоке распознавания страницы загрузки»),
review (MODIFIED «Инфо и предпросмотр выбранного источника» — слоистое
разрешение с фолбэком на контекст). Change заархивирован. Беклог: закрыта
rezhisser-v-kartochke-zagruzki.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.5 KiB
2.5 KiB
1. Экспортируемое слоистое разрешение (naming)
- 1.1
internal/naming: типLabelFields(Title/Director/Year/Season string) с методомLabel(), зовущим существующийLabel(...) - 1.2
internal/naming: функцияEffectiveFields(parsedContext string, plan recognize.Plan) LabelFields— перенести логику слоёв изworker.effectiveDisplayName(план → контекст; сводка сезонов плана → контекстныйSeasonLabel); выбор слоя по сырым значениям, выбранные скаляры на возврате прогнать черезsanitize(идемпотентно —Label()даёт прежний результат); битыйparsed_context→ пустой слой - 1.3 Юнит-тесты
naming.EffectiveFields: режиссёр/год/сезон из плана; фолбэк на контекст; матч бьёт контекст; битыйparsed_context; пустые значения; режиссёр из управляющих символов/лишних пробелов →.Directorочищен и.Label()совпадает с прежнимdisplay_name
2. Переиспользование (worker)
- 2.1
worker.effectiveDisplayName→ тонкая обёрткаnaming.EffectiveFields(d.ParsedContext, plan).Label(); поведение и тестыdisplayname_test.goне меняются
3. Вывод режиссёра в вью (httpapi)
- 3.1
download.go: полеdownloadDetailView.Director; вbuildDownloadViewзаполнить изnaming.EffectiveFields(d.ParsedContext, rd.Plan).Director - 3.2
review.go:view.Directorизnaming.EffectiveFields(rd.Download. ParsedContext, rd.Plan).Directorвместоrd.Plan.Director - 3.3
web/templates/partials/download_main.html: поле «Режиссёр» —{{if .Director}}…{{else}}<span class="faint">—</span>{{end}}вместо прочерка
4. Проверки и закрытие
- 4.1 (опц.) httpapi-тест: режиссёр присутствует во вью страницы загрузки, если инфраструктура тестов позволяет
- 4.2
task testиtask lintзелёные;openspec validate --strict - 4.3 Удалить
docs/backlog/rezhisser-v-kartochke-zagruzki.mdи строку в индексе беклогаdocs/backlog/README.md