Improve AI daily report operations and dedupe observability

This commit is contained in:
Ubuntu
2026-06-10 21:55:29 +08:00
parent b46cef2c7b
commit 2159ee733b
23 changed files with 761 additions and 57 deletions

View File

@@ -30,6 +30,7 @@ def _source_config_from_dict(value: dict[str, Any]) -> SourceConfig:
min_items=int(value.get("min_items", 0)),
url=value.get("url", ""),
max_item_age_days=int(max_item_age_days) if max_item_age_days is not None else None,
failure_policy=str(value.get("failure_policy") or ("block" if bool(value.get("required", False)) else "warn")),
)
@@ -347,19 +348,26 @@ def run_stage0_to_stage8(
quality_gate_config=quality_gate_config,
)
slug = f"ai-{run_date}"
effective_mode = mode
quality_gate_report = stage7_result["reports"].get("quality_gate", {}) or {}
required_policy = str(quality_gate_report.get("required_source_failure_policy") or "block")
if quality_gate_report.get("required_source_failures") and required_policy in {"draft", "dry_run"}:
effective_mode = "dry-run" if required_policy == "dry_run" else "draft"
publish_result = publish_markdown(
title=f"AI日报 · {run_date}",
markdown=stage7_result["markdown"],
tags=["AI日报", "AI资讯", "人工智能"],
slug=slug,
base_url=base_url,
mode=mode,
mode=effective_mode,
markdown_report=stage7_result["reports"]["stage7"],
client=client,
idempotency_config=publish_idempotency_config,
)
reports = dict(stage7_result["reports"])
reports["stage8"] = {
"requested_mode": mode,
"mode": publish_result.mode,
"status": publish_result.status,
"slug": publish_result.slug,