#!/usr/bin/env python3
"""Dump jadwal Threads 5 akun (semua status) untuk beberapa hari ke depan — read only."""
import sys, json
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))
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,
}

all_docs = []
for p in range(1, 200):
    got = None
    for i in range(10):
        try:
            got = client.get_schedules(page=p, limit=100)
            break
        except Exception as e:
            print(f"retry page {p}: {str(e)[:60]}", file=sys.stderr)
    if got is None:
        raise SystemExit("gagal fetch")
    b = got.get("docs", [])
    if not b:
        break
    all_docs.extend(b)
    if len(b) < 100:
        break

print(f"TOTAL {len(all_docs)} jadwal")
import collections
by_acc = collections.defaultdict(list)
for d in all_docs:
    by_acc[d.get("accountId")].append(d)

start = datetime(2026, 10, 6, 0, 0, tzinfo=WIB)
end = datetime(2026, 10, 13, 0, 0, tzinfo=WIB)
for name, aid in ACC_MAP.items():
    docs = by_acc.get(aid, [])
    fut = []
    for d in docs:
        sa = d.get("scheduleAt")
        if not sa:
            continue
        try:
            dt = datetime.fromisoformat(str(sa).replace("Z", "+00:00")).astimezone(WIB)
        except Exception:
            continue
        if start <= dt < end:
            fut.append((dt, d))
    fut.sort(key=lambda x: x[0])
    print(f"\n=== {name} ({aid}) — {len(docs)} total jadwal, {len(fut)} pada 6-12 Okt ===")
    for dt, d in fut:
        desc = (d.get("description") or "").replace("\n", " ")
        print(f"  {dt.strftime('%Y-%m-%d %H:%M')} | {d.get('type'):7s} | {d.get('status'):10s} | {d.get('topic')!r} | {d.get('title')!r} | len={len(desc)} | {desc[:90]}")
