# 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 в карточке появился **кликабельный номер задачи** — `ORCH-NNN`. 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.** Кликабельная ссылка `` на задачу в Plane сохраняется (`parse_mode: HTML` не меняется). - **BR-5.** Контракт **never-raise** сохранён: отправка/редактирование никогда не валит оркестратор; `pytest` зелёный. ## 5. Не-цели (вне скоупа) - Не менять текст/формат/верстку карточки. - Не трогать `parse_mode` (HTML нужен для ``). - Не трогать 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).