#!/usr/bin/env python3
"""hc58 audit: dump jadwal + jejak T/LI/FB per artikel HC + artikel baru + slot."""
import json, re, sys, time
from datetime import datetime, timezone
WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from repliz_client import ReplizClient, ACC

c = ReplizClient()
docs = []
page = 1
while True:
    d = c.get("/public/schedule?page=%d&limit=100" % page)
    docs.extend(d.get("docs", []))
    if page >= (d.get("totalPages") or 1):
        break
    page += 1
print("dump %d docs" % len(docs))
json.dump(docs, open("/tmp/repliz_all_20261007.json", "w"))

url_re = re.compile(r"studiosoft\.id/([a-z0-9\-]+)")
HC = {
    "digital-marketing-rumah-sakit-indikator": "hc56",
    "seo-rumah-sakit": "hc55",
    "jasa-digital-marketing-rs": "hc53",
    "pembuatan-website-rumah-sakit": "hc52",
    "jasa-digital-marketing-klinik": "hc54",
    "panduan-seo-klinik-rumah-sakit": "hc42/hc57",
    "google-business-profile-klinik": "hc44",
    "cara-klinik-kecantikan-di-surabaya-bisa-ditemukan-lebih-cepat-di-google": "hc46",
    "strategi-seo-terbaik-untuk-klinik-kecantikan-di-surabaya-tingkatkan-pasien-lewat-google": "hc49",
    "7-aplikasi-mental-health-anak-usia-4-10-tahun-yang-harus-dicoba-orang-tua": "hc51",
    "10-channel-digital-marketing-rumah-sakit-yang-wajib-dikelola-di-era-online": "hc48",
    "7-strategi-digital-marketing-rumah-sakit-untuk-menambah-pasien-setiap-bulan": "hc47",
    "rs-klinik-digital-marketing-2026": "hc43",
    "9-contoh-konten-digital-marketing-rumah-sakit-yang-edukatif-dan-tetap-etis": "hc45",
    "tips-seo-digital-marketing-surabaya-optimasi-local-untuk-klinik-dan-bengkel-lokal": "hc50",
}


def slugs_of(d):
    return url_re.findall((d.get("description") or "") + " " + (d.get("title") or ""))


def status_of(d):
    return (d.get("status") or "").lower()


accs = {"T": ACC.STUDIOSOFT_THREADS, "LI": ACC.STUDIOSOFT_LINKEDIN, "FB": ACC.STUDIOSOFT_FB}
print("\n== JEJAK per artikel HC (semua status) ==  NOW UTC:", datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M"))
for s, tag in HC.items():
    row = []
    for k, aid in accs.items():
        hits = [d for d in docs if d.get("accountId") == aid and s in slugs_of(d)]
        succ = [d for d in hits if status_of(d) == "success"]
        pend = [d for d in hits if status_of(d) in ("pending", "scheduled", "draft")]
        last = max([(d.get("scheduleAt") or "") for d in succ], default="-")[:16]
        futsched = sorted((d.get("scheduleAt") or "")[:16] for d in pend
                          if (d.get("scheduleAt") or "")[:19] > datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S"))
        row.append("%s:tot%d succ%d pend%d last=%s fut=%s" % (k, len(hits), len(succ), len(pend), last, futsched[:2]))
    print("  %-18s %s" % (tag, s[:60]))
    print("     " + " | ".join(row))

print("\n== LI queue slugs (pending) ==")
li = set()
for d in docs:
    if d.get("accountId") == ACC.STUDIOSOFT_LINKEDIN and status_of(d) in ("pending", "scheduled", "draft"):
        li |= set(slugs_of(d))
print(" distinct LI slugs:", len(li))
for s in HC:
    print("  LI queue has %-70s %s" % (s[:70], s in li))

print("\n== THREADS 09:00 WIB (02:00Z) booked ==")
booked = sorted(set((d.get("scheduleAt") or "")[:16] for d in docs
                    if d.get("accountId") == ACC.STUDIOSOFT_THREADS
                    and (d.get("scheduleAt") or "")[11:16] == "02:00"
                    and status_of(d) in ("pending", "scheduled", "draft")))
print(" ", booked)

print("\n== FB 19:30 WIB (12:30Z) booked ==")
fbb = sorted(set((d.get("scheduleAt") or "")[:16] for d in docs
                 if d.get("accountId") == ACC.STUDIOSOFT_FB
                 and (d.get("scheduleAt") or "")[11:16] == "12:30"
                 and status_of(d) in ("pending", "scheduled", "draft")))
print(" ", fbb)

print("\n== LI slots booked (2026-10-07 .. 2026-10-20) ==")
lib = sorted(set((d.get("scheduleAt") or "")[:16] for d in docs
                 if d.get("accountId") == ACC.STUDIOSOFT_LINKEDIN
                 and status_of(d) in ("pending", "scheduled", "draft")))
print(" ", lib[:40])
