#!/usr/bin/env python3 from __future__ import annotations import argparse import json from pathlib import Path ROOT = Path(__file__).resolve().parents[1] DEFAULT_IN = ROOT / "Temp" / "fundamental_raw_evidence_v3.json" DEFAULT_OUT = ROOT / "Temp" / "fundamental_raw_evidence_v4.json" def _load(path: Path) -> dict: if not path.exists(): return {} try: obj = json.loads(path.read_text(encoding="utf-8")) return obj if isinstance(obj, dict) else {} except Exception: return {} def main() -> int: ap = argparse.ArgumentParser() ap.add_argument("--raw", default=str(DEFAULT_IN)) ap.add_argument("--out", default=str(DEFAULT_OUT)) args = ap.parse_args() raw = _load(Path(args.raw)) missing = int(raw.get("roe_opm_ocf_fcf_missing_count") or 0) coverage = float(raw.get("fundamental_source_field_coverage_pct") or 0.0) result = { "formula_id": "FUNDAMENTAL_RAW_EVIDENCE_V4", "gate": "PASS" if coverage >= 50.0 else "CAUTION", "raw_fundamental_value_provenance": True, "imputed_data_exposure": { "missing_count": missing, "coverage_pct": coverage, }, "fundamental_stale_data_blocks_long_horizon_upgrade": bool(missing > 0), "source_path": str(Path(args.raw)), } out = Path(args.out) out.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8") print(json.dumps(result, ensure_ascii=False, indent=2)) return 0 if __name__ == "__main__": raise SystemExit(main())