# web-ui Specification ## ADDED Requirements ### Requirement: Режиссёр в блоке распознавания страницы загрузки Страница просмотра `/download/{id}` в блоке «Распознано как» SHALL показывать режиссёра эффективного источника, разрешённого теми же слоями, что и отображаемое имя раздачи (`display_name`): первый непустой слой `override` → `recognition`+матч → сохранённый при приёме контекст (`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** поле «Режиссёр» показывает прочерк, а вёрстка блока не ломается