(
evidence_pack: dict,
metadata: dict | None = None,
assets_wrapper: dict | None = None,
source_manifest: dict | None = None,
)
| 111 | |
| 112 | |
| 113 | def coverage_summary( |
| 114 | evidence_pack: dict, |
| 115 | metadata: dict | None = None, |
| 116 | assets_wrapper: dict | None = None, |
| 117 | source_manifest: dict | None = None, |
| 118 | ) -> dict: |
| 119 | metadata = metadata or {} |
| 120 | assets_wrapper = assets_wrapper or {} |
| 121 | source_manifest = source_manifest or {} |
| 122 | pdf_coverage = evidence_pack.get("pdf_coverage", {}) or {} |
| 123 | asset_coverage = assets_wrapper.get("asset_coverage", {}) or {} |
| 124 | source_coverage = ( |
| 125 | source_manifest.get("coverage", {}) |
| 126 | if isinstance(source_manifest.get("coverage"), dict) |
| 127 | else {} |
| 128 | ) |
| 129 | if not source_coverage and isinstance(source_manifest.get("pdf"), dict): |
| 130 | pdf = source_manifest.get("pdf", {}) |
| 131 | source_coverage = { |
| 132 | "total_pages": pdf.get("total_pages"), |
| 133 | "text_max_pages": pdf.get("text_max_pages"), |
| 134 | "text_pages_extracted": pdf.get("text_pages_extracted"), |
| 135 | "text_truncated": pdf.get("text_truncated"), |
| 136 | } |
| 137 | return { |
| 138 | "language_hint": source_manifest.get("language_hint") |
| 139 | or evidence_pack.get("language_hint", "unknown"), |
| 140 | "section_extraction_coverage": evidence_pack.get("section_extraction_coverage", {}) or {}, |
| 141 | "pdf_coverage": pdf_coverage, |
| 142 | "source_coverage": source_coverage, |
| 143 | "source_manifest": { |
| 144 | "raw_sections_path": source_manifest.get("raw_sections_path", ""), |
| 145 | "full_text_md_path": source_manifest.get("full_text_md_path", ""), |
| 146 | "section_count": len(source_manifest.get("sections", []) or []), |
| 147 | "page_count": len(source_manifest.get("pages", []) or []), |
| 148 | "text_hash_sha256": source_manifest.get("text_hash_sha256", ""), |
| 149 | }, |
| 150 | "appendix_evidence_counts": appendix_evidence_counts(evidence_pack), |
| 151 | "extraction_failures": evidence_pack.get("extraction_failures", []) or [], |
| 152 | "asset_coverage": asset_coverage if isinstance(asset_coverage, dict) else {}, |
| 153 | "figure_quality_summary": figure_quality_summary(assets_wrapper), |
| 154 | "truncation_warnings": truncation_warnings( |
| 155 | source_coverage if isinstance(source_coverage, dict) else {}, |
| 156 | asset_coverage if isinstance(asset_coverage, dict) else {}, |
| 157 | ), |
| 158 | "identity_confidence": metadata.get("identity_confidence", ""), |
| 159 | "identity_confidence_reasons": metadata.get("identity_confidence_reasons", []) or [], |
| 160 | } |
| 161 | |
| 162 | |
| 163 | def appendix_evidence_counts(evidence_pack: dict) -> dict[str, int]: |
no test coverage detected