Files

4.9 KiB
Raw Permalink Blame History

02-TRZ — ORCH-080: убрать Telegram link-preview в уведомлениях трекера

Work Item ID: ORCH-080 Зона изменений: src/notifications.py (две строки)

1. Задействованные модули src/

  • src/notifications.pyединственный изменяемый модуль:
    • send_telegram(text, disable_notification=False) — обёртка POST .../sendMessage.
    • edit_telegram(message_id, text) — обёртка POST .../editMessageText.

Косвенно затронуты (поведение улучшается без изменения их кода — они вызывают изменённые примитивы): update_task_tracker (bump+edit), notify_approve_requested, notify_error, а также вызовы send_telegram из launcher/stage_engine (alert'ы деплоя/падений).

2. Изменения кода

2.1. send_telegram() — добавить ключ в JSON-payload httpx.post

В словаре json={...} вызова sendMessage (текущие стр. 55-60) добавить строку:

"disable_web_page_preview": True,

Итоговый payload:

json={
    "chat_id": s.telegram_chat_id,
    "text": text,
    "parse_mode": "HTML",
    "disable_notification": disable_notification,
    "disable_web_page_preview": True,
},

2.2. edit_telegram() — добавить ключ в JSON-payload httpx.post

В словаре json={...} вызова editMessageText (текущие стр. 168-173) добавить строку:

"disable_web_page_preview": True,

Итоговый payload:

json={
    "chat_id": s.telegram_chat_id,
    "message_id": message_id,
    "text": text,
    "parse_mode": "HTML",
    "disable_web_page_preview": True,
},

Примечание: Telegram Bot API исторически принимает top-level disable_web_page_preview для sendMessage/editMessageText (актуальная схема также поддерживает link_preview_options.is_disabled, но top-level флаг остаётся валиден и совместим). Используем top-level флаг — минимальная, обратносовместимая правка, как указано в задаче.

3. Изменения API

Нет изменений внутреннего HTTP API оркестратора. Меняется только тело исходящих запросов к Telegram Bot API (добавлен один булев ключ в payload двух методов).

4. Изменения схемы БД

Нет.

5. Требования к новым QG checks

Нет. Новые Quality Gate проверки не вводятся.

6. Конфиг / флаги

Нет. Поведение «без превью» — безусловное (kill-switch не требуется: превью трекера не нужно никому, риск регрессии нулевой; правка обратимая одной строкой). parse_mode, disable_notification, bump/edit-логика — без изменений.

7. Артефакты, обновляемые по pipeline

  • CHANGELOG.md — запись в ## [Unreleased] (тип fix: — косметика UX уведомлений).
  • Документация: правка src/notifications.py затрагивает поведение, описанное в CLAUDE.md (раздел «Нотификации / Telegram live-tracker») и docs/architecture/README.md (компонент Notifications). Достаточно короткой ремарки, что карточка/уведомления шлются без web-page-preview (по желанию архитектора — определить объём в ADR; ADR не обязателен для столь малой косметики, решение за архитектором).

8. Контракты-инварианты (не нарушать)

  • never-raise: обе функции по-прежнему ловят все исключения (try/except: pass/return) и не валят оркестратор.
  • Возвращаемые значения не меняются: send_telegrammessage_id|None, edit_telegramEDIT_*.
  • parse_mode: "HTML" сохранён в обоих payload (иначе <a href> сломается).
  • disable_notification в send_telegram сохранён (карточка тихая).
  • Инвариант «одна карточка на задачу» (bump/edit) не затрагивается.

9. Commit / ветка

  • Ветка: feature/ORCH-080-orch-52g-telegram-link-preview (существует).
  • Commit: fix: disable Telegram link-preview in tracker notifications (ORCH-080).