116 lines
5.6 KiB
YAML
116 lines
5.6 KiB
YAML
work_item: ORCH-087
|
||
description: >
|
||
Тест-план для anti-orphan bump-зачистки live-трекера, корректности заголовка/deploy-статусов
|
||
и эффорта в строке стадии. Все тесты автономны (Telegram-примитивы мокаются monkeypatch'ем,
|
||
как в существующих tests/test_tracker_bump*.py). Контракт never-raise проверяется явно.
|
||
tests:
|
||
|
||
# --- G1: anti-orphan bump ------------------------------------------------
|
||
- id: TC-01
|
||
type: unit
|
||
description: >
|
||
bump: успешный send нового сообщения помечает старые незакрытые карточки на удаление и
|
||
delete_telegram вызывается для каждого ранее созданного, не удалённого message_id (sweep).
|
||
module: tests/test_tracker_orphan_sweep.py
|
||
expected: PASS
|
||
|
||
- id: TC-02
|
||
type: unit
|
||
description: >
|
||
bump: send вернул None (нет креды/transient) -> tracker_message_id НЕ обнуляется,
|
||
реестр прежних message_id не теряется, дубликата не создано (<=1 send за вызов).
|
||
module: tests/test_tracker_orphan_sweep.py
|
||
expected: PASS
|
||
|
||
- id: TC-03
|
||
type: unit
|
||
description: >
|
||
Симуляция рассинхрона "рестарт между delete и send": в реестре остаётся незакрытый старый
|
||
mid; следующий update_task_tracker подчищает его (delete вызван) -> сироты не накапливаются.
|
||
module: tests/test_tracker_orphan_sweep.py
|
||
expected: PASS
|
||
|
||
- id: TC-04
|
||
type: unit
|
||
description: >
|
||
delete старше 48ч (Telegram "message can't be deleted", _DELETE_GONE_MARKERS) -> запись
|
||
помечается обработанной (deleted=1), без падения, без бесконечных повторов.
|
||
module: tests/test_tracker_orphan_sweep.py
|
||
expected: PASS
|
||
|
||
- id: TC-05
|
||
type: unit
|
||
description: >
|
||
never-raise: delete и send оба бросают/возвращают ошибку -> update_task_tracker не поднимает
|
||
исключение; карточка отправляется с disable_notification=True и disable_web_page_preview=True.
|
||
module: tests/test_tracker_orphan_sweep.py
|
||
expected: PASS
|
||
|
||
- id: TC-06
|
||
type: unit
|
||
description: >
|
||
Инвариант "одна карточка": за один update_task_tracker отправляется не более одного нового
|
||
сообщения; после успешного цикла в реестре ровно один live (deleted=0) message_id.
|
||
module: tests/test_tracker_orphan_sweep.py
|
||
expected: PASS
|
||
|
||
# --- G2/G3: заголовок и deploy-статусы -----------------------------------
|
||
- id: TC-07
|
||
type: unit
|
||
description: >
|
||
Регресс: при смене tasks.stage статус-строка карточки меняется (created->To Analyse,
|
||
analysis->Analysis, deploy->Awaiting Deploy, done->Done); НЕ застывает на To Analyse.
|
||
module: tests/test_tracker_status_line.py
|
||
expected: PASS
|
||
|
||
- id: TC-08
|
||
type: unit
|
||
description: >
|
||
plane_status_label покрывает весь deploy-цикл offline: stage=deploy -> "Awaiting Deploy",
|
||
stage=done -> "Done"; live-overlay маппит deploying/monitoring/confirm на свои лейблы.
|
||
module: tests/test_tracker_status_line.py
|
||
expected: PASS
|
||
|
||
# --- G4: эффорт в строке стадии ------------------------------------------
|
||
- id: TC-09
|
||
type: unit
|
||
description: >
|
||
Миграция agent_runs.effort идемпотентна: повторный init_db не падает, колонка присутствует,
|
||
существующие колонки/данные не затронуты.
|
||
module: tests/test_db_effort_column.py
|
||
expected: PASS
|
||
|
||
- id: TC-10
|
||
type: unit
|
||
description: >
|
||
_spawn стампит фактически применённый effort в agent_runs (то, что ушло в --effort), без
|
||
повторного resolve на рендере; пустой effort (omit) -> NULL/"" без падения.
|
||
module: tests/test_launcher.py
|
||
expected: PASS
|
||
|
||
- id: TC-11
|
||
type: unit
|
||
description: >
|
||
render_task_tracker: строка стадии показывает эффорт рядом с моделью в компактном формате;
|
||
developer-строка -> xhigh, tester/deployer -> medium (по данным agent_runs.effort).
|
||
module: tests/test_tracker_effort_line.py
|
||
expected: PASS
|
||
|
||
- id: TC-12
|
||
type: unit
|
||
description: >
|
||
Деградация: agent_runs.effort NULL/пусто -> строка рендерится без эффорт-суффикса (как при
|
||
пустой модели), без вывода "None" и без падения.
|
||
module: tests/test_tracker_effort_line.py
|
||
expected: PASS
|
||
|
||
# --- Сквозное -------------------------------------------------------------
|
||
- id: TC-13
|
||
type: integration
|
||
description: >
|
||
Полный жизненный цикл задачи (created->done) через update_task_tracker на каждой стадии:
|
||
в конце ровно одна live-карточка с финальным статусом "Done", сирот нет, never-raise.
|
||
module: tests/test_tracker_lifecycle.py
|
||
expected: PASS
|
||
</content>
|