#!/usr/bin/env python3
"""Audit: gambar mana (Threads & LinkedIn) yang masih pakai navy lama #0D4761 / #1E40AF."""
import json
import os
import sys
from collections import defaultdict
from datetime import datetime, timezone

sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import ReplizClient, ACC

DOCS = None
if os.path.exists("/tmp/ss_audit_all.json"):
    DOCS = json.load(open("/tmp/ss_audit_all.json"))
    print("pakai dump lokal:", len(DOCS), "jadwal")
else:
    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
    DOCS = docs
    json.dump(docs, open("/tmp/ss_audit_all.json", "w"))
    print("fetch baru:", len(DOCS))

ACCNAME = {v: k for k, v in vars(ACC).items() if isinstance(v, str)}
now = datetime.now(timezone.utc)
rows = []
for s in DOCS:
    if (s.get("status") or "").lower() not in ("pending", "scheduled", "draft"):
        continue
    sa = s.get("scheduleAt") or ""
    try:
        if datetime.fromisoformat(sa.replace("Z", "+00:00")) < now:
            continue
    except Exception:
        continue
    medias = [m.get("url", "") for m in (s.get("medias") or [])]
    if not medias:
        continue
    rows.append((ACCNAME.get(s.get("accountId"), s.get("accountId")), s.get("type"), sa[:16],
                 [os.path.basename(m.split("?")[0]) for m in medias]))

by_acc = defaultdict(list)
for r in rows:
    by_acc[r[0]].append(r)

print("\n=== JADWAL FUTURE YANG PUNYA GAMBAR (per akun) ===")
for acc in sorted(by_acc):
    items = by_acc[acc]
    print("\n%-28s %d jadwal, %d media unik" % (acc, len(items),
          len({f for i in items for f in i[3]})))
    files = sorted({f for i in items for f in i[3]})
    for f in files:
        print("    ", f)
    print("     contoh slot:", items[0][2], "->", items[-1][2])
