Убрал из беклога реализованные UI/UX-задачи (docs)

Сделаны в change web-ui-list-detail и убраны из беклога:
- «Главная: список загрузок вместо таблицы»
- «Расширенная информация о загрузке в web-UI»
- «Список загрузок: фильтр, поиск, пагинация»
- «Полировка веб-UI: список и карточка загрузки»

«Улучшения UI: показывать матч» сужено до Telegram (web-сторона сделана).
Поправлены перекрёстные ссылки в оставшихся пунктах, чтобы не висли на
удалённые якоря.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-01 09:58:01 +03:00
co-authored by Claude Opus 4.8
parent c0b5ab7295
commit b420aa4c9d
+11 -68
View File
@@ -62,9 +62,9 @@ qBittorrent с файлами), подтверждение осознаннос
- при выборе/переключении — **предпросмотр полей** (название, режиссёр, - при выборе/переключении — **предпросмотр полей** (название, режиссёр,
год) и **предпросмотр раскладки** (целевые пути) до применения. год) и **предпросмотр раскладки** (целевые пути) до применения.
Развивает «показывать матч с записью метабазы» (web-сторона), пересекается Развивает уже реализованный показ матча в вебе (страница загрузки и экран
с «Расширенной информацией о загрузке» (детальный экран) и быстрым выбором ревью — провайдер, id, ссылка на запись) и детальный экран `/download/{id}`;
в Telegram. Веб остаётся точкой точных правок. пересекается с быстрым выбором в Telegram. Веб остаётся точкой точных правок.
Связано: [review-ux.md](specs/review-ux.md) (выбор кандидата, «без базы», Связано: [review-ux.md](specs/review-ux.md) (выбор кандидата, «без базы»,
переключатель типа), [recognition.md](specs/recognition.md) (кандидаты переключатель типа), [recognition.md](specs/recognition.md) (кандидаты
@@ -192,39 +192,12 @@ qBittorrent, пул LLM-вызовов и запись в SQLite спроект
карточке/расширенной информации и фундамент для метрик длительности стадий. карточке/расширенной информации и фундамент для метрик длительности стадий.
Естественно ложится на собственный идентификатор загрузки. Естественно ложится на собственный идентификатор загрузки.
Связано: [«Расширенная информация о загрузке»](#расширенная-информация-о-загрузке-в-web-ui) Связано: детальный экран загрузки (`/download/{id}`) уже реализован — лог
(лог переходов), [workflow.md](specs/workflow.md) (граф состояний), переходов ложится в него; [workflow.md](specs/workflow.md) (граф состояний),
[«Наблюдаемость: метрики»](#наблюдаемость-метрики-и-учёт-стоимости-llm) [«Наблюдаемость: метрики»](#наблюдаемость-метрики-и-учёт-стоимости-llm)
(длительности стадий), [database.md](specs/database.md), пакеты `worker`, (длительности стадий), [database.md](specs/database.md), пакеты `worker`,
`store`. `store`.
### Главная: список загрузок вместо таблицы
Переделать главную страницу из таблицы в **список** карточек. Для каждой
загрузки: название (как распознали при добавлении в qBittorrent), `infohash`
с кнопкой быстрого копирования, статус и кнопки действий. Контекст (исходное
сообщение/magnet) спрятать под спойлер или вынести на отдельный детальный
экран (см. «Расширенная информация о загрузке»). Естественно сочетается с
фильтром/поиском/пагинацией по мере роста БД.
Связано: [«Расширенная информация о загрузке в web-UI»](#расширенная-информация-о-загрузке-в-web-ui),
[«Список загрузок: фильтр, поиск, пагинация»](#список-загрузок-фильтр-поиск-пагинация),
[review-ux.md](specs/review-ux.md), пакет `httpapi`.
### Расширенная информация о загрузке в web-UI
Отдельная страница просмотра одной загрузки — целиком отображение того, что
лежит в БД по задаче: актуальный статус (текущее состояние + лог переходов),
исходный контекст и magnet, распознанные данные и матч в метабазе (см.
«показывать матч»), а также **точная раскладка, если есть** — целевые пути и
созданные хардлинки. Помогает разбираться, когда что-то пошло не так, без
чтения логов сервера. Сюда же выносится контекст с карточки в списке
загрузок.
Связано: [«Главная: список загрузок»](#главная-список-загрузок-вместо-таблицы),
[review-ux.md](specs/review-ux.md), [architecture.md](specs/architecture.md)
→ «Хранилище» (`download`/`recognition`/`file_link`), пакет `httpapi`.
### Машина состояний на go-библиотеке ### Машина состояний на go-библиотеке
Сейчас FSM реализована вручную в `worker`. Выбрать подходящую go-библиотеку Сейчас FSM реализована вручную в `worker`. Выбрать подходящую go-библиотеку
@@ -268,11 +241,12 @@ qBittorrent, пул LLM-вызовов и запись в SQLite спроект
### Улучшения UI: показывать матч с записью метабазы ### Улучшения UI: показывать матч с записью метабазы
Во всех транспортах (веб, Telegram) показывать, **с какой именно записью** Web-сторона реализована: страница загрузки `/download/{id}` и экран ревью
метабазы (TMDB/TVDB) сматчилась загрузка: название, год, провайдер-id, показывают, **с какой именно записью** метабазы (TMDB/TVDB/IMDb) сматчилась
ссылку. Сейчас результат распознавания непрозрачен — пользователь не видит, загрузка — провайдер, id и ссылку на запись. Осталось довести то же в
к чему привязались, и не может быстро поймать ошибочный матч. На web-стороне **Telegram**: в уведомлениях/подтверждениях показывать запись матча (название,
развивается в полноценный выбор источника — см. [«Ревью: выбор источника год, провайдер-id, ссылку), чтобы ошибочную привязку было видно и из бота.
Полный выбор источника в вебе — см. [«Ревью: выбор источника
совпадения»](#ревью-выбор-источника-совпадения-и-предпросмотр). совпадения»](#ревью-выбор-источника-совпадения-и-предпросмотр).
Связано: [review-ux.md](specs/review-ux.md), [recognition.md](specs/recognition.md) Связано: [review-ux.md](specs/review-ux.md), [recognition.md](specs/recognition.md)
@@ -347,22 +321,6 @@ qBittorrent, без исходящих запросов на пользоват
[«Многоступенчатая верификация»](#многоступенчатая-верификация-привязки-идея), [«Многоступенчатая верификация»](#многоступенчатая-верификация-привязки-идея),
[architecture.md](specs/architecture.md) → «Хранилище» (`hint`, `override`). [architecture.md](specs/architecture.md) → «Хранилище» (`hint`, `override`).
### Список загрузок: фильтр, поиск, пагинация
Прямое следствие роста БД (см. «Ретеншн»): плоский список загрузок со
временем становится непригоден. Нужны фильтр по состоянию, поиск по
названию и пагинация. Естественно ложится на список-карточки главной и на
экран расширенной информации.
Частный случай как разумный дефолт: на главной **по умолчанию скрывать
загрузки в статусе `deleted`** (терминальные, удалённые из источника и
цели — шум в ленте), с переключателем/фильтром «показать всё». Маленькая
часть, может приехать раньше полноценного фильтра.
Связано: [«Главная: список загрузок»](#главная-список-загрузок-вместо-таблицы),
[«Расширенная информация о загрузке в web-UI»](#расширенная-информация-о-загрузке-в-web-ui),
пакет `httpapi`.
## Низкий ## Низкий
### Мгновенные обновления через SSE ### Мгновенные обновления через SSE
@@ -378,21 +336,6 @@ qBittorrent, без исходящих запросов на пользоват
Связано: [architecture.md](specs/architecture.md) → «Транспорты», Связано: [architecture.md](specs/architecture.md) → «Транспорты»,
[review-ux.md](specs/review-ux.md), пакет `httpapi`. [review-ux.md](specs/review-ux.md), пакет `httpapi`.
### Полировка веб-UI: список и карточка загрузки
Мелкие правки вёрстки и согласованности (низкая цена, заметный эффект):
- в списке на главной показывать имя загрузки **ровно то**, что отдаём в
qBittorrent как имя раздачи, — чтобы список и клиент были синхронны
(уточняет [«Главная: список загрузок»](#главная-список-загрузок-вместо-таблицы));
- в карточке блок «Распознано как» растянуть на всю ширину блока (сейчас
обрывается на середине);
- в блоке «Файлы и раскладка» приклеить стрелку к первой строке
(файл-источник), чтобы источник и цель выводились строго один под другим.
Связано: [«Главная: список загрузок»](#главная-список-загрузок-вместо-таблицы),
[review-ux.md](specs/review-ux.md), пакет `httpapi`.
### Многоступенчатая верификация привязки _(идея)_ ### Многоступенчатая верификация привязки _(идея)_
Несколько раз извлекать данные из раздачи и контекста разными промптами, Несколько раз извлекать данные из раздачи и контекста разными промптами,