import json,sys,time
from datetime import datetime,timedelta,timezone
sys.path.insert(0,"/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import get_client, ACC
WIB=timezone(timedelta(hours=7))
c=get_client()
all_docs=[]
for p in range(1,120):
    got=None
    for i in range(8):
        try:
            got=c.get_schedules(page=p,limit=100); break
        except Exception as e:
            print("retry",p,e); time.sleep(3+3*i)
    if got is None: break
    b=got.get("docs",[])
    if not b: break
    all_docs+=b
    if len(b)<100: break
print("total",len(all_docs))
json.dump(all_docs,open("_dump_18okt.json","w"))
ACCS={ACC.STUDIOSOFT_THREADS:"studiosoft",ACC.UKY_THREADS:"uky",ACC.TSLAW_THREADS:"tslaw",ACC.TSC_THREADS:"tsc",ACC.DAS_THREADS:"das"}
def wt(s):
    try: return datetime.fromisoformat(str(s).replace("Z","+00:00")).astimezone(WIB)
    except: return None
for k,aid in [("studiosoft",ACC.STUDIOSOFT_THREADS),("uky",ACC.UKY_THREADS),("tslaw",ACC.TSLAW_THREADS),("tsc",ACC.TSC_THREADS),("das",ACC.DAS_THREADS)]:
    v=[d for d in all_docs if d.get("accountId")==aid]
    v.sort(key=lambda d:str(d.get("scheduleAt")))
    print("\n###",k,len(v))
    for d in v[-6:]:
        t=wt(d.get("scheduleAt"))
        print("  ",t,d.get("status"),repr((d.get("title") or "")[:35]),"|",(d.get("description") or "").replace("\n"," ")[:60])
    t0=[d for d in v if (wt(d.get("scheduleAt")) or datetime(1970,1,1,tzinfo=WIB)).strftime("%Y-%m-%d")=="2026-10-18"]
    print("  TODAY 18okt:",len(t0))
    for d in t0:
        t=wt(d.get("scheduleAt"))
        print("     %02d:00"%t.hour,d.get("status"),d.get("type"),repr((d.get("title") or "")[:40]))
