"""Score each model's JSON answer against answer_key.json. Usage: python3 score.py resultados/*.json"""
import json, sys
key = json.load(open("answer_key.json", encoding="utf-8"))
def get(d, path):
    for p in path.split("."):
        d = d.get(p) if isinstance(d, dict) else None
    return d
def ok(field, want, got):
    if isinstance(want, str):
        return isinstance(got, str) and want.lower() in got.lower()
    return got == want and type(got) == type(want) if want is not None else got is None
rows = []
for f in sys.argv[1:]:
    ans = json.load(open(f, encoding="utf-8"))
    fails = [k for k, v in key["fields"].items() if not ok(k, v, get(ans, k))]
    reqs = " ".join(ans.get("other_requirements") or []).lower()
    missing = [name for name, kws in key["other_requirements_must_cover"].items() if not any(k.lower() in reqs for k in kws)]
    fields_ok = len(key["fields"]) - len(fails)
    cover_ok = len(key["other_requirements_must_cover"]) - len(missing)
    total = len(key["fields"]) + len(key["other_requirements_must_cover"])
    trap = "fell for it" if ans.get("new_2027_watch_hours_threshold") is not None else "avoided"
    rows.append((f, fields_ok + cover_ok, total, fails, missing, trap))
for f, s, t, fails, missing, trap in rows:
    print(f"{f}: {s}/{t} · trap {trap} · wrong fields: {fails or 'none'} · missing requirements: {missing or 'none'}")
