#!/usr/bin/env python3
"""Audit cepat status StudioSoft (Threads/FB/LinkedIn/IG) utk cron hc37."""
import json, re, sys
from datetime import datetime, timedelta, timezone
sys.path.insert(0, "/home/mantapman/.openclaw/workspace-atun")
from repliz_client import ReplizClient, ACC

c = ReplizClient()
docs = []
page = 1
while True:
    d = c.get("/public/schedule?page=%d&limit=100" % page)
    docs.extend(d.get("docs", []))
    if page >= (d.get("totalPages") or 1):
        break
    page += 1
json.dump(docs, open("/tmp/ss_audit_all.json", "w"))
print("total schedules:", len(docs))

ACCS = {
    "SS_THREADS": ACC.STUDIOSOFT_THREADS,
    "SS_FB": ACC.STUDIOSOFT_FB,
    "SS_LI": ACC.STUDIOSOFT_LINKEDIN,
    "SS_IG": ACC.STUDIOSOFT_IG,
}
now = datetime.now(timezone.utc)
for name, aid in ACCS.items():
    mine = [s for s in docs if s.get("accountId") == aid]
    pend = [s for s in mine if (s.get("status") or "").lower() in ("pending", "scheduled", "draft")]
    fut = [s for s in pend if datetime.fromisoformat((s.get("scheduleAt") or "").replace("Z", "+00:00")) >= now]
    fut.sort(key=lambda s: s["scheduleAt"])
    print("\n=== %s (%s) total=%d pending=%d future=%d" % (name, aid, len(mine), len(pend), len(fut)))
    if fut:
        print("   first:", fut[0]["scheduleAt"], "| last:", fut[-1]["scheduleAt"], "| replies>0:", sum(1 for s in fut if s.get("replies")))
    # 09:00 WIB occupancy (02:00Z)
    days9 = sorted({s["scheduleAt"][:10] for s in fut if s["scheduleAt"][11:13] == "02"})
    print("   hari terisi 09:00 WIB:", days9[:20], "... total", len(days9))
    # all-slot occupancy next 14 days
    occ = {}
    for s in fut:
        occ.setdefault(s["scheduleAt"][:10], []).append(s["scheduleAt"][11:16])
    for day in sorted(occ)[:16]:
        print("     ", day, sorted(occ[day]))

# hc36/hc20 status
print("\n=== HC MEDIA STATUS (semua status) ===")
for tag in ["ss_hc36_klinikdm_01", "ss_hc20_edukasi_01", "ss_hc19_landing_01"]:
    hits = [s for s in docs if any(tag in (m.get("url") or "") for m in (s.get("medias") or []))]
    for s in hits:
        print("  %-26s %s %s %s" % (tag, s.get("accountId"), s.get("status"), s.get("scheduleAt")))
        if (s.get("status") or "").lower() == "error":
            print("       err:", (s.get("errorMessage") or "")[:160])
