Веб-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:
@@ -0,0 +1,60 @@
|
||||
## Why
|
||||
|
||||
На странице просмотра загрузки `/download/{id}` в блоке «Распознано как» поле
|
||||
«Режиссёр» всегда показано прочерком — оно захардкожено
|
||||
(`web/templates/partials/download_main.html:40`), в отличие от экрана ревью, где
|
||||
режиссёр уже выводится. Данные есть: `Plan.Director` персистится в
|
||||
`recognition.plan`, а страница получает эффективный план через
|
||||
`Reviewer.ReviewData`. Возникает видимая нестыковка: в заголовке страницы
|
||||
(`display_name`) режиссёр из контекста уже присутствует, а в поле блока — прочерк.
|
||||
|
||||
Причина глубже одного шаблона: полное **слоистое разрешение** полей ярлыка
|
||||
(override → распознавание+матч → **контекст**) заперто в неэкспортируемом
|
||||
`worker.effectiveDisplayName`, который отдаёт готовую строку, а не поля. Поэтому
|
||||
билдеры вью на странице загрузки и на экране ревью видят только слой
|
||||
«распознавание+матч» (`rd.Plan.Director`) без нижнего слоя контекста — та же дыра
|
||||
в `internal/httpapi/review.go`.
|
||||
|
||||
## What Changes
|
||||
|
||||
- **Слоистое разрешение полей ярлыка выносится в экспортируемую функцию**
|
||||
`naming.EffectiveFields(parsedContext, plan)`, возвращающую эффективные поля
|
||||
(в т.ч. `Director`), а не готовую строку. Логика — та же, что была в
|
||||
`effectiveDisplayName`: первый непустой слой `override`→`recognition`(+матч),
|
||||
уже свёрнутый в план, с фолбэком на извлечённый из контекста слой
|
||||
(`parsed_context`).
|
||||
- **`worker.effectiveDisplayName` переиспользует новую функцию** (тонкая обёртка
|
||||
`naming.EffectiveFields(...).Label()`) — поведение `display_name` не меняется,
|
||||
существующие тесты остаются зелёными.
|
||||
- **Страница загрузки** выводит режиссёра из слоистого разрешения — согласованно
|
||||
с режиссёром в заголовке (`display_name`); при отсутствии во всех слоях —
|
||||
прочерк.
|
||||
- **Экран ревью** берёт режиссёра из той же функции — закрывается та же дыра
|
||||
(ранее только `rd.Plan.Director`, без слоя контекста).
|
||||
|
||||
Всё перечисленное — косметика отображения: не влияет на пути файлов,
|
||||
распознавание или раскладку.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
(нет — правка отображения в существующих capability)
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- `web-ui`: блок «Распознано как» на `/download/{id}` показывает режиссёра
|
||||
эффективного источника (слоистое разрешение), согласованно с заголовком.
|
||||
- `review`: инфо-часть выбранного источника показывает режиссёра из слоистого
|
||||
разрешения (с фолбэком на сохранённый контекст), а не только из плана.
|
||||
|
||||
## Impact
|
||||
|
||||
- Код: `internal/naming` (экспорт `EffectiveFields` + тип полей с методом
|
||||
`Label`), `internal/worker` (`effectiveDisplayName` делегирует в naming),
|
||||
`internal/httpapi` (`download.go`, `review.go` — режиссёр из слоистого
|
||||
разрешения), `web/templates/partials/download_main.html` (поле «Режиссёр»
|
||||
вместо прочерка).
|
||||
- БД: изменений схемы нет.
|
||||
- Внешние вызовы: нет.
|
||||
- Беклог: закрывается `docs/backlog/rezhisser-v-kartochke-zagruzki.md`.
|
||||
Reference in New Issue
Block a user