74 lines
5.0 KiB
Markdown
74 lines
5.0 KiB
Markdown
# 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).
|