#!/usr/bin/env python3
"""Audit Threads: berapa jadwal pending per akun, berapa yang sudah punya replies."""
import json, datetime, collections
docs = json.load(open('/tmp/tsc_sched_all.json'))
WIB = datetime.timezone(datetime.timedelta(hours=7))
AKUN = {
    "6a334e89c5ff4ce3a3225a48": "uky_threads",
    "6a335b9ec5ff4ce3a3225c2a": "studiosoft_threads",
    "6a35f8b7c5ff4ce3a322b2ed": "tslaw_threads",
    "6a39e461c5ff4ce3a3233e09": "das_threads",
    "6a4bbc5920e4f4f195e52960": "tsc_threads",
    "6a44ed1920e4f4f195d8ecf7": "everybe_threads",
    "6a5f4af462caae1e04e8b9a6": "leit_threads(berhenti)",
    "6a86d84b62caae1e04fff12c": "soto_threads(berhenti)",
}
now = datetime.datetime.now(datetime.timezone.utc)
ring = collections.defaultdict(lambda: {"total": 0, "pending": 0, "pending_tanpa_reply": 0,
                                        "pending_dgn_reply": 0, "by_topic": collections.Counter()})
for d in docs:
    a = AKUN.get(d.get("accountId"))
    if not a:
        continue
    r = ring[a]
    r["total"] += 1
    if d.get("status") == "pending" and (d.get("scheduleAt") or "") > now.strftime("%Y-%m-%dT%H:%M:%S"):
        r["pending"] += 1
        n = len(d.get("replies") or [])
        if n >= 2:
            r["pending_dgn_reply"] += 1
        else:
            r["pending_tanpa_reply"] += 1
            r["by_topic"][(d.get("topic") or "(tanpa topic)")[:30]] += 1
print(f"{'akun':22s} {'total':>6s} {'pending':>8s} {'pending>=2reply':>16s} {'pending TANPA':>14s}")
for a, r in sorted(ring.items()):
    print(f"{a:22s} {r['total']:6d} {r['pending']:8d} {r['pending_dgn_reply']:16d} {r['pending_tanpa_reply']:14d}")
print("\nContoh topic pending tanpa reply (top 8 per akun):")
for a, r in sorted(ring.items()):
    if r["pending_tanpa_reply"]:
        print(" ", a, "->", r["by_topic"].most_common(8))
