Files
orchestrator/docs/work-items/ORCH-080/01-brd.md

74 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 01-BRD — ORCH-080: убрать Telegram link-preview (логотип Plane) в уведомлениях трекера
Work Item ID: ORCH-080
Эпик: ORCH-052 (под-задача ORCH-52g)
Тип: Доработка (UX уведомлений)
Приоритет: LOW (косметика)
Зона: `src/notifications.py`
## 1. Контекст и проблема
Каждая задача в Telegram сопровождается одной live-карточкой трекера (`src/notifications.py`,
ORCH-042/066/067). С ORCH-067 в карточке появился **кликабельный номер задачи**
`<a href="https://plane.mva154.duckdns.org/.../issues/<id>/">ORCH-NNN</a>`.
Telegram по умолчанию разворачивает **link-preview** (web page preview) для первой ссылки
в сообщении. Из-за ссылки на Plane под каждым сообщением трекера раскрывается крупный
баннер-превью **«Plane — Modern project management»**.
**Жалоба (Слава, 08.06):** баннер уродует ленту чата и дублируется на каждой задаче/каждом
обновлении карточки (особенно заметно в дефолтном режиме `bump`, где карточка пересоздаётся
на каждом переходе).
## 2. Диагностика (код-аудит `src/notifications.py`)
| Функция | Эндпоинт | Текущий JSON-payload | Превью |
|---------|----------|----------------------|--------|
| `send_telegram()` (стр. 52-62) | `POST /sendMessage` | `chat_id`, `text`, `parse_mode: HTML`, `disable_notification` | **разворачивается** (нет `disable_web_page_preview`) |
| `edit_telegram()` (стр. 165-174) | `POST /editMessageText` | `chat_id`, `message_id`, `text`, `parse_mode: HTML` | **разворачивается** (нет `disable_web_page_preview`) |
Причина баннера: оба payload **не содержат** ключ `disable_web_page_preview`. Telegram Bot API
по умолчанию (отсутствие ключа) включает превью.
`delete_telegram()` (`/deleteMessage`) превью не порождает — правки не требует.
## 3. Бизнес-цель
Карточка трекера и уведомления в Telegram **не должны** показывать баннер link-preview Plane,
при этом ссылка на задачу **остаётся кликабельной**.
## 4. Бизнес-требования
- **BR-1.** В payload `sendMessage` (`send_telegram`) присутствует `disable_web_page_preview: True`.
- **BR-2.** В payload `editMessageText` (`edit_telegram`) присутствует `disable_web_page_preview: True`.
- **BR-3.** Баннер-превью Plane больше не появляется ни под карточкой трекера (оба режима
`bump`/`edit`), ни под отдельными notify-сообщениями, которые идут через `send_telegram`
(`notify_approve_requested`, `notify_error`, alert'ы стадий) — все они используют тот же
низкоуровневый примитив.
- **BR-4.** Кликабельная ссылка `<a href>` на задачу в Plane сохраняется (`parse_mode: HTML`
не меняется).
- **BR-5.** Контракт **never-raise** сохранён: отправка/редактирование никогда не валит
оркестратор; `pytest` зелёный.
## 5. Не-цели (вне скоупа)
- Не менять текст/формат/верстку карточки.
- Не трогать `parse_mode` (HTML нужен для `<a href>`).
- Не трогать bump/edit-логику (`update_task_tracker`), репойнт `tracker_message_id`,
delete-семантику.
- Не вводить флаги/конфиг — поведение «без превью» безусловное (превью никому не нужно).
- Не трогать схему БД.
## 6. Заинтересованные лица
- **Слава (Owner)** — инициатор, конечный наблюдатель ленты Telegram.
## 7. Грабли / координация
- Файл `src/notifications.py` затрагивает также ORCH-067 (и потенциально другие задачи эпика).
Сверить, что правки (две строки) не конфликтуют при merge.
- Один репозиторий с ORCH-74 → по ORCH-026 действует сериализация merge.
Запускать **после** того как ORCH-74 доедет в `main` (или когда конвейер свободен),
чтобы не плодить параллельный merge в `orchestrator`.
- Деплой — штатный через **Confirm Deploy** (self-hosting, ORCH-059).