Files
avandClaude Opus 4.8 1f4267a046 Ревью: единый блок выбора источника, клик = выбор (review-unified-source-block)
Три секции экрана ревью (Догадка/Источник/Раскладка) слиты в один блок:
список вариантов (радио) → инфо о выбранном → предпросмотр раскладки. Клик
по варианту сразу выбирает и сохраняет источник и обновляет инфо+раскладку
частичным htmx-свопом блока, без полной перезагрузки и без кнопки «выбрать».

- httpapi: reviewBlockAction (htmx-aware, детект HX-Request) для
  candidate/nobase/source; вынос buildReviewView; поля SeasonSummary и
  BlockError; сводка сезонов (seasonSummary/seasonRanges)
- тип movie↔series убран из UI (read-only); удалён веб-роут /type и
  handleSetType, метод SetType из интерфейса httpapi (worker/Telegram не тронуты)
- шаблон: партиал review_source_block, ссылка «запись ↗» вне кликабельного
  label, фокус радио с клавиатуры; чистка мёртвого sourceView.Files/IsSeries
- тесты: htmx-своп выбора, htmx-путь ошибки, юнит-тесты сводки сезонов
- openspec: спеки review/web-ui синхронизированы, change заархивирован
- беклог: сложные сериальные раздачи; oob-обновление панели действий

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 08:12:28 +03:00

4.5 KiB

Why

Экран ревью разбит на три секции («Догадка», «Источник совпадения», «Раскладка»), которые дублируют друг друга: у каждого варианта в списке уже есть свой <details>-предпросмотр раскладки, а внизу та же раскладка повторяется для активного источника. Выбор варианта требует лишнего действия — раскрыть предпросмотр, затем нажать отдельную кнопку «выбрать». По сути это один шаг — «выбрать источник и увидеть его параметры и раскладку», — растянутый на три блока и два клика.

What Changes

  • Три секции ревью (Догадка, Источник совпадения, Раскладка) объединяются в единый блок выбора источника из трёх частей:
    1. список вариантов-«провайдеров» (нейронка + записи метабаз) с радиокнопками;
    2. инфо о выбранном варианте (название, ориг. название, год, тип фильм/сериал, для сериала — сезон);
    3. предпросмотр раскладки выбранного варианта.
  • Клик/тап по варианту сразу выбирает и сохраняет его (как сейчас кнопка «выбрать»): отдельной кнопки «выбрать» больше нет. Инфо и предпросмотр обновляются немедленно через htmx-swap блока, без полной перезагрузки страницы.
  • BREAKING (UI): переключатель типа фильм/сериал убирается из экрана ревью — тип показывается read-only в инфо-части выбранного варианта. Корректировка типа при необходимости остаётся доступной через «Уточнить» (мягкая подсказка).
  • Форма ручного добавления источника (TMDB/TVDB/IMDb по id или URL) сохраняется — под списком вариантов; добавленный источник появляется как выбираемая строка.
  • Инвариант «предпросмотр == применённое» сохраняется: показанная раскладка выбранного источника идентична тому, что создаст «Применить».

Capabilities

New Capabilities

Нет.

Modified Capabilities

  • review: смена активного источника — одним кликом по строке варианта (а не отдельной кнопкой), с немедленным обновлением инфо и предпросмотра; предпросмотр полей и раскладки показывается для выбранного (активного) источника; команда «Тип» убирается с экрана (тип read-only).
  • web-ui: экран ревью рендерит единый блок выбора источника; предпросмотр раскладки строится для выбранного источника и обновляется частичным htmx-свопом блока при смене выбора.

Impact

  • internal/httpapi/review.go — view-модели (reviewView, sourceView), handleReview; хендлер выбора источника возвращает партиал блока (htmx), а не только redirect; удаление/отключение UI-ветки handleSetType.
  • web/templates/review.html + новый партиал блока источника (для htmx-свопа).
  • web/static/css/jellybit.css — стили объединённого блока.
  • Доменный слой internal/worker/review.go не меняется (тот же выбор источника и построение предпросмотра); меняется только транспорт/шаблон.