Files
jellybit/openspec/changes/archive/2026-07-17-download-card-director/specs/review/spec.md
T
avandClaude Opus 4.8 5948f4d219 Веб-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>
2026-07-17 21:21:27 +03:00

3.9 KiB

review Specification

MODIFIED Requirements

Requirement: Инфо и предпросмотр выбранного источника

В едином блоке выбора источника экран ревью SHALL показывать для выбранного (активного) источника две части: инфо — тип (read-only, movie/series), название, оригинальное название, год, режиссёра эффективного источника, разрешённого слоями (override/подтверждённый матч+кандидат → сохранённый при приёме контекст раздачи, parsed_context; когда режиссёр недоступен ни в одном слое — пусто/прочерк, не ломая вёрстку), для сериала — сводку сезонов (один сезон, диапазон/список для многосезонного пака или «Спецвыпуски»); и предпросмотр раскладки — целевые пути хардлинков этого источника. Обе части SHALL относиться именно к активному источнику и SHALL обновляться при смене выбора. Отрисовка блока (показ инфо и предпросмотра) MUST NOT создавать хардлинки: раскладка создаётся только явным действием «Применить». Совпадение целевых путей предпросмотра с результатом применения регулируется требованием «Превью раскладки через единую логику именования» (web-ui).

Scenario: Инфо и предпросмотр относятся к активному источнику

  • GIVEN в списке активен кандидат метабазы
  • WHEN пользователь смотрит инфо-часть и предпросмотр раскладки
  • THEN показаны тип, название, ориг. название, год (и сводка сезонов для сериала) именно этого источника и предпросмотр его целевых путей

Scenario: Просмотр блока не создаёт раскладку

  • GIVEN экран ревью с показанным блоком выбора источника
  • WHEN пользователь только просматривает инфо и предпросмотр, не нажимая «Применить»
  • THEN хардлинки не создаются, файлы под paths.movies/series не меняются

Scenario: Режиссёр показан, когда доступен

  • GIVEN активный источник — подтверждённый матч, несущий режиссёра
  • WHEN отображается инфо-часть выбранного источника
  • THEN в ней показан режиссёр этого источника
  • AND при отсутствии режиссёра во всех слоях место остаётся пустым (или прочерком), не ломая вёрстку

Scenario: Режиссёр берётся из контекста, когда матч его не даёт

  • GIVEN активный источник без режиссёра в плане, но с режиссёром в сохранённом контексте (parsed_context)
  • WHEN отображается инфо-часть выбранного источника
  • THEN в ней показан режиссёр из контекста (нижний слой разрешения)