#!/usr/bin/env python3
"""READ-ONLY: cocokkan longgar (30 karakter awal) caption uji dengan jadwal uky 5-12 Okt."""
import json, re, sys
from collections import Counter
from datetime import datetime, timedelta, timezone

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

CAP = [m.group(1) for m in re.finditer(r'^\s{4}"(.+?)",$', open(f"{WS}/threads_uji21.py").read(), re.M)]
CAP = [c for c in CAP if not c.startswith("Kalau anggarannya")]  # buang yang bukan pola Kalian/Klien/Saya? tidak, biarkan
print("caption uji:", len(CAP))

client = get_client()
semua, page = [], 1
while True:
    d = client.get_schedules(page=page, limit=100)
    rows = d.get("docs", []) if isinstance(d, dict) else []
    semua += rows
    if len(rows) < 100:
        break
    page += 1

rows = []
for s in semua:
    if s.get("accountId") != ACC.UKY_THREADS:
        continue
    kapan = str(s.get("scheduleAt") or "")
    if not kapan or kapan >= "2090":
        continue
    try:
        t = datetime.fromisoformat(kapan.replace("Z", "+00:00"))
    except Exception:
        continue
    if not (datetime(2026, 10, 5, tzinfo=timezone.utc) <= t <= datetime(2026, 10, 12, 23, 59, tzinfo=timezone.utc)):
        continue
    desc = str(s.get("description") or "")
    cocok = next((c for c in CAP if desc.strip() and c[:30].lower() in desc.lower()), None)
    rows.append({"wib": (t + timedelta(hours=7)).strftime("%d %b %H:%M"), "status": s.get("status"),
                 "uji": bool(cocok), "desc": desc[:55].replace("\n", " ")})

rows.sort(key=lambda x: x["wib"])
print("\ntotal postingan uky 5-12 Okt:", len(rows), "| status:", dict(Counter(r["status"] for r in rows)))
print("bergaya uji:", sum(1 for r in rows if r["uji"]))
print("\n-- postingan bergaya uji --")
for r in rows:
    if r["uji"]:
        print(f"  {r['wib']} | {r['status']:<8} | {r['desc']}")
print("\n-- sisa postingan (jam posting) --")
print(Counter(r["wib"][-5:][:2] + ":xx" for r in rows if not r["uji"]))
