fix: count unique media coverage
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s

This commit is contained in:
ik
2026-09-13 08:22:10 +07:00
parent 7e464ef598
commit 0b7df7f721
4 changed files with 27 additions and 5 deletions
+9 -2
View File
@@ -169,13 +169,20 @@ def media_coverage(root: Path) -> dict:
result: dict[str, dict] = {}
for entity_type, target in baseline["entities"].items():
candidates = [item for item in manifest.get("assets", []) if item.get("entity_type") == entity_type]
candidate_labels = {
" ".join(item["label"].split()).casefold()
for item in candidates
if isinstance(item.get("label"), str) and item["label"].strip()
}
approved_keys = {item.get("entity_key") for item in candidates if item.get("status") == "approved" and item.get("entity_key")}
expected = target.get("count")
result[entity_type] = {
"expected": expected,
"candidates": len(candidates),
"candidate_assets": len(candidates),
"unique_candidates": len(candidate_labels),
"unidentified_assets": sum(1 for item in candidates if not isinstance(item.get("label"), str) or not item["label"].strip()),
"approved": len(approved_keys),
"candidate_gap": max(expected - len(candidates), 0) if isinstance(expected, int) else None,
"candidate_gap": max(expected - len(candidate_labels), 0) if isinstance(expected, int) else None,
"approved_gap": max(expected - len(approved_keys), 0) if isinstance(expected, int) else None,
}
return {"baseline_date": baseline["verified_at"], "entities": result}