4.4 KiB
type, work_item_id, verdict, version
| type | work_item_id | verdict | version |
|---|---|---|---|
| review | ORCH-080 | APPROVED | 1 |
Review ORCH-080
Summary
Задача убирает баннер Telegram link-preview («Plane — Modern project management»),
который разворачивался под кликабельной ссылкой ORCH-NNN в карточке трекера и
во всех notify/alert-сообщениях. Решение точно соответствует TRZ и ADR-001:
добавлен ключ "disable_web_page_preview": True в JSON-payload обоих
низкоуровневых примитивов send_telegram (POST /sendMessage) и edit_telegram
(POST /editMessageText) — единая точка для всех потребителей, без kill-switch,
без изменения контрактов. Изменение минимально (2 строки + комментарии),
аддитивно и обратимо.
Проверены все четыре оси (ТЗ, ADR, качество кода, тесты) + документация. Findings уровней P0/P1/P2 — нет.
Findings
P0 — Blocker
- нет
P1 — Must fix
- нет
P2 — Should fix
- нет
Соответствие ТЗ и AC
- TRZ §2.1/§2.2 — ключ добавлен в оба payload в точности как предписано. ✅
- AC-1 —
disable_web_page_preview: TrueвsendMessagepayload (TC-01). ✅ - AC-2 — то же в
editMessageTextpayload (TC-02). ✅ - AC-3 — баннер исчезает (ручная верификация на staging; косвенно покрыто AC-1/AC-2). ✅
- AC-4 —
parse_mode: "HTML"сохранён в обоих payload, ссылка кликабельна (TC-03);tests/test_notify_issue_links.pyзелёный. ✅ - AC-5 — поля
chat_id/text/parse_mode/disable_notification(send) иchat_id/message_id/text/parse_mode(edit) сохранены; контракты возврата (message_id|None,EDIT_*) не изменились (TC-04/TC-05). ✅ - AC-6 — never-raise сохранён (TC-06); полный прогон
pytest tests/ -q— 1058 passed. ✅ - AC-7 — документация обновлена в том же PR (см. ниже). ✅
Соответствие ADR
ADR-001 (Accepted): правка на уровне примитива (а не каждого вызова), безусловно
без флага, top-level disable_web_page_preview вместо link_preview_options,
parse_mode: HTML сохранён, контракты и инвариант «одна карточка на задачу» не
тронуты. Реализация соответствует решению 1:1. Глобальные ADR не нарушены
(STAGE_TRANSITIONS, QG_CHECKS, схема БД — без изменений). ✅
Качество кода
- Изменение минимальное, целевое; комментарии ссылаются на ORCH-080 и поясняют цель.
try/exceptnever-raise в обеих функциях не затронут; пути без кредов и контракты возврата сохранены.- Тесты содержательные: инспектируют реальный payload через мок
httpx(call_args.kwargs["json"]), покрывают флаг, регрессиюparse_mode/полей, контракты возврата и never-raise (TC-01..06). Нет тривиальных/пустых тестов. - Security: ключ булев, новых поверхностей/секретов нет.
Документация
Изменён src/ (поведение исходящих Telegram-запросов) → документация обновлена в
том же PR, как требует CLAUDE.md §2/§6:
CHANGELOG.md— запись в## [Unreleased](типfix:). ✅CLAUDE.md— раздел «Нотификации / Telegram live-tracker» дополнен пунктом «Без link-preview (ORCH-080)». ✅docs/architecture/README.md— компонент Notifications дополнен ремаркой ORCH-080. ✅- ADR
docs/work-items/ORCH-080/06-adr/ADR-001-disable-telegram-link-preview.mdзаведён. ✅
Документация соответствует коду; расхождений нет.