6.7 KiB
6.7 KiB
03 — Критерии приёмки: ORCH-042
Каждый критерий — однозначное условие PASS/FAIL. Покрытие тестами — 04-test-plan.yaml.
Конфигурация
- AC-1.
Settings.tracker_modeсуществует, дефолт"edit", читается из envORCH_TRACKER_MODE.- PASS:
Settings().tracker_mode == "edit"без env;ORCH_TRACKER_MODE=bump→"bump". - FAIL: поле отсутствует / другой дефолт / не читает env.
- PASS:
- AC-2. Неизвестное/пустое значение режима трактуется как
edit(оркестратор не падает).- PASS:
ORCH_TRACKER_MODE=garbage(или пусто) →update_task_trackerидёт по edit-ветке, исключений нет. - FAIL: исключение / выбор bump-ветки на мусоре.
- PASS:
Режим edit (регрессия — поведение как было)
- AC-3. Первый вызов (нет
tracker_message_id):sendMessageтихо (disable_notification=True), id сохраняется;editMessageTextНЕ вызывается. - AC-4. Повторный вызов при живом сообщении:
editMessageTextна сохранённый id; новое сообщение НЕ шлётся. - AC-5.
editвернулEDIT_GONE→ шлётся НОВОЕ сообщение, id обновляется (fallback как раньше). - AC-6.
editвернулEDIT_NOT_MODIFIEDилиEDIT_FAILED→ новое сообщение НЕ шлётся, id не меняется (защита от дублей сохранена).- Все AC-3..AC-6 проверяются при
tracker_mode="edit"(дефолт). FAIL — любое расхождение с текущим поведением.
- Все AC-3..AC-6 проверяются при
Режим bump
- AC-7. Первый вызов в
bump(нет id):deleteMessageНЕ вызывается;sendMessageтихо (disable_notification=True); возвращённый id сохраняется.- PASS: ровно один
send_telegram(..., disable_notification=True),delete_telegramне вызван,get_tracker_message_id == new_id. - FAIL: вызван delete / громкое сообщение / id не сохранён.
- PASS: ровно один
- AC-8. Повторный вызов в
bumpпри существующем id: вызываетсяdelete_telegram(старый_id), затемsend_telegram(..., disable_notification=True), затемtracker_message_idперенаправляется на новый id.- PASS: порядок delete→send соблюдён, id == новый.
- FAIL: нет delete / нет send / id остался старым.
- AC-9. Bump тихий: новое сообщение всегда с
disable_notification=True.- FAIL:
disable_notificationFalse/отсутствует.
- FAIL:
- AC-10. Одна карточка на задачу: за один вызов
update_task_trackerв bump шлётся НЕ более одного нового сообщения.- FAIL: более одного
send_telegramза вызов.
- FAIL: более одного
Устойчивость
- AC-11. Fallback при delete-fail: если
delete_telegramвернул False (старое >48ч / транзиент) — новое сообщение всё равно отправляется, id обновляется, исключений нет.- PASS:
delete_telegram→False→ ровно один send → id == новый. - FAIL: send пропущен / исключение всплыло.
- PASS:
- AC-12.
delete_telegramклассификация (httpx замокан, never raises):ok:true→True;ok:falseс"message to delete not found"/"message can't be deleted"/"message_id_invalid"→True;- неизвестный
ok:false/ 5xx →False; - исключение (таймаут/сеть) →
False; - нет токена/chat_id →
False, HTTP-вызов не выполняется.
- AC-13. Транзиентный сбой send в bump (send вернул None):
tracker_message_idНЕ затирается на None; исключений нет; дублей нет (≤1 попытка send за вызов). - AC-14.
update_task_trackerникогда не выбрасывает исключение ни в одном режиме (контракт «never raises») при любых сбоях БД/сети/Telegram.
Текстовые правки (оба режима)
- AC-15. Метка «Подтверждение BRD» присутствует в карточке там, где раньше была «Ревью БРД»; строки «Ревью БРД» в выводе нет.
- AC-16. После прохождения approve-gate (зафиксированы
brd_review_started_atиbrd_review_ended_at) строка подтверждения BRD начинается с ✅ (не ⏸️). Пока ждём человека (brd_review_ended_atпуст) — индикатор ожидания/⏳ сохраняется (не ✅). - AC-17. Метки стадий в карточке русские:
Анализ,Архитектура,Разработка,Код ревью,Тестирование,Внедрение. Английских меток (Analysis/Architecture/Development/Review/Testing/Deploy) в выводе нет — ни в «✅ …»-строках, ни в «🔄 … идёт». - AC-18. Итоговая строка готовой задачи содержит «📦 Внедрено» (не «deployed»).
Регрессия и качество
- AC-19. Состав отдельных пингов не изменён:
notify_approve_requestedшлёт ровно один НЕтихий пинг и стартует BRD-часы;notify_error— один НЕтихий пинг;notify_stage_change/notify_agent_started/notify_qg_failure— НЕ шлют отдельных сообщений (только refresh трекера). - AC-20. Вся существующая и новая pytest-сюита зелёная (
pytest tests/ -q). Существующие ассерты вtests/test_telegram_tracker.pyобновлены под русские метки и «Подтверждение BRD». - AC-21. Документация обновлена в ТОМ ЖЕ PR:
CHANGELOG.md,docs/architecture/internals.md(режимы +ORCH_TRACKER_MODE+delete_telegram),.env.example(ORCH_TRACKER_MODE). Отсутствие — REQUEST_CHANGES на ревью.