Беклог: груминг трёх задач из 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` уже есть
|
- [Кнопка «Обновить имя»: полный формат ярлыка (Название (режиссёр, год), сезон)](knopka-obnovit-imya-polnyj-format.md) — Перелив имени даёт усечённое «Title (Year)» вместо полного формата add-шага (режиссёр+сезон); нужный `render` уже есть
|
||||||
- [Скрывать отменённые (cancelled) в общем списке наравне с удалёнными](skryvat-otmenennye-v-spiske.md) — cancelled шумит в ленте; тумблер «показать удалённые» должен раскрывать и cancelled, и deleted
|
- [Скрывать отменённые (cancelled) в общем списке наравне с удалёнными](skryvat-otmenennye-v-spiske.md) — cancelled шумит в ленте; тумблер «показать удалённые» должен раскрывать и cancelled, и deleted
|
||||||
- [Панель действий ревью вне htmx-свопа блока источника](panel-review-vne-swap.md) — При выборе источника одним кликом обновляется только блок источника (#source-block)…
|
- [Панель действий ревью вне 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