#!/usr/bin/env python3
"""Analisa hc69: jejak & jadwal Threads/FB/LI per artikel HC + artikel baru 17 Okt."""
import json, re, sys, time
from datetime import datetime, timezone
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import ReplizClient, ACC
import repliz_openssl_transport
repliz_openssl_transport.install(verbose=False)

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
OUT = "/tmp/hc70_analisa.json"

HC_SLUGS = [
 "9-contoh-konten-digital-marketing-rumah-sakit-yang-edukatif-dan-tetap-etis",
 "10-channel-digital-marketing-rumah-sakit-yang-wajib-dikelola-di-era-online",
 "7-strategi-digital-marketing-rumah-sakit-untuk-menambah-pasien-setiap-bulan",
 "cara-klinik-kecantikan-di-surabaya-bisa-ditemukan-lebih-cepat-di-google",
 "strategi-seo-terbaik-untuk-klinik-kecantikan-di-surabaya-tingkatkan-pasien-lewat-google",
 "tips-seo-digital-marketing-surabaya-optimasi-local-untuk-klinik-dan-bengkel-lokal",
 "7-aplikasi-mental-health-anak-usia-4-10-tahun-yang-harus-dicoba-orang-tua",
 "pembuatan-website-rumah-sakit",
 "jasa-digital-marketing-rs",
 "jasa-digital-marketing-klinik",
 "panduan-seo-klinik-rumah-sakit",
 "seo-rumah-sakit",
 "digital-marketing-rumah-sakit-indikator",
 "rs-klinik-digital-marketing-2026",
 "google-business-profile-klinik",
 "kenapa-rumah-sakit-dan-klinik-wajib-punya-strategi-digital-marketing",
 "website-rumah-sakit-gagal-pasien",
 "konten-edukasi-kesehatan-kepercayaan-pasien",
]
NEW_ARTICLE = "digital-agency-vs-freelancer-vs-in-house"

c = ReplizClient()
docs, page = [], 1
while page < 120:
    for attempt in range(4):
        try:
            d = c.get_schedules(page=page, limit=100)
            break
        except Exception as e:
            print("retry page", page, e, flush=True)
            time.sleep(4)
    else:
        break
    ds = d.get("docs", []) if isinstance(d, dict) else d
    if not ds:
        break
    docs += ds
    if len(ds) < 100:
        break
    page += 1
print("total jadwal:", len(docs))
json.dump(docs, open("/tmp/hc70_sched.json", "w"), ensure_ascii=False)

ACCOUNTS = {
    ACC.STUDIOSOFT_THREADS: "THREADS",
    ACC.STUDIOSOFT_LINKEDIN: "LINKEDIN",
    ACC.STUDIOSOFT_FB: "FACEBOOK",
    ACC.STUDIOSOFT_IG: "IG",
}
now = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M")
print("now UTC:", now)


def hits_for(slug):
    pat = re.compile(re.escape(slug))
    res = {"threads": [], "linkedin": [], "facebook": [], "ig": []}
    for d in docs:
        plat = ACCOUNTS.get(d.get("accountId"))
        if not plat:
            continue
        blob = json.dumps({k: d.get(k) for k in ("title", "description", "topic")}, ensure_ascii=False)
        for m in (d.get("medias") or []):
            blob += " " + (m.get("url") or "")
        if pat.search(blob):
            res[plat.lower()].append((str(d.get("scheduleAt"))[:16], d.get("status"),
                                      d.get("type"), (d.get("_id") or d.get("id") or "")[:12]))
    return res


summary = {}
for slug in HC_SLUGS + [NEW_ARTICLE]:
    h = hits_for(slug)
    thr, li, fb = sorted(h["threads"]), sorted(h["linkedin"]), sorted(h["facebook"])
    fut_thr = [x for x in thr if x[0] >= now and x[1] in ("pending", "scheduled", "draft")]
    last_thr = [x for x in thr if x[0] < now]
    fut_fb = [x for x in fb if x[0] >= now and x[1] in ("pending", "scheduled", "draft")]
    last_fb = [x for x in fb if x[0] < now]
    summary[slug] = {"last_thr": last_thr[-1] if last_thr else None, "fut_thr": fut_thr,
                     "last_fb": last_fb[-1] if last_fb else None, "fut_fb": fut_fb,
                     "li_total": len(li), "li_fut": [x for x in li if x[0] >= now]}
    print("\n" + slug)
    print("   thr_last:", summary[slug]["last_thr"], "| thr_future:", fut_thr)
    print("   fb_last :", summary[slug]["last_fb"], "| fb_future:", fut_fb)
    print("   LI total:", len(li), "future:", len(summary[slug]["li_fut"]))

json.dump(summary, open(OUT, "w"), indent=1, ensure_ascii=False)
print("\n->", OUT)

# Ringkas: artikel HC tanpa jadwal Threads mendatang, urut jejak Threads tertua
print("\n=== KANDIDAT THREADS (tanpa jadwal mendatang, urut jejak tertua) ===")
belum = [(v["last_thr"][0] if v["last_thr"] else "0000", k) for k, v in summary.items()
         if k in HC_SLUGS and not v["fut_thr"]]
for t, k in sorted(belum):
    print(" ", t, k)

print("\n=== KANDIDAT FB (tanpa jadwal FB mendatang, urut jejak tertua) ===")
belum = [(v["last_fb"][0] if v["last_fb"] else "0000", k) for k, v in summary.items()
         if k in HC_SLUGS and not v["fut_fb"]]
for t, k in sorted(belum):
    print(" ", t, k)
