Files
jellybit/openspec/changes/archive/2026-07-17-download-card-director/specs/web-ui/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.1 KiB

web-ui Specification

ADDED Requirements

Requirement: Режиссёр в блоке распознавания страницы загрузки

Страница просмотра /download/{id} в блоке «Распознано как» SHALL показывать режиссёра эффективного источника, разрешённого теми же слоями, что и отображаемое имя раздачи (display_name): первый непустой слой overriderecognition+матч → сохранённый при приёме контекст (parsed_context). Разрешение режиссёра для поля блока и для отображаемого имени SHALL идти единой логикой (общий источник разрешения), а не расходящимися путями — прежняя захардкоженная в поле заглушка-прочерк при непустом режиссёре в заголовке устраняется. Показанное значение SHALL проходить ту же очистку (санитайзинг управляющих символов/пробелов), что и режиссёр внутри отображаемого имени, чтобы присутствие/отсутствие режиссёра в поле и в заголовке определялось одинаково. Когда режиссёр недоступен ни в одном слое, поле SHALL показывать прочерк, не ломая вёрстку.

Scenario: Режиссёр из распознавания показан в блоке

  • GIVEN загрузка, чей эффективный план несёт режиссёра (из матча метабазы или закреплённого источника)
  • WHEN клиент открывает GET /download/{id}
  • THEN в блоке «Распознано как» в поле «Режиссёр» показан этот режиссёр

Scenario: Режиссёр из контекста при распознавании без матча

  • GIVEN загрузка без режиссёра в плане, но с режиссёром в сохранённом контексте (parsed_context)
  • WHEN клиент открывает GET /download/{id}
  • THEN в поле «Режиссёр» показан режиссёр из контекста
  • AND он разрешён тем же нижним слоем контекста, что и режиссёр в отображаемом имени раздачи (единая логика, не расходящиеся пути)

Scenario: Режиссёр неизвестен — прочерк

  • GIVEN загрузка, для которой режиссёр не разрешается ни одним слоем
  • WHEN клиент открывает GET /download/{id}
  • THEN поле «Режиссёр» показывает прочерк, а вёрстка блока не ломается