Веб-UI: режиссёр в блоке «Распознано как» на странице загрузки
На /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>
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"git.vakhrushev.me/av/jellybit/internal/naming"
|
||||
"git.vakhrushev.me/av/jellybit/internal/recognize"
|
||||
"git.vakhrushev.me/av/jellybit/internal/store"
|
||||
"git.vakhrushev.me/av/jellybit/internal/worker"
|
||||
@@ -38,6 +39,7 @@ type downloadDetailView struct {
|
||||
OriginalTitle string
|
||||
Season string // сводка сезонов для сериала (пусто для фильма)
|
||||
Year int
|
||||
Director string // режиссёр эффективного источника (пусто — неизвестен)
|
||||
Provider string
|
||||
ProviderID string
|
||||
MatchURL string // ссылка на запись метабазы (пусто — показываем текстом)
|
||||
@@ -145,6 +147,10 @@ func (s *server) buildDownloadView(id string, rd *worker.ReviewData) downloadDet
|
||||
view.Season = recognize.SeasonSummary(rd.Plan)
|
||||
}
|
||||
view.Year = rd.Plan.Year
|
||||
// Режиссёр — из того же слоистого разрешения, что и display_name в шапке
|
||||
// (override → распознавание+матч → контекст), чтобы поле не расходилось с
|
||||
// заголовком; пустой во всех слоях → прочерк в шаблоне.
|
||||
view.Director = naming.EffectiveFields(d.ParsedContext, rd.Plan).Director
|
||||
// Ручное обновление имени доступно, когда есть распознанное название,
|
||||
// которое можно перелить (иначе FormatTitleYear даст пусто → no-op).
|
||||
view.Nameable = rd.Plan.Title != ""
|
||||
|
||||
Reference in New Issue
Block a user