В карточке списка и шапке /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>
39 lines
3.0 KiB
Markdown
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 не покрывается дельта-операциями).
|