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

@@ -8,6 +8,7 @@ from .models import NewsItem, SourceResult
DEFAULT_CONFIG = {
"required_source_failure_policy": "block", # block | draft | dry_run | warn
"block_on_required_source_failure": True,
"warn_on_enabled_source_failure": True,
"warn_when_stage3_candidates_zero_min_items": 30,
@@ -73,10 +74,14 @@ def evaluate_quality_gate(
warnings.append(f"enabled_source_failed:{failure['source']}:{failure['status']}")
required_sources = set(config.get("required_sources") or [])
if bool(config["block_on_required_source_failure"]):
for failure in failures:
if failure["source"] in required_sources:
blocking_errors.append(f"required_source_failed:{failure['source']}:{failure['status']}")
required_failures = [failure for failure in failures if failure["source"] in required_sources]
policy = str(config.get("required_source_failure_policy") or "block")
if bool(config["block_on_required_source_failure"]) and policy == "block":
for failure in required_failures:
blocking_errors.append(f"required_source_failed:{failure['source']}:{failure['status']}")
elif required_failures:
for failure in required_failures:
warnings.append(f"required_source_failed:{failure['source']}:{failure['status']}:{policy}")
title_threshold = float(config["warn_on_final_title_similarity"])
if title_threshold > 0:
@@ -87,5 +92,7 @@ def evaluate_quality_gate(
"warnings": warnings,
"blocking_errors": blocking_errors,
"source_failures": failures,
"required_source_failures": required_failures,
"required_source_failure_policy": policy,
"quality_gate_failed": bool(blocking_errors),
}