Беклог: груминг трёх задач из Tududi (значок типа, download id code, ревью уведомлений)
Перенос сырых задач проекта jellybit из Tududi в беклог с контекстом и кросс-ссылками: - значок типа (фильм/сериал) в списке загрузок; - download id моноширинным (code) в Telegram — упирается в parse mode + escape; - зонтичный аудит уведомлений бота. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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)…
|
||||
|
||||
@@ -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).
|
||||
@@ -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**
|
||||
(`<code>%s</code>`) — экранирование проще и локальнее, чем у MarkdownV2.
|
||||
- Включение parse mode затрагивает **все** исходящие сообщения: спецсимволы в
|
||||
display name, путях, названиях сломают разметку, если их не экранировать.
|
||||
Escape-хелпера сейчас нет — нужен, плюс аккуратный проход по всем текстам
|
||||
`render.go`. Это часть общего [[telegram-revyu-uvedomleniy]] — имеет смысл делать
|
||||
вместе.
|
||||
|
||||
Связано: `internal/tgbot` (`render.go`, `bot.go`).
|
||||
@@ -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).
|
||||
Reference in New Issue
Block a user