43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
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()
|