#!/usr/bin/env python3
"""Offboarding LEIT, Nucleasoft, Warung Pak Otto: inventaris akun Repliz + hitung jadwalnya."""
import json, re, sys
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. daftar akun di Repliz ===")
akun = []
page = 1
while True:
    d = client.get(f"/public/account?page={page}&limit=100")
    docs = d.get("docs", []) if isinstance(d, dict) else []
    akun += docs
    if len(docs) < 100:
        break
    page += 1
print(f"total akun: {len(akun)}")

KATA = ("leit", "nuclea", "otto", "soto", "warung")
print("\n=== 2. akun yang cocok dengan klien yang diputus ===")
peta_akun = {}
for a in akun:
    nama = str(a.get("name") or "")
    if any(k in nama.lower() for k in KATA):
        atribut = NAMA.get(a.get("_id"), "?")
        peta_akun[a["_id"]] = {"nama": nama, "platform": a.get("platform"), "atribut": atribut}
        print(f"   {a.get('_id')} | {nama[:40]:<42} | {str(a.get('platform'))[:10]:<10} | ACC: {atribut}")
if not peta_akun:
    print("   (tidak ada yang cocok dari nama akun — cek juga lewat nama di ACC)")

print("\n=== 3. atribut ACC yang mengarah ke klien tersebut ===")
for n in dir(ACC):
    if n.startswith("_"):
        continue
    if any(k in n.lower() for k in ("leit", "nuclea", "soto", "otto")):
        print(f"   {n:<22} → {getattr(ACC, n)}  {'(akun ada di inventory)' if getattr(ACC, n) in peta_akun else '(tidak ada di inventory)'}")

print("\n=== 4. hitung jadwal per akun tersebut ===")
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
print(f"total jadwal: {len(semua)}")

target_ids = set(peta_akun) | {getattr(ACC, n) for n in dir(ACC) if not n.startswith("_")
                              and any(k in n.lower() for k in ("leit", "nuclea", "soto", "otto"))}
ringkas = defaultdict(lambda: defaultdict(int))
for s in semua:
    if s.get("accountId") in target_ids:
        atribut = NAMA.get(s.get("accountId"), s.get("accountId"))
        ringkas[atribut][s.get("status")] += 1

total_target = 0
for atribut in sorted(ringkas):
    baris = dict(ringkas[atribut])
    n = sum(baris.values())
    total_target += n
    print(f"   {atribut:<20} {n:>4} jadwal → {baris}")
print(f"\nTOTAL jadwal milik klien yang diputus: {total_target}")

json.dump({"akun": peta_akun, "atribut": {k: list(v) for k, v in ringkas.items()},
           "ids": sorted(target_ids)}, open(f"{WS}/drafts/offboarding_target.json", "w"), indent=1)
print("→ drafts/offboarding_target.json")
