Воркер ведёт 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>
31 lines
2.0 KiB
Markdown
31 lines
2.0 KiB
Markdown
## 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** они не отображаются, но доступны при включённом переключателе
|