Уточнил детали реализации review-source-selection по итогам разбора (openspec)

Зафиксировал в design/tasks: []SourceOption в ReviewData (нейронка первой),
общая деривация overridesForSource, предпросмотр всех источников на сервере
с раскрытием по клику, секция «Раскладка» остаётся отдельной для активного
источника.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-03 09:57:13 +03:00
co-authored by Claude Opus 4.8
parent e7fe88a986
commit 3d3448d050
2 changed files with 27 additions and 14 deletions
@@ -119,11 +119,17 @@
### 2. Клиент только показывает предпосчитанное, не считает пути ### 2. Клиент только показывает предпосчитанное, не считает пути
Превью всех известных источников кладём в страницу (data-блоки/скрытые Превью всех источников предпосчитываем на сервере и вкладываем в страницу
секции), клиентский vanilla-JS лишь переключает видимость по выбору строки. (данных немного — кандидатов мало, порога/ленивой загрузки не вводим).
Никакого доменного пересчёта на клиенте — соблюдаем требование `web-ui`. Клиент лишь раскрывает/скрывает предпосчитанный блок строки по клику
Фактическая смена активного источника (пиннинг) — по явному действию формой (нативный `<details>` или минимальный vanilla-JS) — никакого доменного
(раундтрип), как сейчас. пересчёта на клиенте, соблюдаем требование `web-ui`.
UI-модель: секция **«Раскладка» остаётся отдельной** и показывает пути
**активного** источника (как сейчас); раскрываемое инлайн-превью в строке —
для сравнения **неактивных** источников до выбора. Фактическая смена
активного источника (пиннинг) — по явному действию формой (раундтрип), как
сейчас.
### 3. Нейронка — синтетическая строка, а не особый режим ### 3. Нейронка — синтетическая строка, а не особый режим
@@ -36,17 +36,24 @@
## 3. Страница ревью: единый список и предпросмотр (httpapi + шаблон) ## 3. Страница ревью: единый список и предпросмотр (httpapi + шаблон)
- [ ] 3.1 Переработать блок «Источник совпадения» в единый список строк: - [ ] 3.1 Переработать блок «Источник совпадения» в единый список строк из
нейронка + кандидаты баз + ручной ввод; ровно один активный `[]SourceOption`: нейронка (первой) + кандидаты баз + ручной ввод;
- [ ] 3.2 Рендер строк с предпросмотром полей (тип/название/год + пустое ровно один активный, у активного — матч-ссылка (как сейчас)
место под режиссёра) и целевых путей для каждого источника - [ ] 3.2 Строка источника: шапка (провайдер/название/год + маркер активного
- [ ] 3.3 Клиентский vanilla-JS: переключение видимости предпосчитанного + кнопка «выбрать») и **раскрываемый по клику** блок предпросмотра —
превью по выбору строки; без доменного пересчёта на клиенте поля (тип/название/год + пустое место под режиссёра) и целевые пути;
- [ ] 3.4 Действия строк формами-раундтрипами: выбрать кандидата данные всех источников предпосчитаны сервером и вложены в страницу
- [ ] 3.3 Секцию «Раскладка» оставить отдельной — показывает пути **активного**
источника (как сейчас); инлайн-превью в строках — только для сравнения
неактивных до выбора
- [ ] 3.4 Клиентский vanilla-JS: раскрытие/скрытие предпосчитанного превью
строки по клику (нативный `<details>` или минимальный JS); без
доменного пересчёта на клиенте
- [ ] 3.5 Действия строк формами-раундтрипами: выбрать кандидата
(`ChooseCandidate`), снять в пользу нейронки (`ClearProvider`), (`ChooseCandidate`), снять в пользу нейронки (`ClearProvider`),
добавить вручную; сохранить прежние действия ревью добавить вручную; сохранить прежние действия ревью
- [ ] 3.5 Убедиться, что матч-ссылка и заголовок корректны для ручного - [ ] 3.6 Убедиться, что матч-ссылка и заголовок строки корректны для ручного
кандидата с пустыми title/year кандидата с пустыми title/year (деградация до «провайдер + id»)
## 4. Проверка и приёмка ## 4. Проверка и приёмка