#!/usr/bin/env python3
"""Repliz: (1) uji keterjangkauan host media, (2) inventaris SEMUA jadwal pending (termasuk draf parkir)."""
import json, re, sys, time, urllib.request, urllib.error
from collections import defaultdict

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from repliz_client import get_client, ACC          # noqa: E402

NAMA = {getattr(ACC, n): n for n in dir(ACC) if not n.startswith("_")}
client = get_client()

print("=== 1. uji host media ===")
UJI = [
    "https://mantapserver.tail3947bb.ts.net/openclaw-img/tslaw_edu_13.jpg",
    "https://mantapserver.tail3947bb.ts.net/openclaw-img/ss_story_hc39.jpg",
    "https://mantapserver.tail3947bb.ts.net/openclaw-img/tsc_reel_flek_01.mp4",
]
for u in UJI:
    t0 = time.time()
    try:
        req = urllib.request.Request(u, headers={"User-Agent": "Mozilla/5.0"}, method="GET")
        with urllib.request.urlopen(req, timeout=45) as x:
            n = len(x.read())
            print(f"   {x.status} | {time.time()-t0:5.1f}s | {n:>9} byte | {x.headers.get('content-type')} | {u.split('/')[-1]}")
    except urllib.error.HTTPError as e:
        print(f"   HTTP {e.code} | {time.time()-t0:5.1f}s | {u.split('/')[-1]}")
    except Exception as e:
        print(f"   GAGAL {type(e).__name__} | {time.time()-t0:5.1f}s | {u.split('/')[-1]} | {str(e)[:60]}")

print("\n=== 2. inventaris jadwal PENDING ===")
semua = []
page = 1
while True:
    d = client.get_schedules(page=page, limit=100)
    docs = d.get("docs", []) if isinstance(d, dict) else []
    semua += docs
    if len(docs) < 100:
        break
    page += 1

pending = [s for s in semua if s.get("status") == "pending"]
per_akun = defaultdict(lambda: {"parkir": [], "masa_depan": []})
for s in pending:
    akun = NAMA.get(s.get("accountId"), s.get("accountId"))
    kapan = str(s.get("scheduleAt") or "")
    if kapan >= "2090":
        per_akun[akun]["parkir"].append(s)
    else:
        per_akun[akun]["masa_depan"].append(s)

print(f"total pending: {len(pending)}\n")
print(f"{'akun':<24} {'parkir':>7} {'terjadwal':>10}  slot terjadwal berikutnya")
for akun in sorted(per_akun):
    a = per_akun[akun]
    depan = sorted(a["masa_depan"], key=lambda s: str(s.get("scheduleAt")))
    pertama = str(depan[0].get("scheduleAt"))[:16] if depan else "-"
    print(f"{akun:<24} {len(a['parkir']):>7} {len(a['masa_depan']):>10}  {pertama}")

json.dump({k: {"parkir": [s.get("_id") for s in v["parkir"]],
               "depan": [s.get("_id") for s in v["masa_depan"]]} for k, v in per_akun.items()},
          open(f"{WS}/drafts/repliz_pending.json", "w"), indent=1)
print("\n→ drafts/repliz_pending.json")
