Веб-UI: основной идентификатор карточек — download.id вместо infohash

В карточке списка и шапке /download/{id} показываем и копируем download.id
(ULID) — тот же ключ, что в логах (download_id), удобно грепать. Infohash
остаётся в блоке «Информация о торренте». Поиск по списку расширен: матчит
любой идентификатор (download.id ИЛИ infohash), плюс название/контекст.
Удалены осиротевшие поля Infohash/InfohashShort и хелпер shortenHash.

Дельта web-ui влита в спеки, change заархивирован.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-04 09:47:27 +03:00
co-authored by Claude Opus 4.8
parent 80e725eb9a
commit 9ed732e49e
12 changed files with 220 additions and 64 deletions
@@ -0,0 +1,37 @@
## Why
Веб-UI показывал в карточках (список + шапка страницы просмотра) infohash с
кнопкой копирования. Но в логах основной ключ загрузки — `download_id` (ULID),
именно по нему удобно грепать и связывать события; infohash в логах второстепенен.
Пользователю нужно копировать из карточки то, что реально ищется в логах.
## What Changes
- В карточке списка и в шапке `/download/{id}` показываем и копируем
`download.id` (ULID) вместо infohash — как основной идентификатор загрузки.
- Infohash остаётся видимым только в блоке «Информация о торренте» (без
изменений), где ему место рядом с сырым источником.
- Поиск по списку расширяем: искать можно по **любому идентификатору**
(`download.id` ИЛИ infohash), плюс прежние название/контекст. Плейсхолдер
строки поиска обновлён.
## Capabilities
### New Capabilities
<!-- нет -->
### Modified Capabilities
- `web-ui`: основной копируемый идентификатор карточек — `download.id`, а не
infohash (Requirement «Клиентские взаимодействия без сборки» и Scenario
копирования); поиск по списку матчит любой идентификатор загрузки (Scenario
«Серверный фильтр и поиск»).
## Impact
- Шаблоны: `web/templates/index.html`, `web/templates/download.html`.
- Поиск: `internal/store/list.go` (в LIKE-условие добавлен `download.id`).
- View: `internal/httpapi/httpapi.go`, `internal/httpapi/download.go` (удалены
осиротевшие поля `Infohash`/`InfohashShort` и хелпер `shortenHash`).
- Клиент: `web/static/js/app.js` (комментарий — функция копирования теперь про
идентификатор загрузки, не только infohash).
- Совместимость: чисто презентационно; API-DTO и модель данных не меняются.