feat(reports): 顯示資料源 PlayBook Verifier 缺口
All checks were successful
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m32s
CD Pipeline / build-and-deploy (push) Successful in 4m35s
CD Pipeline / post-deploy-checks (push) Successful in 1m36s

This commit is contained in:
Your Name
2026-06-18 20:40:01 +08:00
parent 748096c2ce
commit 6ab640e431
5 changed files with 188 additions and 3 deletions

View File

@@ -2,7 +2,6 @@ from fastapi.testclient import TestClient
from src.main import app
_PUBLIC_FORBIDDEN_TERMS = [
"工作視窗",
"對話內容",
@@ -51,6 +50,9 @@ def test_get_ai_agent_report_source_health_api():
assert data["program_status"]["overall_completion_percent"] == 100
assert data["rollups"]["source_count"] == 5
assert data["rollups"]["no_send_preview_count"] == 3
assert data["rollups"]["source_gap_playbook_draft_count"] >= 0
assert data["rollups"]["source_gap_verifier_plan_count"] >= 0
assert data["rollups"]["source_gap_owner_review_required_count"] >= 0
assert data["rollups"]["live_send_allowed_count"] == 0
assert data["rollups"]["runtime_gate_count"] == 0
assert data["activation_boundaries"]["telegram_send_enabled"] is False
@@ -69,6 +71,17 @@ def test_get_ai_agent_report_source_health_api():
}
asset_labels = {asset["label"] for asset in data["automation_assets"]}
assert asset_labels == {"KM", "PlayBook", "腳本", "排程", "Verifier"}
for card in data["source_gap_playbook_verifier"]:
assert card["playbook_state"] == "draft_required"
assert card["verifier_state"] == "plan_required"
assert card["script_state"] == "readback_only"
assert card["schedule_state"] == "no_send_preview"
assert card["owner_review_required"] is True
assert card["runtime_gate_open"] is False
assert card["playbook_draft_id"].startswith("playbook-draft:")
assert card["verifier_plan_id"].startswith("verifier-plan:")
assert "owner_review" in card["playbook_template_fields"]
assert "runtime_gate_count_remains_zero" in card["verifier_checks"]
for preview in data["no_send_previews"]:
assert preview["delivery_state"] == "no_send_preview"
assert preview["live_send_allowed"] is False