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

3.3 KiB
Raw Blame History

Режиссёр в блоке «Распознано как» на странице загрузки

Приоритет: средний

На странице /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.