#!/usr/bin/env python3
"""Recon 2026-10-16/17: state antrean habis (index wrap 0). Cek:
 - apakah item #0 (ss_batch_20260701) sudah pernah tayang (media/URL),
 - slot kosong berikutnya utk Threads StudioSoft & Threads @ukyhandoko,
 - aset standar-16Sep yang masih tersedia tapi belum dipakai.
READ-ONLY.
"""
import json, os, sys
from datetime import datetime, timedelta

ROOT = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, ROOT)
from repliz_client import get_client, ACC
import repliz_openssl_transport
repliz_openssl_transport.install(verbose=False)

c = get_client()
r = c.get_schedules(page=1, limit=100)
pages = (r["totalDocs"] + 99) // 100
docs = list(r["docs"])
for p in range(2, pages + 1):
    docs.extend(c.get_schedules(page=p, limit=100)["docs"])
print("TOTAL JADWAL REPLIZ:", r["totalDocs"], "docs:", len(docs))

def wib(d):
    at = d.get("scheduleAt")
    return None if not at else datetime.fromisoformat(at.replace("Z", "+00:00")) + timedelta(hours=7)

def acc_of(d):
    return d.get("accountId") or (d.get("account") or {}).get("id")

SS_T = "6a335b9ec5ff4ce3a3225c2a"
UKY_T = "6a334e89c5ff4ce3a3225a48"
print("SS_THREADS:", SS_T, "UKY_THREADS:", UKY_T)

# daftar nama media terpakai
used = {}
for d in docs:
    for m in (d.get("medias") or []):
        base = (m.get("url") or "").split("?")[0].rsplit("/", 1)[-1]
        used.setdefault(base, []).append(d)

# 1) item #0 pernah tayang?
print("\n== CEK item #0 (studiosoft_batch/20260701) ==")
q = json.load(open(os.path.join(ROOT, "image_posting_queue.json")))
it0 = q[0]
print("item0:", it0["id"], it0["paths"])
for p in it0["paths"]:
    base = os.path.basename(p)
    hits = [d for d in docs if any(base in (m.get("url") or "") for m in (d.get("medias") or []))]
    print("  ", base, "-> jadwal:", len(hits))
    for d in hits[:3]:
        print("      ", d.get("id"), acc_of(d), wib(d), d.get("status"), d.get("type"))

# 2) semua jadwal Threads StudioSoft (terbaru di atas)
print("\n== JADWAL THREADS STUDIOSOFT (semua) ==")
ss = [d for d in docs if acc_of(d) == SS_T]
ss.sort(key=lambda d: d.get("scheduleAt") or "")
print("jumlah:", len(ss))
for d in ss[-12:]:
    print("  ", wib(d).strftime("%Y-%m-%d %H:%M"), d.get("status"), d.get("type"),
          "| topic:", repr((d.get("topic") or "")[:40]),
          "| media:", [(m.get("url") or "").rsplit("/", 1)[-1][:40] for m in (d.get("medias") or [])][:2])

# 3) slot 08:00 WIB 17-30 Okt & Nov utk kedua akun
print("\n== SLOT (Threads) ==")
for name, aid in (("SS", SS_T), ("UKY", UKY_T)):
    xs = [d for d in docs if acc_of(d) == aid]
    print(" ", name, "total", len(xs))
    for d in sorted(xs, key=lambda d: d.get("scheduleAt") or "")[-20:]:
        print("    ", wib(d).strftime("%Y-%m-%d %H:%M"), d.get("type"), d.get("status"),
              (d.get("topic") or "")[:35])

json.dump([{k: v for k, v in d.items() if k in ("id", "accountId", "scheduleAt", "type", "status", "topic", "title", "medias")} for d in docs],
          open(os.path.join(ROOT, "_recon_dump_20261017.json"), "w"), ensure_ascii=False, indent=1)
print("\ndump -> _recon_dump_20261017.json")
