#!/usr/bin/env python3
"""Probe read-only: status reply untuk postingan Threads baru (createdAt >= 2026-10-16)."""
import datetime, json
from collections import Counter, defaultdict
from repliz_client import get_client

AKUN = {
    "6a334e89c5ff4ce3a3225a48": "uky",
    "6a335b9ec5ff4ce3a3225c2a": "ss",
    "6a35f8b7c5ff4ce3a322b2ed": "tslaw",
    "6a39e461c5ff4ce3a3233e09": "das",
    "6a4bbc5920e4f4f195e52960": "tsc",
    "6a44ed1920e4f4f195d8ecf7": "everybe",
}
WIB = datetime.timezone(datetime.timedelta(hours=7))
c = get_client()
docs, page = [], 1
while page <= 120:
    r = c.get_schedules(page=page, limit=100)
    b = r.get("docs") or []
    docs += b
    if len(b) < 100:
        break
    page += 1

def induk_dari(d):
    for r in d.get("replies") or []:
        if isinstance(r, dict):
            k = [x for x in r.keys() if x.isdigit()]
            if 8 <= len(k) < 40:
                return "".join(str(r[x]) for x in sorted(k, key=int))
    return None

anak = defaultdict(int); id_anak = set()
for d in docs:
    p = induk_dari(d)
    if p:
        id_anak.add(d.get("_id")); anak[p] += 1

rows = []
for d in docs:
    a = AKUN.get(d.get("accountId"))
    if not a:
        continue
    if (d.get("createdAt") or "")[:10] < "2026-10-16":
        continue
    iso = d.get("scheduleAt") or ""
    try:
        t = datetime.datetime.fromisoformat(iso.replace("Z", "+00:00")).astimezone(WIB)
    except Exception:
        continue
    ada = [x for x in (d.get("replies") or []) if isinstance(x, dict) and (x.get("description") or x.get("text") or "").strip()]
    n = len(ada) + anak.get(d.get("_id"), 0)
    rows.append((str(t.date()), t.strftime("%H:%M"), a, d.get("status"), d.get("type"), n,
                 d.get("_id") in id_anak, (d.get("title") or "")[:28], d.get("_id")))

rows.sort()
print("total jadwal baru (createdAt>=16 Okt) akun Threads klien:", len(rows))
per = Counter((r[0], r[2]) for r in rows)
print("--- 20-22 Okt ---")
for r in rows:
    if "2026-10-20" <= r[0] <= "2026-10-22":
        print(r)
print("--- hari dengan >1 post baru (per akun) ---")
for k, v in sorted(per.items()):
    if v > 1:
        print(k, v)
print("--- pending tanpa 2 reply, 20-22 Okt ---")
for r in rows:
    if "2026-10-20" <= r[0] <= "2026-10-22" and r[3] == "pending" and r[5] < 2 and not r[6]:
        print("KURANG", r)
