Files
ARR-2.0-0918/integrations/ohip/audit_arr_named_day.py
T

46 lines
1.9 KiB
Python

"""Offline replay of v3 primary-name captures; v2 remains a separate contract."""
import argparse
import json
from pathlib import Path
import re
from . import audit_arr_day as day_audit, collect_arr_named_day as named, collect_arr_source as source
class VerifiedArchive(day_audit.VerifiedArchive):
version = named.VERSION
file_pattern = re.compile(r"(?:capture\.json|rate-assessments\.json|(?:request|rate|profile)-[0-9]{6}\.(?:json|meta\.json|response\.bin))")
operations = named.OPERATIONS
options_type = named.Options
max_inventory_files = 272000
def replay(archive):
source.require(archive.version == named.VERSION, "unsupported_named_day_archive_version")
return day_audit._replay(archive, named=True)
def main(argv=None):
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--capture-dir", type=Path, required=True)
parser.add_argument("--manifest-sha256", required=True)
args = parser.parse_args(argv)
try:
archive = VerifiedArchive(args.capture_dir, args.manifest_sha256)
rows, _, _ = replay(archive)
result = {"integrity_verified": True, "protocol_replayed": True, "source_records": len(rows),
"unique_profiles": archive.result["unique_profiles"],
"valid_name_candidates": archive.result["valid_name_candidates"],
"profile_issues": archive.result["profile_issues"], "network_calls": 0,
"finance_ready": False, "report_equivalence_verified": False}
except source.CollectionError as error:
result = {"integrity_verified": False, "error": str(error), "finance_ready": False}
except Exception:
result = {"integrity_verified": False, "error": "named_archive_invalid", "finance_ready": False}
print(json.dumps(result, ensure_ascii=False))
return 0 if result["integrity_verified"] else 1
if __name__ == "__main__":
raise SystemExit(main())