Files

4.4 KiB
Raw Permalink Blame History

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 в sendMessage payload (TC-01).
  • AC-2 — то же в editMessageText payload (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/ -q1058 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/except never-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 заведён.

Документация соответствует коду; расхождений нет.