## MODIFIED Requirements ### Requirement: Превью раскладки через единую логику именования Превью целевых путей раскладки в веб-UI SHALL вычисляться той же логикой именования, что и реальная раскладка (`internal/naming`/`internal/layout`), а не дублировать правила в шаблоне. На экране ревью превью SHALL строиться **для выбранного (активного) источника** — эфемерно на сервере, без записи сохранённого матча самим показом. При смене выбранного источника превью SHALL пересчитываться под него и обновляться частичным свопом блока. Показанные для источника пути MUST совпадать с теми, что создались бы при применении этого источника. #### Scenario: Превью совпадает с реальной раскладкой - **WHEN** на экране ревью отображается превью целевых путей для выбранного источника - **THEN** эти пути идентичны тем, что создаст применение этого источника (те же правила имён, спецвыпусков, мультифайла, запрещённых символов, тега провайдера и коллизий) #### Scenario: Смена источника пересчитывает превью - **GIVEN** на экране ревью показан предпросмотр раскладки активного источника - **WHEN** пользователь выбирает другой источник в списке - **THEN** превью пересчитывается под выбранный источник и обновляется без полной перезагрузки страницы #### Scenario: Переключение источника не тянет чужие поля - **GIVEN** активен кандидат с запиненными название/год, затем выбран источник без собственных названия/года (нейронка или ручной кандидат) - **WHEN** строится превью и затем выполняется применение выбранного источника - **THEN** и превью, и применение используют название/год этого источника (из плана распознавания), без унаследованных от прежнего кандидата