Improve AI daily report operations and dedupe observability
This commit is contained in:
42
tests/test_audit.py
Normal file
42
tests/test_audit.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from ai_daily_report.audit import render_markdown, summarize_reports
|
||||
|
||||
|
||||
class AuditTests(unittest.TestCase):
|
||||
def test_summarizes_weekly_metrics(self):
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
run_dir = Path(tmp) / "2026-06-10"
|
||||
run_dir.mkdir()
|
||||
(run_dir / "run_report.json").write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"quality_gate": {
|
||||
"source_failures": [{"source": "橘鸦AI早报"}],
|
||||
"warnings": ["enabled_source_failed:橘鸦AI早报:error"],
|
||||
"blocking_errors": [],
|
||||
},
|
||||
"stage2_8": {"candidate_group_count": 6},
|
||||
"stage4": {"fallback_count": 2, "output_count": 20},
|
||||
"stage5": {"output_count": 20},
|
||||
"stage8": {"status": "ok", "slug": "ai-2026-06-10"},
|
||||
}
|
||||
),
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
summary = summarize_reports(Path(tmp), limit_days=7)
|
||||
markdown = render_markdown(summary)
|
||||
|
||||
self.assertEqual(summary["run_count"], 1)
|
||||
self.assertEqual(summary["totals"]["source_failures"], 1)
|
||||
self.assertEqual(summary["totals"]["duplicate_candidates"], 6)
|
||||
self.assertEqual(summary["totals"]["fallback_ratio"], 0.1)
|
||||
self.assertIn("AI日报每周自动审计报告", markdown)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user