補齊 AI 自動化可觀測性指標
All checks were successful
CD Pipeline / deploy (push) Successful in 1m15s

This commit is contained in:
OoO
2026-04-29 23:41:03 +08:00
parent d58e4d0d11
commit e6a1c9d09f
14 changed files with 341 additions and 18 deletions

View File

@@ -0,0 +1,63 @@
def test_ai_automation_metrics_snapshot_records_event_router_and_autoheal():
from services import ai_automation_metrics as metrics
metrics.reset_for_tests()
metrics.record_event_router_dispatch(
tier="L2",
event_type="scheduler_task_failure",
delivered=False,
queued=True,
latency_ms=123,
)
metrics.record_event_router_safe_action("retry_task", "ok")
metrics.record_event_router_replay(attempted=2, sent=1, failed=1)
metrics.record_autoheal_action(
action="ALERT_ONLY",
error_type="DB_UNREACHABLE",
success=True,
duration_ms=45,
)
snap = metrics.snapshot()
counters = {
(metric, dict(labels).get("outcome") or dict(labels).get("status") or dict(labels).get("result")): value
for (metric, labels), value in snap["counters"].items()
}
assert counters[("event_router_dispatch_total", "queued")] == 1
assert counters[("event_router_safe_action_total", "ok")] == 1
assert counters[("event_router_replay_total", "attempted")] == 2
assert counters[("event_router_replay_total", "sent")] == 1
assert counters[("autoheal_action_total", "success")] == 1
latency = next(
values for (metric, _labels), values in snap["latency"].items()
if metric == "event_router_latency_ms"
)
assert latency["count"] == 1
assert latency["sum"] == 123
assert latency["max"] == 123
def test_system_metrics_exports_ai_automation_metrics():
from prometheus_client import CollectorRegistry, Gauge, generate_latest
from routes.system_public_routes import _register_ai_automation_metrics
from services import ai_automation_metrics as metrics
metrics.reset_for_tests()
metrics.record_event_router_dispatch(
tier="L1",
event_type="crawler_timeout",
delivered=True,
latency_ms=7,
)
registry = CollectorRegistry()
_register_ai_automation_metrics(registry, Gauge, metrics.snapshot())
output = generate_latest(registry).decode("utf-8")
assert "momo_ai_event_router_dispatch_total" in output
assert 'event_type="crawler_timeout"' in output
assert 'outcome="delivered"' in output
assert "momo_ai_event_router_latency_ms_count" in output