Files
jellybit/openspec/changes/archive/2026-06-30-live-status/specs/web-ui/spec.md
T
avandClaude Opus 4.8 ef75a0d302 Живые обновления прогресса и раздел «Раздача» (live-status)
Воркер ведёт in-memory снимок телеметрии раздач (прогресс, скорость, ETA,
рейтинг, сиды/пиры, отдано) под отдельным RWMutex, обновляя его на каждом
тике поллинга сразу после построения byHash — без лишних вызовов qBittorrent
и без хранения в БД (волатильно). qbt.Torrent дополнен полями телеметрии.

Веб-UI читает снимок через узкий контракт LiveStatus: карточки активных
загрузок показывают живой прогресс-бар (htmx-поллинг фрагмента every 3s,
точечно — без сброса фильтров), на странице загрузки появилась секция
«Раздача» для сидирующих задач. Начальный кадр рендерится сразу со
значениями; при отсутствии данных UI деградирует штатно.

Капабилити live-status (OpenSpec), web-ui дополнен. Change заархивирован.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 20:38:25 +03:00

2.0 KiB

MODIFIED Requirements

Requirement: Страницы веб-UI

Веб-UI SHALL предоставлять страницы: список загрузок с единым окном добавления и фильтром/поиском (/), экран ревью одной загрузки (/review/{id}) и страницу просмотра одной загрузки (/download/{id}) с распознаванием, файлами→раскладкой, историей и — для сидирующих задач — секцией живой статистики раздачи. Карточки активных (downloading) загрузок в списке SHALL содержать индикатор прогресса. Состояние deleted SHALL быть скрыто в списке по умолчанию (с переключателем «показать всё»). Механика живого обновления прогресса и наполнение секции раздачи определяются capability live-status.

Scenario: Просмотр одной загрузки

  • WHEN клиент открывает GET /download/{id} существующей загрузки
  • THEN отрисовывается страница с её распознаванием, файлами, раскладкой и историей

Scenario: Прогресс активной загрузки в списке

  • WHEN в списке есть загрузка в состоянии downloading
  • THEN её карточка содержит индикатор прогресса (прогресс-бар со скоростью и ETA)

Scenario: Удалённые скрыты по умолчанию

  • WHEN в списке есть загрузки в состоянии deleted и фильтр «показать всё» не включён
  • THEN они не отображаются, но доступны при включённом переключателе