#!/usr/bin/env python3
"""Cek jadwal Repliz satu akun (default: IG TSC) + kondisi media.

Pakai:  python3 cek_jadwal_akun.py [key_akun] [--all]
        key akun = nama di repliz_client.ACCOUNTS (mis. tsc_ig, tsc_threads)
        --all  = tampilkan juga jadwal yang sudah lewat
Ringkas <= 20 baris; detail penuh ditulis ke cek_jadwal_akun.json
"""
import json
import sys
import datetime
import os

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from repliz_client import ACCOUNTS, get_client  # noqa: E402

WIB = datetime.timezone(datetime.timedelta(hours=7))
KEY = "tsc_ig"
tampil_semua = False
for a in sys.argv[1:]:
    if a == "--all":
        tampil_semua = True
    else:
        KEY = a

acc_id = ACCOUNTS.get(KEY)
if not acc_id:
    print(f"⛔ akun '{KEY}' tidak ada. Pilihan: {', '.join(sorted(ACCOUNTS))}")
    sys.exit(2)

c = get_client()
docs, page = [], 1
while True:
    r = c.get_schedules(page=page, limit=100)
    batch = r.get("docs") or r.get("data") or (r if isinstance(r, list) else [])
    if not batch:
        break
    docs.extend(batch)
    if len(batch) < 100:
        break
    page += 1

def w(iso):
    return datetime.datetime.fromisoformat(iso.replace("Z", "+00:00")).astimezone(WIB)

mine = [d for d in docs if d.get("accountId") == acc_id]
mine.sort(key=lambda x: x.get("scheduleAt") or "")
now = datetime.datetime.now(datetime.timezone.utc)

future = [d for d in mine if d.get("scheduleAt") and w(d["scheduleAt"]) > now]
past = [d for d in mine if d.get("scheduleAt") and w(d["scheduleAt"]) <= now]
belum = [d for d in future if (d.get("status") or "").lower() not in ("published", "posted", "sent")]
gagal = [d for d in mine if (d.get("status") or "").lower() in ("failed", "error", "rejected")]

print(f"AKUN {KEY} ({acc_id}) | total jadwal tersimpan: {len(mine)}")
print(f"lewat: {len(past)} | akan datang: {len(future)} | belum tayang: {len(belum)} | gagal: {len(gagal)}")
print(f"total jadwal semua akun (dump): {len(docs)} | sekarang {now.astimezone(WIB):%Y-%m-%d %H:%M} WIB")
print("--- 8 jadwal terdekat ---")
for d in (future if not tampil_semua else mine)[:8]:
    t = w(d["scheduleAt"]) if d.get("scheduleAt") else None
    med = d.get("medias") or []
    jenis = d.get("type")
    print(f"{t:%d %b %H:%M} WIB | {d.get('status'):<9} | {jenis:<7} | media={len(med)} | "
          f"{(d.get('title') or d.get('description') or '')[:48]!r}")

json.dump(mine, open("cek_jadwal_akun.json", "w"), indent=1)
print("detail -> cek_jadwal_akun.json")
