diff --git a/openspec/changes/review-source-selection/design.md b/openspec/changes/review-source-selection/design.md index 1ea50d1..62223fd 100644 --- a/openspec/changes/review-source-selection/design.md +++ b/openspec/changes/review-source-selection/design.md @@ -119,11 +119,17 @@ ### 2. Клиент только показывает предпосчитанное, не считает пути -Превью всех известных источников кладём в страницу (data-блоки/скрытые -секции), клиентский vanilla-JS лишь переключает видимость по выбору строки. -Никакого доменного пересчёта на клиенте — соблюдаем требование `web-ui`. -Фактическая смена активного источника (пиннинг) — по явному действию формой -(раундтрип), как сейчас. +Превью всех источников предпосчитываем на сервере и вкладываем в страницу +(данных немного — кандидатов мало, порога/ленивой загрузки не вводим). +Клиент лишь раскрывает/скрывает предпосчитанный блок строки по клику +(нативный `
` или минимальный vanilla-JS) — никакого доменного +пересчёта на клиенте, соблюдаем требование `web-ui`. + +UI-модель: секция **«Раскладка» остаётся отдельной** и показывает пути +**активного** источника (как сейчас); раскрываемое инлайн-превью в строке — +для сравнения **неактивных** источников до выбора. Фактическая смена +активного источника (пиннинг) — по явному действию формой (раундтрип), как +сейчас. ### 3. Нейронка — синтетическая строка, а не особый режим diff --git a/openspec/changes/review-source-selection/tasks.md b/openspec/changes/review-source-selection/tasks.md index 3eb3bda..932cf92 100644 --- a/openspec/changes/review-source-selection/tasks.md +++ b/openspec/changes/review-source-selection/tasks.md @@ -36,17 +36,24 @@ ## 3. Страница ревью: единый список и предпросмотр (httpapi + шаблон) -- [ ] 3.1 Переработать блок «Источник совпадения» в единый список строк: - нейронка + кандидаты баз + ручной ввод; ровно один активный -- [ ] 3.2 Рендер строк с предпросмотром полей (тип/название/год + пустое - место под режиссёра) и целевых путей для каждого источника -- [ ] 3.3 Клиентский vanilla-JS: переключение видимости предпосчитанного - превью по выбору строки; без доменного пересчёта на клиенте -- [ ] 3.4 Действия строк формами-раундтрипами: выбрать кандидата +- [ ] 3.1 Переработать блок «Источник совпадения» в единый список строк из + `[]SourceOption`: нейронка (первой) + кандидаты баз + ручной ввод; + ровно один активный, у активного — матч-ссылка (как сейчас) +- [ ] 3.2 Строка источника: шапка (провайдер/название/год + маркер активного + + кнопка «выбрать») и **раскрываемый по клику** блок предпросмотра — + поля (тип/название/год + пустое место под режиссёра) и целевые пути; + данные всех источников предпосчитаны сервером и вложены в страницу +- [ ] 3.3 Секцию «Раскладка» оставить отдельной — показывает пути **активного** + источника (как сейчас); инлайн-превью в строках — только для сравнения + неактивных до выбора +- [ ] 3.4 Клиентский vanilla-JS: раскрытие/скрытие предпосчитанного превью + строки по клику (нативный `
` или минимальный JS); без + доменного пересчёта на клиенте +- [ ] 3.5 Действия строк формами-раундтрипами: выбрать кандидата (`ChooseCandidate`), снять в пользу нейронки (`ClearProvider`), добавить вручную; сохранить прежние действия ревью -- [ ] 3.5 Убедиться, что матч-ссылка и заголовок корректны для ручного - кандидата с пустыми title/year +- [ ] 3.6 Убедиться, что матч-ссылка и заголовок строки корректны для ручного + кандидата с пустыми title/year (деградация до «провайдер + id») ## 4. Проверка и приёмка