#!/usr/bin/env python3
"""Rekap SEMUA jadwal Threads per akun (semua status) + fokus hari ini (WIB)."""
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))
TARGET = sys.argv[1] if len(sys.argv) > 1 else "2026-10-17"

client = get_client()
ACCOUNTS = {
    "studiosoft": ACC.STUDIOSOFT_THREADS,
    "uky": ACC.UKY_THREADS,
    "tslaw": ACC.TSLAW_THREADS,
    "tsc": ACC.TSC_THREADS,
    "das": ACC.DAS_THREADS,
}
REV = {v: k for k, v in ACCOUNTS.items()}

docs = []
for p in range(1, 60):
    got = None
    for i in range(12):
        try:
            got = client.get_schedules(page=p, limit=100)
            break
        except Exception as e:
            print(f"retry p{p} {i}: {str(e)[:60]}")
            time.sleep(min(30, 3 + 3 * i))
    if got is None:
        raise SystemExit(f"gagal halaman {p}")
    b = got.get("docs", [])
    if not b:
        break
    docs.extend(b)
    if len(b) < 100:
        break

print(f"total {len(docs)} jadwal")
for key, aid in ACCOUNTS.items():
    rows = []
    for d in docs:
        if d.get("accountId") != aid:
            continue
        sa = d.get("scheduleAt")
        try:
            dt = datetime.fromisoformat(str(sa).replace("Z", "+00:00")).astimezone(WIB)
        except Exception:
            continue
        rows.append((dt, d.get("_id"), d.get("status"), (d.get("description") or "")[:70].replace("\n", " ")))
    rows.sort()
    today = [r for r in rows if r[0].strftime("%Y-%m-%d") == TARGET]
    print(f"\n=== {key} ({aid}) — {len(rows)} total, {len(today)} pada {TARGET}")
    for dt, sid, st, desc in today:
        print(f"   {dt.strftime('%H:%M')} {st:9} {sid} | {desc}")
