from net import *
import pandas as pd
s=pd.read_parquet(R/'sample.parquet').head(24)
records=[json.loads((R/'store_summaries'/f'{a}.json').read_text()) for a in s.appid]
client=Client();checks=[]
for d in [r for r in records if r['source']=='store_props'][:4]:
    a=client.summary(d['appid'],'all');e=client.summary(d['appid'],'english')
    difference=max(abs(a['total_reviews']-d['total']),abs(e['total_reviews']-d['english']))
    allowed=max(3,.01*a['total_reviews'])
    checks.append(dict(appid=d['appid'],store_total=d['total'],api_total=a['total_reviews'],store_english=d['english'],api_english=e['total_reviews'],max_difference=difference,allowed=allowed,passed=difference<=allowed))
assert all(r['passed'] for r in checks),checks
assert len(records)==24 and len(checks)==4
result={'n':24,'store_successes':sum(d['source']=='store_props' for d in records),'api_fallback':sum(d['source']=='api_fallback' for d in records),'store_api_checks':checks,'passed':True,'decision':'Continue frozen 480-game sample. Use two API summaries directly below 2000 snapshot reviews; try one storefront page for larger games, with fallback as necessary.'}
dump(R/'pilot_validation.json',result);print(json.dumps(result,indent=2))
