77 lines
4.5 KiB
YAML
77 lines
4.5 KiB
YAML
work_item: ORCH-091
|
||
stage: analysis
|
||
author_agent: analyst
|
||
status: ready-for-review
|
||
created_at: 2026-06-09
|
||
model_used: claude-opus-4-8
|
||
title: "Карточка трекера: полнота статусов, отражение откатов, суммирование метрик по попыткам"
|
||
framework: pytest
|
||
scope: >
|
||
Юнит-покрытие чистых функций src/notifications.py (plane_status_label,
|
||
render_task_tracker) и интеграция рендера от состояния БД (tasks + agent_runs).
|
||
Вне покрытия: транспорт Telegram (send/edit/delete), live-overlay ветки (сеть),
|
||
STAGE_TRANSITIONS/QG/схема БД (не трогаются).
|
||
notes: >
|
||
Полнота карты статусов должна выводиться программно из src/stages.py::STAGE_TRANSITIONS
|
||
(а не из захардкоженного списка стадий). Метрики читаются из таблицы agent_runs:
|
||
cost_usd, input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens,
|
||
started_at/finished_at. Фикстура-эталон сумм — ORCH-069 (developer: 3 прогона ≈ $3.98).
|
||
Полный регресс pytest tests/ -q должен оставаться зелёным; существующие тесты карточки
|
||
(test_tracker_status_line, test_telegram_tracker, test_tracker_effort_time) не должны
|
||
ломаться.
|
||
|
||
tests:
|
||
- id: TC-01
|
||
type: unit
|
||
description: "Полнота: для каждого ключа STAGE_TRANSITIONS (программная итерация) plane_status_label возвращает непустой лейбл, не 'To Analyse' (кроме created). AC-1"
|
||
module: tests/test_tracker_status_line.py
|
||
expected: PASS
|
||
|
||
- id: TC-02
|
||
type: unit
|
||
description: "stage='deploy-staging' -> осмысленный staging-лейбл, отличный от 'To Analyse' и от лейбла стадии 'deploy'. AC-2"
|
||
module: tests/test_tracker_status_line.py
|
||
expected: PASS
|
||
|
||
- id: TC-03
|
||
type: unit
|
||
description: "Истинно неизвестная стадия ('__bogus__') -> нейтральный фолбэк (не 'To Analyse'); never-raise на битом/None входе. AC-3"
|
||
module: tests/test_tracker_status_line.py
|
||
expected: PASS
|
||
|
||
- id: TC-04
|
||
type: unit
|
||
description: "Регресс ветки plane_status_label: analysis + открытый brd-clock -> In Review; deploy -> Awaiting Deploy; done -> Done; created -> To Analyse. AC-6"
|
||
module: tests/test_tracker_status_line.py
|
||
expected: PASS
|
||
|
||
- id: TC-05
|
||
type: integration
|
||
description: "Откат deploy-staging->development: задача stage='development' с завершёнными прогонами reviewer/tester/deployer -> Разработка активна (🔄), Тестирование/Внедрение НЕ как ✅; Анализ/Архитектура остаются ✅. AC-4"
|
||
module: tests/test_tracker_rollback_metrics.py
|
||
expected: PASS
|
||
|
||
- id: TC-06
|
||
type: integration
|
||
description: "Суммирование метрик стадии: developer с 3 agent_runs (фикстура ORCH-069) -> строка 'Разработка' показывает Σ стоимости ≈ $3.98, Σ токенов, Σ времени, а не последний прогон. AC-5"
|
||
module: tests/test_tracker_rollback_metrics.py
|
||
expected: PASS
|
||
|
||
- id: TC-07
|
||
type: integration
|
||
description: "Сходимость тоталов: тоталы карточки (💰/🔢/⏱ Агенты) равны SUM(agent_runs) по task_id (cost_usd, токены, длительности) при наличии ретраев. AC-5"
|
||
module: tests/test_tracker_rollback_metrics.py
|
||
expected: PASS
|
||
|
||
- id: TC-08
|
||
type: integration
|
||
description: "render_task_tracker never-raise: битые/частичные строки tasks/agent_runs (NULL timestamps, отсутствующий stage) -> возвращает строку-фолбэк без исключения. NFR-1 / AC-7"
|
||
module: tests/test_tracker_rollback_metrics.py
|
||
expected: PASS
|
||
|
||
- id: TC-09
|
||
type: unit
|
||
description: "Регресс существующих строк карточки: формат строк стадий, эффорт-суффикс (ORCH-087), строка 'Подтверждение BRD', блок тоталов — без изменений. AC-6"
|
||
module: tests/test_telegram_tracker.py
|
||
expected: PASS
|