Files
avandClaude Opus 4.8 9ed732e49e Веб-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>
2026-07-04 09:47:27 +03:00

39 lines
3.0 KiB
Markdown

## Context
Изменение презентационное и уже реализовано в коде (шаблоны, поиск, view-структуры).
Дизайн-документ здесь короткий и нужен лишь как зависимость для `tasks` и чтобы
зафиксировать одно продуктовое решение. Полноценного двухчекпоинтного ревью
задача не требует (тривиальная — достаточно прохода по коду).
## Goals / Non-Goals
**Goals:**
- Показывать и копировать в карточках `download.id` — тот же ключ, что в логах
(`download_id`), чтобы «скопировал → нашёл в логах» работало без перекодировки.
- Поиск по списку — по любому идентификатору загрузки (`download.id` ИЛИ infohash).
**Non-Goals:**
- Не убираем infohash из UI совсем: он остаётся в блоке «Информация о торренте».
- Не меняем модель данных, API-DTO и формат логов.
## Decisions
- **Идентификатор карточки — `download.id`, не infohash.** В логах основной ключ
связывания — `download_id` (см. `internal/worker/*`), поэтому именно его нужно
копировать и грепать. Infohash второстепенен и уместен только в детальном блоке
о торренте. Альтернатива (оставить infohash в шапке) отвергнута: заставляет
пользователя вручную сопоставлять хэш с id при чтении логов.
- **Поиск матчит любой идентификатор.** В LIKE-условие `internal/store/list.go`
добавлен `download.id` рядом с уже имевшимся infohash; название/контекст
сохранены. Так скопированный из карточки id находится обратным поиском.
- **Чистка мёртвого кода.** Поля `Infohash`/`InfohashShort` во view-структурах и
хелпер `shortenHash` стали не нужны — удалены, чтобы не копить неиспользуемое.
## Risks / Trade-offs
- [ULID менее узнаваем на глаз, чем hex-infohash] → показываем полностью (26
символов помещаются в строку), рядом кнопка копирования; в детальном блоке
infohash остаётся для тех, кому он нужен.
- [Проза `## Purpose` в live-спеке упоминает «копирование infohash»] → правится
прямой правкой live-спеки при archive (Purpose не покрывается дельта-операциями).