Files
awoooi/apps/api/tests/test_ai_technology_radar_readback.py
Your Name 210577de28
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m39s
CD Pipeline / build-and-deploy (push) Successful in 4m35s
CD Pipeline / post-deploy-checks (push) Successful in 1m51s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
feat(governance): 新增 AI 技術雷達滾動監控
2026-06-25 11:57:38 +08:00

62 lines
2.5 KiB
Python

from __future__ import annotations
import json
from src.services.ai_technology_radar_readback import (
load_latest_ai_technology_radar_readback,
)
def test_ai_technology_radar_readback_committed_snapshot_is_safe():
payload = load_latest_ai_technology_radar_readback()
assert payload["schema_version"] == "ai_technology_radar_readback_v1"
assert payload["summary"]["overall_completion_percent"] == 42.2
assert payload["summary"]["ai_technology_radar_completion_percent"] == 100.0
assert payload["summary"]["technology_count"] == 20
assert payload["summary"]["technology_area_count"] == 6
assert payload["summary"]["source_count"] == 47
assert payload["summary"]["source_failures"] == 0
assert payload["summary"]["high_priority_count"] == 14
assert payload["summary"]["rolling_update_status"] == (
"near_real_time_watch_ready_integration_gated"
)
assert payload["source_scope"]["gitea_main_evidence_basis_commit"] == "683428bd"
policy = payload["policy"]
assert policy["read_only"] is True
assert policy["raw_chat_history_synced"] is False
assert policy["sdk_installation_approved"] is False
assert policy["paid_api_calls_approved"] is False
assert policy["production_routing_approved"] is False
assert policy["telegram_send_approved"] is False
assert policy["model_provider_switch_approved"] is False
assert policy["host_write_approved"] is False
assert policy["openclaw_replacement_approved"] is False
serialized = json.dumps(payload, ensure_ascii=False)
assert "/Users/" not in serialized
assert ".claude/projects" not in serialized
assert ".codex" not in serialized
assert "192.168." not in serialized
assert "auth.json" not in serialized
def test_ai_technology_radar_readback_contains_roles_and_cadence():
payload = load_latest_ai_technology_radar_readback()
roles = {row["agent"]: row for row in payload["professional_agent_roles"]}
assert "OpenClaw" in roles
assert "NemoTron" in roles
assert "Hermes" in roles
assert "MarketRadar" in roles
assert "生產路由" in roles["OpenClaw"]["review_boundary"]
assert "離線回放評估者" in roles["NemoTron"]["professional_role"]
controls = {row["cadence"]: row for row in payload["rolling_update_controls"]}
assert "每 6 小時" in controls
assert controls["每 6 小時"]["gate"] == "read_only_only"
assert payload["report_contract"]["api_endpoint"] == (
"/api/v1/agents/ai-technology-radar-readback"
)