# -*- coding: utf-8 -*-
# priorityScore を「優先度帯×EV順」で 0-100 に再採点（priorityと整合させる表示用スコア）。
# 判定(priority/actionName)は変えない。EVは保持。冪等。
import json, os
HERE=os.path.dirname(os.path.abspath(__file__))
SRC=os.path.abspath(os.path.join(HERE,"..","data","meiten-master.json"))
with open(SRC,encoding="utf-8") as f: j=json.load(f)
BANDS={"P0":(85,100),"P1":(65,84),"P2":(40,64),"P3":(5,39)}
groups={}
for s in j["stores"]:
    nb=s.get("nba")
    if not nb: continue
    groups.setdefault(nb.get("priority","P3"),[]).append(s)
for pr,band in BANDS.items():
    arr=groups.get(pr,[])
    arr.sort(key=lambda s:(s["nba"].get("ev") or 0), reverse=True)
    lo,hi=band; n=len(arr)
    for i,s in enumerate(arr):
        score = hi if n<=1 else round(hi-(hi-lo)*i/(n-1))
        s["nba"]["priorityScore"]=score
with open(SRC,"w",encoding="utf-8") as f: json.dump(j,f,ensure_ascii=False,indent=2)
# 確認
top=sorted([s for s in j["stores"] if s.get("nba")],key=lambda s:(["P0","P1","P2","P3"].index(s["nba"]["priority"]), -s["nba"]["priorityScore"]))[:8]
for s in top: print(s["nba"]["priority"], s["nba"]["priorityScore"], s["name"][:18], s["nba"].get("actionName"))
