#!/usr/bin/env python3
"""Audit hc39 (18 Sep 2026): stok artikel healthcare SS + status topik di Threads SS."""
import json, os, re, sys, subprocess
from datetime import datetime, timezone, timedelta

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from repliz_client import ReplizClient, ACC

c = ReplizClient()

def all_docs():
    docs, page = [], 1
    while True:
        d = c.get("/public/schedule?page=%d&limit=100" % page)
        docs.extend(d.get("docs", []))
        tp = d.get("totalPages") or 1
        if page >= tp:
            break
        page += 1
    return docs

docs = all_docs()
print("TOTAL JADWAL:", len(docs))
json.dump(docs, open("/tmp/repliz_all_20260918.json", "w"))

SS_T = ACC.STUDIOSOFT_THREADS
SS_LI = ACC.STUDIOSOFT_LINKEDIN
SS_FB = ACC.STUDIOSOFT_FB
SS_IG = ACC.STUDIOSOFT_IG

def show(aid, name):
    rows = [d for d in docs if d.get("accountId") == aid]
    print("\n=== %s (%s): %d jadwal ===" % (name, aid, len(rows)))
    pend = [r for r in rows if (r.get("status") or "").lower() in ("pending", "scheduled", "draft")]
    print("  pending/scheduled:", len(pend))
    ats = sorted((r.get("scheduleAt") or "")[:19] for r in pend)
    if ats:
        print("  rentang:", ats[0], "->", ats[-1])
    err = [r for r in rows if (r.get("status") or "").lower() == "error"]
    print("  error:", len(err))
    for e in err:
        print("    ERR", (e.get("scheduleAt") or "")[:16], (e.get("title") or "")[:70], "|", (e.get("errorMessage") or e.get("error") or "")[:60])

for aid, name in ((SS_T, "SS_THREADS"), (SS_LI, "SS_LINKEDIN"), (SS_FB, "SS_FB"), (SS_IG, "SS_IG")):
    show(aid, name)

# Semua judul SS_THREADS unik + jumlah
print("\n=== TOPIK SS_THREADS (unik, urut judul) ===")
titles = {}
for d in docs:
    if d.get("accountId") != SS_T:
        continue
    t = (d.get("title") or "").strip()
    s = (d.get("status") or "").lower()
    titles.setdefault(t, []).append(s)
for t in sorted(titles):
    print("  %-75s %s" % (t[:75], sorted(set(titles[t]))))

# Keywords healthcare di seluruh SS threads descriptions
print("\n=== SS_THREADS desc mengandung kata healthcare ===")
KW = re.compile(r"rumah sakit|klinik|pasien|dokter|kesehatan|medis|apotek|faskes", re.I)
for d in docs:
    if d.get("accountId") != SS_T:
        continue
    desc = d.get("description") or ""
    if KW.search(desc) or KW.search(d.get("title") or ""):
        print("  %s | %-9s | %s | %s" % ((d.get("scheduleAt") or "")[:16], d.get("status"),
                                         (d.get("title") or "")[:55], (desc[:80].replace("\n", " "))))
