"""Export synthetic case summaries and saved model outputs for the replay UI."""

import json
from pathlib import Path

ROOT = Path(__file__).resolve().parent.parent


def load(path):
    return [json.loads(line) for line in (ROOT / path).read_text().splitlines()]


def build():
    decisions = {
        r["case_id"]: r
        for r in load("data/qwen35-4b-decision-001/test-predictions.jsonl")
    }
    verdicts = {
        r["case_id"]: r
        for r in load("data/qwen35-4b-sft-002/test-predictions.jsonl")
    }
    rows = load("data/droid-luna-reviewed-500-002/candidates-500.jsonl") + load(
        "data/luna-expansion-2000-001/candidates.jsonl"
    )
    cases = []
    for row in rows:
        item = row["input"]
        cid = item["case_id"]
        if cid not in decisions:
            continue
        details = item["review_target"]["details"]
        cases.append(
            {
                "id": cid,
                "family": row["audit"]["case_family"],
                "kind": item["review_target"]["event_type"],
                "shares": details["shares"],
                "price": details["price_per_share"],
                "account_days": item["account"]["age_days"],
                "ownership": item["account"]["ownership_proof"],
                "holding_ratio": item["summaries"]["listing_vs_typical_holding"],
                "summaries": item["summaries"],
                "account": item["account"],
                "links": item["links"],
                "events": [
                    {
                        "type": e["event_type"],
                        "minutes_ago": e["minutes_ago"],
                        "details": e["details"],
                    }
                    for e in item["recent_events"]
                ],
                "document": item["texts"]["document_text"],
                "messages": item["texts"]["messages"],
                "decision": {
                    k: decisions[cid][k]
                    for k in ("p_review", "p_ok", "answer_mass")
                },
                "verdict": verdicts[cid]["prediction"],
            }
        )
    assert len(cases) == 124
    (ROOT / "web/cases.json").write_text(json.dumps(cases, indent=2) + "\n")
    print(f"Exported {len(cases)} recorded synthetic cases; no inference executed.")


if __name__ == "__main__":
    build()
