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()