Files
jellybit/docs/backlog/rezhisser-v-kartochke-zagruzki.md
T
avandClaude Opus 4.8 3e470e3ae6 Беклог: перенос четырёх задач из инбокса Tududi
Инбокс Tududi разгружен: четыре открытые задачи проекта оформлены файлами
в docs/backlog и помечены выполненными в Tududi.

- режиссёр в блоке «Распознано как» на странице загрузки (средний);
- карточка информации о торренте вылезает за экран на мобильном (средний);
- сигнал Jellyfin после отката и удаления файлов (средний);
- кнопки выглядят как кнопки: btn-ghost и рассогласование весов (низкий).

Каждая задача проверена по коду: все четыре актуальны, ни одну не закрыли
прошлые коммиты. В телах — точки правки, развилки и нужные дельты спек.

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

51 lines
3.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.
# Режиссёр в блоке «Распознано как» на странице загрузки
**Приоритет:** средний
На странице `/download/{id}` в блоке «Распознано как» режиссёр всегда показан
прочерком — поля просто нет:
`web/templates/partials/download_main.html:40` содержит захардкоженное
`<dt>Режиссёр</dt><dd><span class="faint">—</span></dd>`.
Экран ревью режиссёра уже выводит (`internal/httpapi/review.go:49/122`,
`review_source_block.html:59`) — это сделано в change про слоистое разрешение
полей display_name; страницу загрузки он не тронул.
Данные для вывода есть: `Plan.Director` (`internal/recognize/recognize.go:91`)
персистится в JSON-колонке `recognition.plan`, а страница загрузки уже получает
эффективный план через `Reviewer.ReviewData(...)`
(`internal/httpapi/download.go:89`) — `rd.Plan` уже с наложенными override
(`internal/worker/review.go:987`, `:1271`).
## Развилка (решить до кода)
`rd.Plan.Director` — это слой «override → распознавание+матч», **без слоя
контекста**. Полное слоистое разрешение живёт в неэкспортируемом
`effectiveDisplayName(d, plan)` (`internal/worker/review.go:1118`, fallback
`plan.Director → ctxf.Director` на `:1127-1130`) и отдаёт готовую строку, а не
поля.
- **A (минимум, ~3 строки):** поле `Director` в `downloadDetailView`
(`internal/httpapi/download.go:37`) + присвоение `view.Director =
rd.Plan.Director` рядом с `:143`. Но при распознавании без матча режиссёр из
контекста не покажется, хотя в заголовке страницы (display name) он уже есть →
видимая нестыковка «в заголовке есть, в поле прочерк».
- **B (правильный):** вынести слоистое разрешение в экспортируемое
`naming.Fields`/`EffectiveFields(d, plan)`, переиспользовать в
`effectiveDisplayName` и в **обоих** билдерах вью. Чинит заодно ту же дыру в
`internal/httpapi/review.go:122`.
Рекомендация — B: A оставляет ровно тот баг, который заводили.
## Спеки
- `openspec/specs/web-ui/spec.md` — про блок «Распознано как» на `/download/{id}`
режиссёра нет вообще → нужна дельта.
- `openspec/specs/review/spec.md:255-289` — сценарий «Режиссёр показан, когда
доступен» ограничен экраном ревью и формулировкой «из подтверждённого
матча/кандидата»; вариант B потребует правки формулировки.
- `openspec/specs/recognition/spec.md:62-69` — режиссёр опционален и best-effort,
пустое значение штатно.
Связано: [[ubiquitous-language-slovar]].