Завёл change review-source-selection: выбор источника и предпросмотр в ревью (openspec)

Переработка экрана ревью: единый список источников (нейронка наравне с
кандидатами баз), выбор/переключение/снятие в пользу нейронки, ручное
добавление по id/URL, предпросмотр полей и целевых путей до применения.
Дизайн отревьюен: единая деривация «источник → overrides» (preview==apply,
чинит залипший override title/year). Ограничились существующими capabilities.

Беклог: добавил две идеи — «Пересмотр набора capabilities и рефакторинг спек»
и «Сила совпадения кандидата / пересмотр распознавания и матчинга».

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-03 09:52:48 +03:00
co-authored by Claude Opus 4.8
parent 3df7f88fdc
commit e7fe88a986
6 changed files with 544 additions and 0 deletions
+45
View File
@@ -191,6 +191,51 @@ qBittorrent, пул LLM-вызовов и запись в SQLite спроект
[docs/conventions](conventions/README.md),
[«Словарь единого языка»](#словарь-единого-языка-ubiquitous-language).
### Пересмотр набора capabilities и рефакторинг спек
Деление capabilities в OpenSpec сложилось по ходу миграции и смешивает
разные действия в одной спеке. Пример: `recognition` держит и разбор через
LLM, и **сверку с внешними базами** — а «поиск в базе» и «подтверждение
матча официальным id» суть разные действия, значит и разные capability.
Нужно пересмотреть набор и границы, чтобы имя capability отвечало одному
поведению:
- `recognition` — только разбор сигналов через LLM (план, тип, название,
файлы → серии);
- отдельные capability под работу с метабазами: поиск записей во внешних
базах и сверку/подтверждение матча (разнести пока смешанное в
`recognition`);
- `web-ui` — только общее оформление, дизайн-система и общие компоненты
страниц;
- `review` — весь процесс ревью после распознавания и матча (мигрировать из
[review-ux.md](specs/review-ux.md); сейчас поведение ревью не в OpenSpec).
Работа чисто по спекам (границы, RENAMED/MOVED requirements), код не
трогаем. Ценно тем, что снимает путаницу «какой capability трогать» на
каждой задаче.
Связано: `CLAUDE.md` (SDD, миграция capabilities), openspec/specs
(`recognition`, `web-ui`), [review-ux.md](specs/review-ux.md),
[«Словарь единого языка»](#словарь-единого-языка-ubiquitous-language).
### Сила совпадения кандидата и пересмотр распознавания/матчинга _(идея)_
Сейчас у кандидата метабазы нет метрики силы совпадения (`metadata_candidate`
хранит provider/id/title/year/url), а решение «авто vs review» — по правилу
«единственный сильный матч + валидация», не по числовой уверенности. Для
ревью это значит: список кандидатов нечем отсортировать/подсветить по
уверенности — берём порядок сбора. Идея — ввести на этапе матча **силу
совпадения кандидата** (точное совпадение названия+года vs частичное) для
сортировки и подсказки в UI. Шире — отдельно продумать **сам процесс
распознавания и матчинга**: границы «разбор LLM / поиск в базе / сверка»,
что храним у кандидата, как считаем и показываем уверенность. Требует
проработки перед реализацией.
Связано: [recognition.md](specs/recognition.md) (модель уверенности),
[ADR-2026-06-13-auto-link-requires-db-match](adr/ADR-2026-06-13-auto-link-requires-db-match.md),
[«Ревью: выбор источника совпадения»](#ревью-выбор-источника-совпадения-и-предпросмотр),
[«Пересмотр набора capabilities»](#пересмотр-набора-capabilities-и-рефакторинг-спек).
### История переходов загрузки
Сохранять полную историю переходов состояний загрузки (что/когда/почему/кто