#!/usr/bin/env python3
"""Cek pipeline reel 19:00 & story 07/14/20 IG SS: kapan terakhir, ada pending ke depan?"""
import sys, datetime, collections
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import ReplizClient, ACC

c = ReplizClient()
acc = ACC.STUDIOSOFT_IG
rows = []
page = 1
while True:
    r = c.get_schedules(page=page, limit=100)
    docs = r.get("docs") or r.get("data") or []
    if not docs:
        break
    for d in docs:
        a = d.get("account") or {}
        if (a.get("_id") or a.get("id")) == acc:
            rows.append(d)
    if not r.get("hasNextPage"):
        break
    page += 1
    if page > 40:
        break

def wib(d):
    s = d.get("scheduleAt") or ""
    try:
        return datetime.datetime.fromisoformat(s.replace("Z", "+00:00")) + datetime.timedelta(hours=7)
    except Exception:
        return None

now = datetime.datetime(2026, 10, 14, 2, 0, tzinfo=datetime.timezone.utc)
buckets = collections.defaultdict(list)
for d in rows:
    t = wib(d)
    if t is None:
        continue
    tipe = d.get("type")
    jam = f"{t.hour:02d}:{t.minute:02d}"
    buckets[(tipe, jam)].append((t, d.get("status"), d.get("title")))

print("=== ringkasan per (tipe, jam) ===")
for k in sorted(buckets, key=lambda x: (x[1], x[0])):
    ent = sorted(buckets[k])
    depan = [(t, s) for t, s, _ in ent if t >= now]
    terakhir_lampau = max([t for t, s, _ in ent if t < now], default=None)
    st = collections.Counter(s for _, s, _ in ent)
    print(f"{k[1]} {k[0]:6} | total {len(ent):3} | pending depan {len(depan):2} | "
          f"lampau terakhir {terakhir_lampau} | status {dict(st)}")

print()
print("=== 12 video/reel terakhir (semua status) ===")
vids = sorted([d for d in rows if d.get("type") == "video"], key=lambda d: d.get("scheduleAt") or "")
for d in vids[-12:]:
    t = wib(d)
    print(f"  {t} | {d.get('status'):8} | {d.get('title')}")

print()
print("=== 10 story terakhir (semua status) ===")
sts = sorted([d for d in rows if d.get("type") == "story"], key=lambda d: d.get("scheduleAt") or "")
for d in sts[-10:]:
    t = wib(d)
    print(f"  {t} | {d.get('status'):8} | {d.get('title')}")
