#!/usr/bin/env python3
"""Ambil SEMUA jadwal (retry) -> /tmp/all_schedules.json ; lalu tampilkan jadwal akun tertentu pada tanggal WIB tertentu."""
import sys, json, time
WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from repliz_client import get_client, ACC

TH = {"studiosoft": ACC.STUDIOSOFT_THREADS, "uky": ACC.UKY_THREADS,
      "tslaw": ACC.TSLAW_THREADS, "tsc": ACC.TSC_THREADS, "das": ACC.DAS_THREADS}


def get_page(c, p, tries=15):
    last = None
    for i in range(tries):
        try:
            return c.get_schedules(page=p, limit=100)
        except Exception as e:
            last = e
            time.sleep(min(40, 3 + 4 * i))
    raise last


def main():
    c = get_client()
    docs = []
    for p in range(1, 150):
        r = get_page(c, p)
        b = r.get("docs", [])
        if not b:
            break
        docs += b
        if len(b) < 100:
            break
    json.dump(docs, open("/tmp/all_schedules.json", "w"), ensure_ascii=False)
    print("TOTAL:", len(docs))
    from datetime import datetime, timedelta, timezone
    WIB = timezone(timedelta(hours=7))
    target = sys.argv[1] if len(sys.argv) > 1 else "2026-09-21"
    for name, aid in TH.items():
        print(f"\n== {name} ({aid}) jadwal {target} WIB")
        rows = []
        for d in docs:
            if d.get("accountId") != aid:
                continue
            sa = d.get("scheduleAt") or ""
            try:
                dt = datetime.fromisoformat(sa.replace("Z", "+00:00")).astimezone(WIB)
            except Exception:
                continue
            if dt.strftime("%Y-%m-%d") == target:
                rows.append((dt.strftime("%H:%M"), d.get("status"), d.get("_id"),
                             (d.get("description") or "")[:70].replace("\n", " ")))
        for r in sorted(rows):
            print("   ", r[0], r[1], r[2], "|", r[3])
        if not rows:
            print("    (tidak ada)")


main()
