#!/usr/bin/env python3
"""Verifikasi jadwal FB Yasma Natura: status, jam WIB, tipe, replies, link, CTA, hashtag, CJK."""
import json
import re
import sys
from datetime import datetime, timedelta, timezone

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

WIB = timezone(timedelta(hours=7))
FB_YASMA = "6a3b41e3c5ff4ce3a327544b"

c = get_client()
docs, page = [], 1
while True:
    r = c.get_schedules(page=page, limit=100)
    d = r.get("docs") or r.get("data") or []
    if not d:
        break
    docs.extend(d)
    if len(d) < 100:
        break
    page += 1

mine = [x for x in docs if x.get("accountId") == FB_YASMA]
mine.sort(key=lambda x: x.get("scheduleAt") or "")
print("jadwal FB Yasma: %d" % len(mine))
masalah = []
for s in mine:
    sa = s.get("scheduleAt") or ""
    try:
        wib = datetime.strptime(sa[:19], "%Y-%m-%dT%H:%M:%S").replace(tzinfo=timezone.utc).astimezone(WIB)
        wibs = wib.strftime("%a %d %b %Y %H:%M WIB")
    except Exception:
        wibs = sa
    cap = s.get("description") or ""
    err = []
    if s.get("status") != "pending":
        err.append("status=%s" % s.get("status"))
    if s.get("type") != "text":
        err.append("type=%s" % s.get("type"))
    if s.get("replies"):
        err.append("ada replies (%d)" % len(s["replies"]))
    if s.get("medias"):
        err.append("ada media")
    if not re.search(r"https://yasmanatura\.co\.id/\S+", cap):
        err.append("tanpa link yasma")
    if not re.search(r"komentar|menurut|pendapat|pengalaman|cerita|diskusi", cap, re.I):
        err.append("tanpa ajakan diskusi")
    if "@" in cap:
        err.append("ada mention")
    bad = [t for t in re.findall(r"#(\w+)", cap) if t != t.lower()]
    if bad:
        err.append("hashtag kapital %s" % bad)
    cjk = [ch for ch in cap if "\u2e80" <= ch <= "\u9fff" or "\uac00" <= ch <= "\ud7af"
           or "\u3040" <= ch <= "\u30ff"]
    if cjk:
        err.append("CJK")
    print("  %-24s | %-7s | %-4s | %4d char | %s" % (wibs, s.get("status"), s.get("type"),
                                                     len(cap), (s.get("title") or "")[:45]))
    if err:
        masalah.append((s.get("_id"), err))

print("\nMASALAH: %d" % len(masalah))
for i, e in masalah:
    print("  ❌ %s -> %s" % (i, e))
