#!/usr/bin/env python3
"""Verifikasi jadwal pending Repliz untuk akun TS Law (LinkedIn/FB/Threads)."""
import json
from datetime import datetime, timezone
import repliz_client as rc

ACC_TSLAW_LI = "6a60101562caae1e04e901ac"
ACC_TSLAW_FB = "6a3b41d1c5ff4ce3a32753e8"
ACC_TSLAW_TH = "6a35f8b7c5ff4ce3a322b2ed"
NAMES = {ACC_TSLAW_LI: "TSLAW_LINKEDIN", ACC_TSLAW_FB: "TSLAW_FB", ACC_TSLAW_TH: "TSLAW_THREADS"}

client = rc.get_client()
docs = []
page = 1
while True:
    data = client.get_schedules(page=page, limit=100)
    items = data.get("docs") or []
    docs.extend(items)
    total_pages = data.get("totalPages", 1)
    if page >= total_pages or not items:
        break
    page += 1

print(f"totalDocs={data.get('totalDocs')} fetched={len(docs)} pages={page}")

now = datetime.now(timezone.utc)
rows = []
for s in docs:
    aid = str(s.get("accountId") or "")
    if aid in NAMES:
        at_raw = s.get("scheduleAt") or ""
        try:
            at = datetime.fromisoformat(at_raw.replace("Z", "+00:00"))
        except Exception:
            at = None
        rows.append({
            "at": at_raw,
            "future": bool(at and at > now),
            "acc": NAMES[aid],
            "status": s.get("status", ""),
            "desc": (s.get("description") or s.get("content") or "")[:90],
            "id": s.get("_id", ""),
        })

future = [r for r in rows if r["future"]]
future.sort(key=lambda r: r["at"])
print(f"\ntotal jadwal akun TS Law tercatat: {len(rows)}")
print(f"JADWAL MASA DEPAN (belum lewat): {len(future)}")
for r in future:
    print(f"  {r['at']} | {r['acc']} | {r['status']} | {r['desc']} | id={r['id']}")

# 5 jadwal terakhir (sudah lewat) per akun sebagai konteks
recent = sorted([r for r in rows if not r["future"]], key=lambda r: r["at"], reverse=True)[:8]
print("\n5-8 jadwal terbaru yang sudah lewat:")
for r in recent:
    print(f"  {r['at']} | {r['acc']} | {r['status']} | {r['desc']}")
