diff --git a/docs/backlog/README.md b/docs/backlog/README.md index 456d206..5afc6a4 100644 --- a/docs/backlog/README.md +++ b/docs/backlog/README.md @@ -40,6 +40,9 @@ Tududi (проект `jellybit`) больше **не** держит беклог ## Низкий +- [Значок типа (фильм/сериал) в списке загрузок](spisok-znachok-tipa.md) — показать 🎬/📺 в строке списка; media type сейчас не доходит до листинга (нужно протащить в запрос и card.html) +- [Ревью уведомлений в Telegram (аудит текстов и формата)](telegram-revyu-uvedomleniy.md) — зонтичный проход по всем текстам бота: полнота карточек, единый язык, оформление; порождает под-задачи +- [Download id в Telegram моноширинным (code) для tap-to-copy](telegram-download-id-code.md) — слать id как `code`; требует включить parse mode (HTML) в send() + escape всех текстов - [Кнопка «Обновить имя»: полный формат ярлыка (Название (режиссёр, год), сезон)](knopka-obnovit-imya-polnyj-format.md) — Перелив имени даёт усечённое «Title (Year)» вместо полного формата add-шага (режиссёр+сезон); нужный `render` уже есть - [Скрывать отменённые (cancelled) в общем списке наравне с удалёнными](skryvat-otmenennye-v-spiske.md) — cancelled шумит в ленте; тумблер «показать удалённые» должен раскрывать и cancelled, и deleted - [Панель действий ревью вне htmx-свопа блока источника](panel-review-vne-swap.md) — При выборе источника одним кликом обновляется только блок источника (#source-block)… diff --git a/docs/backlog/spisok-znachok-tipa.md b/docs/backlog/spisok-znachok-tipa.md new file mode 100644 index 0000000..0b6978b --- /dev/null +++ b/docs/backlog/spisok-znachok-tipa.md @@ -0,0 +1,25 @@ +# Значок типа (фильм/сериал) в списке загрузок + +**Приоритет:** низкий + +В строке списка загрузок показывать значок типа контента — 🎬 фильм / 📺 сериал, +как уже делается на экране деталей/ревью и в карточке бота +(`internal/tgbot/render.go:231-233`). Сейчас партиал строки списка +`web/templates/partials/card.html` (define `"card"`) типа не показывает — только +заголовок, ID, дату/размер, статус-бейдж и прогресс. + +Что учесть: + +- Media type в модели строки списка отсутствует: `downloadView` + (`internal/httpapi/httpapi.go:200`) и `store.Download` + (`internal/store/download.go:175`) его не несут. В detail/review он берётся из + `rd.Plan.Type` (`internal/httpapi/download.go:139`). Каноничный тип — + `recognize.MediaType` (`movie`/`series`). +- Нужно протащить `MediaType`/`IsSeries` в листинг: расширить запрос + `ListDownloadsPage` (сейчас через LEFT JOIN тянет только `rec_title`) и сборку + `buildCardView`, затем добавить значок в `card.html`. +- Тип может быть ещё не распознан (загрузка на раннем шаге) — предусмотреть + отсутствие значка/нейтральный плейсхолдер. + +Связано: `internal/httpapi`, `web/templates/partials/card.html`, +[docs/specs/architecture.md](../specs/architecture.md). diff --git a/docs/backlog/telegram-download-id-code.md b/docs/backlog/telegram-download-id-code.md new file mode 100644 index 0000000..98377a6 --- /dev/null +++ b/docs/backlog/telegram-download-id-code.md @@ -0,0 +1,21 @@ +# Download id в Telegram моноширинным (code) для tap-to-copy + +**Приоритет:** низкий + +Сейчас download id выводится в уведомлениях бота обычным текстом с префиксом `#` +(`internal/tgbot/bot.go:288`, `render.go:26/50/151`). Хотим слать id как +`code`-текст (моноширинный) — в клиентах Telegram по нему работает tap-to-copy, +удобно скопировать id для перехода на `/download/{id}` или для диагностики. + +Что учесть: + +- `send()` (`internal/tgbot/bot.go:442`) сейчас не выставляет `ParseMode` — всё + уходит plain text. Для `code` нужно включить parse mode. Рекомендуется **HTML** + (`%s`) — экранирование проще и локальнее, чем у MarkdownV2. +- Включение parse mode затрагивает **все** исходящие сообщения: спецсимволы в + display name, путях, названиях сломают разметку, если их не экранировать. + Escape-хелпера сейчас нет — нужен, плюс аккуратный проход по всем текстам + `render.go`. Это часть общего [[telegram-revyu-uvedomleniy]] — имеет смысл делать + вместе. + +Связано: `internal/tgbot` (`render.go`, `bot.go`). diff --git a/docs/backlog/telegram-revyu-uvedomleniy.md b/docs/backlog/telegram-revyu-uvedomleniy.md new file mode 100644 index 0000000..706e866 --- /dev/null +++ b/docs/backlog/telegram-revyu-uvedomleniy.md @@ -0,0 +1,25 @@ +# Ревью уведомлений в Telegram (аудит текстов и формата) + +**Приоритет:** низкий + +Зонтичная задача: пройтись по всем исходящим уведомлениям и запросам подтверждения +бота, выправить формулировки, состав данных и оформление. Тексты формируются в +`internal/tgbot/render.go`, отправка — `internal/tgbot/bot.go`; parse mode не задан +(plain text), моноширинных/жирных акцентов нет. + +На что смотреть при аудите: + +- **Полнота карточек:** показываем ли нужное — название, тип (фильм/сериал), год, + запись матча в метабазе, download id, причину `failed`. +- **Единый язык:** в текстах бота вперемешку «задача»/«раздача»/«загрузка» — + свести к доменному `Download` (см. [[ubiquitous-language-slovar]]). +- **Оформление:** моноширинный download id [[telegram-download-id-code]], возможно + акценты — упирается в parse mode + escape (общая развилка с задачей про code). +- **Не дублировать** уже заведённое: матч метабазы в боте + [[telegram-match-metabazy]], мульти-бот адресация уведомлений + [[uvedomleniya-multi-bot]], выбор из нескольких находок [[telegram-vybor-nahodok]]. + +Итог аудита — конкретные под-задачи (эта их порождает). Проход дешёвый, при желании +приоритет можно поднять. + +Связано: `internal/tgbot`, [docs/specs/review-ux.md](../specs/review-ux.md).