#!/usr/bin/env python3
"""Hentikan klien yang sudah berhenti: hapus jadwal Repliz yang MASIH MENUNGGU + laporkan job cron-nya.

Pakai: python3 stop_klien.py everybe yasma --go
       (tanpa --go = lihat saja)
"""
import json, sys, time

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

ARG = [a for a in sys.argv[1:] if not a.startswith("--")]
GO = "--go" in sys.argv
PETA = {"everybe": "EVERYBE", "yasma": "YASMA", "yasmanatura": "YASMA"}
PENDING = ("pending", "scheduled", "queue", "waiting", "draft")

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

semua, hal = [], 1
while hal <= 12:
    try:
        d = c.get_schedules(page=hal, limit=100)
    except Exception as e:
        print("gagal ambil jadwal:", str(e)[:60])
        break
    docs = d.get("docs") or []
    if not docs:
        break
    semua += docs
    if len(docs) < 100:
        break
    hal += 1
print(f"total jadwal terbaca: {len(semua)}")

for klien in ARG:
    awalan = PETA.get(klien.lower(), klien.upper())
    akun = {aid: nm for aid, nm in nama_akun.items() if nm.startswith(awalan)}
    milik = [x for x in semua if x.get("accountId") in akun]
    tunggu = [x for x in milik if str(x.get("status", "")).lower() in PENDING]
    print(f"\n■ {klien}: {len(milik)} jadwal ditemukan · masih menunggu: {len(tunggu)}")
    for x in tunggu[:6]:
        print(f"   {akun.get(x.get('accountId')):<16} {str(x.get('scheduledAt'))[:16]} "
              f"{str(x.get('description'))[:48]}")
    if not tunggu:
        continue
    json.dump(tunggu, open(f"{WS}/drafts/{klien}_jadwal_backup.json", "w"), ensure_ascii=False, indent=1)
    print(f"   cadangan → drafts/{klien}_jadwal_backup.json")
    if GO:
        hapus = 0
        for x in tunggu:
            try:
                c.delete_schedule(x["id"])
                hapus += 1
            except Exception as e:
                print(f"   gagal hapus {x.get('id')}: {str(e)[:50]}")
            time.sleep(0.25)
        print(f"   ✅ {hapus} jadwal dihapus")

if not GO:
    print("\n(uji — pakai --go untuk menghapus)")
