#!/usr/bin/env python3
from __future__ import annotations

import argparse
import json
from pathlib import Path


ROOT = Path(__file__).resolve().parents[1]
DEFAULT_GATHER = ROOT / "GatherTradingData.json"
DEFAULT_OUT = ROOT / "Temp" / "data_freshness_sla_v1.json"


def _load_json(path: Path) -> dict:
    if not path.exists():
        return {}
    payload = json.loads(path.read_text(encoding="utf-8"))
    return payload if isinstance(payload, dict) else {}


def main() -> int:
    ap = argparse.ArgumentParser()
    ap.add_argument("--gather", default=str(DEFAULT_GATHER))
    ap.add_argument("--out", default=str(DEFAULT_OUT))
    args = ap.parse_args()

    gather = _load_json(Path(args.gather))
    hctx = gather.get("data", {}).get("_harness_context", {}) if isinstance(gather.get("data"), dict) else {}
    hctx = hctx if isinstance(hctx, dict) else {}
    hapex = gather.get("hApex", {}) if isinstance(gather.get("hApex"), dict) else {}

    collection_timestamp = hctx.get("captured_at") or hapex.get("captured_at") or ""
    decision_timestamp = hctx.get("decision_timestamp") or hctx.get("as_of") or gather.get("as_of") or ""
    freshness_status = hctx.get("data_freshness_status") or "UNKNOWN"
    snapshot_execution_gate = str(hctx.get("snapshot_execution_gate") or "").upper()
    gate = "PASS" if freshness_status in {"FRESH", "STALE"} and bool(collection_timestamp or decision_timestamp) else "FAIL"

    payload = {
        "formula_id": "DATA_FRESHNESS_SLA_V1",
        "gate": gate,
        "collection_timestamp": collection_timestamp,
        "decision_timestamp": decision_timestamp,
        "freshness_status": freshness_status,
        "snapshot_execution_gate": snapshot_execution_gate,
        "source_packet": "Temp/final_decision_packet_active.json",
    }
    out = Path(args.out)
    out.parent.mkdir(parents=True, exist_ok=True)
    out.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(payload, ensure_ascii=False, indent=2))
    return 0 if gate == "PASS" else 1


if __name__ == "__main__":
    raise SystemExit(main())
