60 lines
4.0 KiB
Markdown
60 lines
4.0 KiB
Markdown
# 03-Acceptance Criteria — ORCH-080
|
||
|
||
Work Item ID: ORCH-080
|
||
|
||
Каждый критерий имеет явное условие PASS/FAIL.
|
||
|
||
## AC-1 — `disable_web_page_preview` в payload `sendMessage`
|
||
|
||
- **PASS:** JSON-payload вызова `httpx.post(.../sendMessage)` в `send_telegram()` содержит
|
||
ключ `"disable_web_page_preview"` со значением `True`.
|
||
- **FAIL:** ключ отсутствует или `False`.
|
||
- **Проверка:** unit-тест (мок `httpx`) инспектирует `httpx.post.call_args.kwargs["json"]`.
|
||
|
||
## AC-2 — `disable_web_page_preview` в payload `editMessageText`
|
||
|
||
- **PASS:** JSON-payload вызова `httpx.post(.../editMessageText)` в `edit_telegram()` содержит
|
||
ключ `"disable_web_page_preview"` со значением `True`.
|
||
- **FAIL:** ключ отсутствует или `False`.
|
||
- **Проверка:** unit-тест (мок `httpx`) инспектирует `httpx.post.call_args.kwargs["json"]`.
|
||
|
||
## AC-3 — баннер link-preview Plane исчез в карточке трекера
|
||
|
||
- **PASS:** в реальном чате Telegram карточка трекера задачи (режимы `bump` и `edit`)
|
||
больше не показывает баннер «Plane — Modern project management».
|
||
- **FAIL:** баннер всё ещё разворачивается.
|
||
- **Проверка:** ручная верификация на staging (8501) после деплоя — наблюдение карточки в
|
||
Telegram. Автоматически косвенно покрыто AC-1/AC-2 (payload содержит флаг).
|
||
|
||
## AC-4 — ссылка на задачу остаётся кликабельной
|
||
|
||
- **PASS:** в карточке/уведомлениях номер задачи `ORCH-NNN` остаётся кликабельной ссылкой
|
||
`<a href=...>` на issue в Plane; `parse_mode: "HTML"` сохранён в обоих payload.
|
||
- **FAIL:** `parse_mode` изменён/удалён, либо ссылка перестала рендериться как `<a href>`.
|
||
- **Проверка:** unit-тест проверяет, что `"parse_mode": "HTML"` присутствует в обоих payload;
|
||
существующие тесты ссылок (`test_notify_issue_links.py`) остаются зелёными.
|
||
|
||
## AC-5 — сохранены существующие поля payload
|
||
|
||
- **PASS:** `send_telegram` payload по-прежнему содержит `chat_id`, `text`, `parse_mode`,
|
||
`disable_notification`; `edit_telegram` payload — `chat_id`, `message_id`, `text`,
|
||
`parse_mode`. Возвращаемые значения функций не изменились
|
||
(`send_telegram → message_id|None`, `edit_telegram → EDIT_*`).
|
||
- **FAIL:** любое из перечисленных полей удалено/переименовано, либо изменился контракт
|
||
возврата.
|
||
- **Проверка:** unit-тесты payload + существующие тесты трекера/классификации исходов.
|
||
|
||
## AC-6 — never-raise сохранён, pytest зелёный
|
||
|
||
- **PASS:** при сетевой/HTTP-ошибке `send_telegram`/`edit_telegram` не бросают исключение
|
||
(возврат `None`/`EDIT_FAILED`); вся сюита `pytest tests/ -q` зелёная.
|
||
- **FAIL:** любое исключение наружу или красный pytest.
|
||
- **Проверка:** существующие тесты never-raise (`test_resilience.py`,
|
||
`test_telegram_tracker.py`) + полный прогон.
|
||
|
||
## AC-7 — документация обновлена в том же PR
|
||
|
||
- **PASS:** `CHANGELOG.md` содержит запись об ORCH-080; при необходимости — короткая ремарка
|
||
в `CLAUDE.md`/`docs/architecture/README.md` о подавлении link-preview.
|
||
- **FAIL:** функционал изменён, документация не обновлена (Reviewer → REQUEST_CHANGES).
|