Improve AI daily report operations and dedupe observability
This commit is contained in:
@@ -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),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user