#!/usr/bin/env python3
"""Cek jadwal Repliz 11 Okt 2026 (semua akun Threads) + daftar link yang sudah dipakai di log."""
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 = "2026-10-11"
LOG = "/home/mantapman/.hermes/profiles/atun/workspace/log_threads_harian.json"

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

client = get_client()

# --- used links dari log ---
log = json.load(open(LOG))
used = set()
for d, per_acc in (log.get("threads_used_links") or {}).items():
    for a, items in per_acc.items():
        for it in items:
            u = (it.get("url") or "").rstrip("/").lower()
            if u:
                used.add(u)
print(f"== LOG: {len(used)} link sudah dipakai (s/d {log.get('last_date')})")
print("-- 5 tanggal terakhir yang tercatat --")
for d in sorted((log.get("threads_used_links") or {}).keys())[-5:]:
    print(" ", d, json.dumps(log["threads_used_links"][d], ensure_ascii=False)[:600])

# --- semua jadwal ---
all_docs = []
for p in range(1, 150):
    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} {i}: {str(e)[:50]}")
            time.sleep(3 + 2 * i)
    if got is None:
        print("!! gagal ambil page", p)
        break
    b = got.get("docs", [])
    if not b:
        break
    all_docs.extend(b)
    if len(b) < 100:
        break

print(f"\n== API: {len(all_docs)} jadwal terbaca")
buckets = {}
for d in all_docs:
    sa = d.get("scheduleAt")
    if not sa:
        continue
    try:
        dt = datetime.fromisoformat(str(sa).replace("Z", "+00:00")).astimezone(WIB)
    except Exception:
        continue
    key = dt.strftime("%Y-%m-%d")
    buckets.setdefault(key, []).append((dt.strftime("%H:%M"), ACC_NAMES.get(d.get("accountId"), d.get("accountId")), d.get("status"), d.get("type"), (d.get("description") or "")[:90].replace("\n", " "), d.get("_id")))

for k in sorted(buckets.keys())[-4:]:
    print(f"\n--- {k} ({len(buckets[k])} jadwal) ---")
    for row in sorted(buckets[k]):
        print("  ", " | ".join(str(x) for x in row))

print(f"\n===== TARGET {TARGET} =====")
for row in sorted(buckets.get(TARGET, [])):
    print("  ", " | ".join(str(x) for x in row))
