# 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) добавить строку:

```python
"disable_web_page_preview": True,
```

Итоговый payload:
```python
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) добавить строку:

```python
"disable_web_page_preview": True,
```

Итоговый payload:
```python
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_telegram` → `message_id|None`,
  `edit_telegram` → `EDIT_*`.
- `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)`.
