# Режиссёр в блоке «Распознано как» на странице загрузки **Приоритет:** средний На странице `/download/{id}` в блоке «Распознано как» режиссёр всегда показан прочерком — поля просто нет: `web/templates/partials/download_main.html:40` содержит захардкоженное `
Режиссёр
`. Экран ревью режиссёра уже выводит (`internal/httpapi/review.go:49/122`, `review_source_block.html:59`) — это сделано в change про слоистое разрешение полей display_name; страницу загрузки он не тронул. Данные для вывода есть: `Plan.Director` (`internal/recognize/recognize.go:91`) персистится в JSON-колонке `recognition.plan`, а страница загрузки уже получает эффективный план через `Reviewer.ReviewData(...)` (`internal/httpapi/download.go:89`) — `rd.Plan` уже с наложенными override (`internal/worker/review.go:987`, `:1271`). ## Развилка (решить до кода) `rd.Plan.Director` — это слой «override → распознавание+матч», **без слоя контекста**. Полное слоистое разрешение живёт в неэкспортируемом `effectiveDisplayName(d, plan)` (`internal/worker/review.go:1118`, fallback `plan.Director → ctxf.Director` на `:1127-1130`) и отдаёт готовую строку, а не поля. - **A (минимум, ~3 строки):** поле `Director` в `downloadDetailView` (`internal/httpapi/download.go:37`) + присвоение `view.Director = rd.Plan.Director` рядом с `:143`. Но при распознавании без матча режиссёр из контекста не покажется, хотя в заголовке страницы (display name) он уже есть → видимая нестыковка «в заголовке есть, в поле прочерк». - **B (правильный):** вынести слоистое разрешение в экспортируемое `naming.Fields`/`EffectiveFields(d, plan)`, переиспользовать в `effectiveDisplayName` и в **обоих** билдерах вью. Чинит заодно ту же дыру в `internal/httpapi/review.go:122`. Рекомендация — B: A оставляет ровно тот баг, который заводили. ## Спеки - `openspec/specs/web-ui/spec.md` — про блок «Распознано как» на `/download/{id}` режиссёра нет вообще → нужна дельта. - `openspec/specs/review/spec.md:255-289` — сценарий «Режиссёр показан, когда доступен» ограничен экраном ревью и формулировкой «из подтверждённого матча/кандидата»; вариант B потребует правки формулировки. - `openspec/specs/recognition/spec.md:62-69` — режиссёр опционален и best-effort, пустое значение штатно. Связано: [[ubiquitous-language-slovar]].