feat: track media catalog coverage
This commit is contained in:
@@ -5,7 +5,7 @@ import io
|
||||
import pytest
|
||||
from PIL import Image
|
||||
|
||||
from rf4_research.media_assets import audit_media_catalog, extract_media_candidates, inspect_image, merge_manifest, review_asset, store_asset
|
||||
from rf4_research.media_assets import audit_media_catalog, extract_media_candidates, inspect_image, media_coverage, merge_manifest, review_asset, store_asset
|
||||
|
||||
|
||||
def test_extracts_and_classifies_unique_https_media() -> None:
|
||||
@@ -94,3 +94,18 @@ def test_catalog_audit_detects_tampering_and_orphans(tmp_path: Path) -> None:
|
||||
report = audit_media_catalog(tmp_path)
|
||||
assert any("SHA-256 mismatch" in issue for issue in report["issues"])
|
||||
assert "files/orphan.png" in report["orphaned_files"]
|
||||
|
||||
|
||||
def test_media_coverage_keeps_unknown_tackle_total_honest(tmp_path: Path) -> None:
|
||||
(tmp_path / "manifest.json").write_text(
|
||||
'{"assets":[{"entity_type":"fish","status":"approved","entity_key":"ruffe"},'
|
||||
'{"entity_type":"fish","status":"queued"},{"entity_type":"tackle","status":"queued"}]}',
|
||||
encoding="utf-8",
|
||||
)
|
||||
(tmp_path / "catalog-baseline.json").write_text(
|
||||
'{"verified_at":"2026-09-12","entities":{"fish":{"count":2},"tackle":{"count":null}}}',
|
||||
encoding="utf-8",
|
||||
)
|
||||
report = media_coverage(tmp_path)["entities"]
|
||||
assert report["fish"] == {"expected": 2, "candidates": 2, "approved": 1, "candidate_gap": 0, "approved_gap": 1}
|
||||
assert report["tackle"]["candidate_gap"] is None
|
||||
|
||||
Reference in New Issue
Block a user