#!/usr/bin/env python3
"""Cek SEMUA jadwal Threads 5 akun pada tanggal WIB tertentu + daftar link yang sudah dipakai."""
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

print(f"TOTAL jadwal terbaca: {len(all_docs)}")

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

print(f"\n=== Jadwal akun Threads kami pada {TARGET} (WIB) ===")
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
    desc = d.get("description") or ""
    print(f"  {IDS[aid]:11} {t.strftime('%H:%M')} WIB  status={d.get('status')}  id={d.get('_id')}  type={d.get('type')}  len={len(desc)}")
    print(f"      {desc[:150].replace(chr(10),' | ')}")

print(f"\n=== Semua jadwal (semua tanggal) 5 akun Threads — 12 terakhir ===")
rows = [d for d in all_docs if d.get("accountId") in IDS]
rows.sort(key=lambda d: str(d.get("scheduleAt") or ""), reverse=True)
for d in rows[:12]:
    t = wib(d.get("scheduleAt"))
    print(f"  {IDS.get(d.get('accountId')):11} {t.strftime('%Y-%m-%d %H:%M') if t else '?'} status={d.get('status')}")
