- Кнопка «Обновить имя» должна давать формат add-шага (Название (режиссёр, год), сезон; всё опц. кроме названия) вместо усечённого «Title (Year)». - Отменённые (cancelled) скрывать в общем списке наравне с удалёнными; тумблер «показать удалённые» раскрывает и cancelled, и deleted. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.1 KiB
Кнопка «Обновить имя»: полный формат ярлыка (Название (режиссёр, год), сезон)
Приоритет: низкий · Теги: web-ui, naming, review
Кнопка «Обновить имя» (перелив распознанного названия в display_name и ярлык
раздачи) сейчас генерирует усечённый формат Title (Year) через
naming.FormatTitleYear(plan.Title, plan.Year)
(internal/worker/review.go:1110). Ожидается тот же формат, что и «полное»
отображаемое имя add-шага: Название (режиссёр, год), а для сериала — плюс
. Сезон N. Всё опционально, кроме названия.
Нужный формат уже реализован приватной render() в
internal/naming/naming.go:104-140 (movie: "Title (Director, Year)", series
". Сезон N"), ноRefreshDisplayNameего не использует — комментарий уFormatTitleYear(naming.go:88-95) прямо отмечает: «у перелива режиссёра и сезона нет». Задача — устранить это расхождение: перелив должен давать тот же ярлык, что и add-шаг.
Шаги:
- Экспонировать
render-логику (публичная обёртка вinternal/naming) или собратьextractedиз плана и позвать её изRefreshDisplayName. - Сезон — из плана (
recognize.PlanFile.Season,recognize.go:77): для сериала взять сезон (единый — подставить, разные — решить: опустить или взять минимальный; свериться с логикой сводки сезонов на странице). - Режиссёр — открытый вопрос: в
recognize.Planего сейчас нет. Найти источник (матч метабазы TMDB/TVDB несёт режиссёра? recognition?) или, если недоступен, опустить (формат допускает отсутствие). Уточнить, откуда add-шаг берёт режиссёра, и переиспользовать тот же источник. - Все части, кроме названия, опциональны — пустой режиссёр/год/сезон просто
выпадают из скобок/хвоста (как уже делает
render).
Проверить: единый формат ярлыка раздачи и display_name; санитайзинг и лимит
длины (maxNameLen) сохраняются; поведение на done/orphaned (кнопка гейтится
наличием распознавания, не состоянием — internal/httpapi/download.go:142).
Связано: openspec/specs/recognition, openspec/specs/review, пакеты
internal/naming, internal/worker, internal/recognize.