#!/usr/bin/env python3
"""Verifikasi independen pasca-create: 12_white_filosofi.jpg di Threads @ukyhandoko.
Re-fetch dari API (bukan percaya output create), cek duplikat + aturan caption.
"""
import os, re, sys
from datetime import datetime, timedelta

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

UKY_T = ACC.UKY_THREADS
TARGET = "12_white_filosofi.jpg"
WIB = timedelta(hours=7)
CTA_RE = re.compile(r"komentar|pendapat|diskusi|setuju|share|pengalaman|menurut", re.I)

c = get_client()
r = c.get_schedules(page=1, limit=100)
pages = (r["totalDocs"] + 99) // 100
docs = list(r["docs"])
for p in range(2, pages + 1):
    docs.extend(c.get_schedules(page=p, limit=100)["docs"])

hits = []
for d in docs:
    acc = d.get("account") or {}
    if (d.get("accountId") or acc.get("id") or acc.get("_id")) != UKY_T:
        continue
    meds = d.get("medias") or []
    u = (meds[0].get("url") if meds else "") or ""
    if os.path.basename(u.split("?")[0]).lower() == TARGET:
        hits.append(d)

print(f"total jadwal akun uky: {sum(1 for d in docs if (d.get('accountId') or (d.get('account') or {}).get('id')) == UKY_T)}")
print(f"jadwal dgn media {TARGET}: {len(hits)}")
ok = len(hits) == 1
for d in hits:
    dt = datetime.fromisoformat(d["scheduleAt"].replace("Z", "+00:00")) + WIB
    desc = d.get("description") or ""
    print(f"  id={d['id']} status={d['status']} type={d['type']} at={dt.strftime('%Y-%m-%d %H:%M')} WIB")
    print(f"  media={d['medias'][0]['url']}")
    print(f"  desc={len(desc)} chars | replies={len(d.get('replies') or [])}")
    mention = "ADA" if re.search(r"@\w+", desc) else "0"
    tags = len(re.findall(r"#\w+", desc))
    print(f"  mention={mention} | hashtag={tags} | CTA={'ADA' if CTA_RE.search(desc) else 'TIDAK ADA'}")
    if d["status"] != "pending" or len(desc) > 500 or len(d.get("replies") or []) != 0:
        ok = False
    if not CTA_RE.search(desc) or re.search(r"@\w+", desc) or "#" in desc:
        ok = False
    print(f"  title={d.get('title')!r} topic={d.get('topic')!r}")

# cek slot 3 Okt 08:00 WIB tidak dobel
slot = [d for d in hits if d["scheduleAt"].startswith("2026-10-03T01:00")]
print(f"\nslot 2026-10-03 01:00Z terisi oleh: {len(slot)} jadwal target")
print("\n" + ("✅ VERIFIKASI LULUS" if ok and len(slot) == 1 else "❌ VERIFIKASI GAGAL"))
