Веб-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:
@@ -0,0 +1,38 @@
|
||||
## 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 не покрывается дельта-операциями).
|
||||
Reference in New Issue
Block a user