#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Audit kata "mitos" di SEMUA jadwal Repliz, dikelompokkan per akun.

Dipakai setelah peringatan Bos (6 Okt 2026): seri "Mitos atau Fakta" milik klien TS LAW —
pastikan tidak ada akun lain yang memakai framing itu.

Pakai: python3 audit_kata_mitos.py [kata]
"""
import sys, collections, urllib.parse, urllib.request, json

sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import HEADERS, BASE

kata = (sys.argv[1] if len(sys.argv) > 1 else "mitos").lower()
docs, page = [], 1
while True:
    q = urllib.parse.urlencode({"page": page, "limit": 100})
    req = urllib.request.Request(f"{BASE}/public/schedule?{q}", headers=HEADERS)
    with urllib.request.urlopen(req, timeout=60) as r:
        d = json.loads(r.read().decode())
    batch = d.get("docs") or []
    docs += batch
    if not batch or page * 100 >= (d.get("totalDocs") or 0):
        break
    page += 1

print(f"total jadwal: {len(docs)} | cari kata: {kata!r}")
hits = collections.defaultdict(lambda: {"pending": 0, "success": 0, "error": 0, "lain": 0, "contoh": []})
for x in docs:
    isi = " ".join([x.get("title") or "", x.get("description") or "", x.get("topic") or ""]).lower()
    if kata not in isi:
        continue
    nama = (x.get("account") or {}).get("name") or "?"
    st = x.get("status") or "lain"
    h = hits[nama]
    h[st if st in ("pending", "success", "error") else "lain"] += 1
    if len(h["contoh"]) < 2:
        h["contoh"].append((x.get("scheduleAt"), (x.get("title") or "")[:45]))

for nama, h in sorted(hits.items(), key=lambda kv: -(kv[1]["pending"] + kv[1]["success"] + kv[1]["error"])):
    print(f"\n{nama}: pending={h['pending']} success={h['success']} error={h['error']} lain={h['lain']}")
    for t, j in h["contoh"]:
        print(f"   {t} | {j}")
