import json, sys
path = '/var/www/html/peta/storage/app/propertylab-catalogue-match/review/r2_batch_04_in.jsonl'
keys=set()
with open(path) as f:
    for i, line in enumerate(f):
        d = json.loads(line)
        for k in d.keys(): keys.add(k)
        r = d['realtycheck']
        print(f"=== #{i+1} {d['case']} | R: {r['name']} | {r['category']} | {r.get('state')} / {r.get('district')} / mukim {r.get('mukim')} | prec={r.get('coord_precision')} | psf={r.get('psf')} | med={r.get('median_price_rm')}")
        extra = {k:v for k,v in d.items() if k not in ('case','realtycheck','catalogue_candidates')}
        if extra: print("   EXTRA:", json.dumps(extra, ensure_ascii=False))
        rextra = {k:v for k,v in r.items() if k not in ('name','category','state','district','mukim','coord_precision','psf','median_price_rm')}
        if rextra: print("   REXTRA:", json.dumps(rextra, ensure_ascii=False))
        for c in d['catalogue_candidates']:
            cextra = {k:v for k,v in c.items() if k not in ('k','name','area','state','type','dist_m','psf_median','price_median','completion_year','sale_status','tenure')}
            ratio = ''
            if c.get('price_median') and r.get('median_price_rm'):
                ratio = f" ratio={r['median_price_rm']/c['price_median']:.2f}"
            print(f"   [{c['k']}] {c['name']} | {c.get('area')}, {c.get('state')} | {c.get('type')} | d={c.get('dist_m')} | psf={c.get('psf_median')} | med={c.get('price_median')}{ratio} | yr={c.get('completion_year')} {c.get('sale_status')} {c.get('tenure')}" + (f" | X:{json.dumps(cextra, ensure_ascii=False)}" if cextra else ''))
print(keys, file=sys.stderr)
