#!/usr/bin/env python3
"""Detail jadwal Threads 5 akun pada tanggal WIB tertentu: createdAt, status, deskripsi penuh."""
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-09-22"
client = get_client()

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

all_docs = []
for p in range(1, 200):
    got = None
    for i in range(15):
        try:
            got = client.get_schedules(page=p, limit=100)
            break
        except Exception as e:
            print(f"  retry page {p}: {str(e)[:70]}", file=sys.stderr)
            time.sleep(min(40, 3 + 4 * i))
    if got is None:
        raise RuntimeError(f"page {p} gagal")
    b = got.get("docs", [])
    if not b:
        break
    all_docs.extend(b)
    if len(b) < 100:
        break

def wib(sa):
    if not sa:
        return None
    try:
        return datetime.fromisoformat(str(sa).replace("Z", "+00:00")).astimezone(WIB)
    except Exception:
        return None

sel = []
for d in all_docs:
    aid = d.get("accountId")
    if aid not in IDS:
        continue
    t = wib(d.get("scheduleAt"))
    if not t or t.strftime("%Y-%m-%d") != TARGET:
        continue
    sel.append((t, IDS[aid], d))
sel.sort(key=lambda x: x[0])

for t, acc, d in sel:
    c = wib(d.get("createdAt")) if d.get("createdAt") else None
    print("=" * 70)
    print(f"{acc:11} {t.strftime('%H:%M')} WIB | status={d.get('status')} | type={d.get('type')} | id={d.get('_id')}")
    print(f"createdAt={c.strftime('%Y-%m-%d %H:%M') if c else d.get('createdAt')}  title={(d.get('title') or '')[:60]}")
    print((d.get("description") or "")[:600])
print("=" * 70)
print(f"TOTAL {len(sel)} jadwal pada {TARGET}")
