#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""verif_seri2.py — audit jadwal SERI KEDUA (SEO/insight/analitik/data marketing + retail + keuangan).

Pakai: python3 verif_seri2.py ["Seri SEO"]
"""
import re
import sys
from datetime import datetime, timedelta, timezone

from repliz_client import get_client

WIB = timezone(timedelta(hours=7))
PREFIX = sys.argv[1] if len(sys.argv) > 1 else "Seri SEO"
AKUN = {
    "6a335b9ec5ff4ce3a3225c2a": ("Threads SS", 500, 1),
    "6a334952c5ff4ce3a3225941": ("Facebook SS", 3000, 0),
    "6a334c49c5ff4ce3a32259c9": ("LinkedIn SS", 3000, 0),
}
CTA = re.compile(r"komentar|diskusi|pendapat|share|pengalaman|menurut", re.I)
LINK_OK = ("studiosoft.id/",)

c = get_client()
rows, page = [], 1
while True:
    r = c.get_schedules(page=page, limit=100)
    docs = r.get("docs") or r.get("data") or []
    if not docs:
        break
    for d in docs:
        if d.get("accountId") in AKUN and (d.get("topic") or "").startswith(PREFIX):
            rows.append(d)
    if len(docs) < 100:
        break
    page += 1

print(f"topik '{PREFIX}*' — {len(rows)} jadwal\n")
masalah, per_akun = [], {}
for d in sorted(rows, key=lambda x: x.get("scheduleAt") or ""):
    nama, maks, nrep = AKUN[d["accountId"]]
    desc = d.get("description") or ""
    tgl = datetime.strptime(d["scheduleAt"], "%Y-%m-%dT%H:%M:%S.%fZ").replace(
        tzinfo=timezone.utc).astimezone(WIB)
    err = []
    if d.get("status") != "pending":
        err.append(f"status={d.get('status')}")
    if len(desc) > maks:
        err.append(f"caption {len(desc)}>{maks}")
    if not any(k in desc for k in LINK_OK):
        err.append("tanpa link studiosoft.id")
    if not CTA.search(desc[-200:]):
        err.append("tanpa ajakan komentar")
    if "@" in desc:
        err.append("ada mention")
    bad = [t for t in re.findall(r"#(\w+)", desc) if t != t.lower()]
    if bad:
        err.append(f"hashtag kapital {bad}")
    cjk = [ch for ch in desc if "\u3000" <= ch <= "\u9fff" or "\uac00" <= ch <= "\ud7af"]
    if cjk:
        err.append(f"CJK {cjk[:3]}")
    if len(d.get("replies") or []) != nrep:
        err.append(f"replies={len(d.get('replies') or [])} harus {nrep}")
    per_akun.setdefault(nama, []).append((tgl, len(desc)))
    if err:
        masalah.append((nama, tgl, d.get("title"), err))

for nama, items in per_akun.items():
    jam = sorted({i[0].strftime("%H:%M") for i in items})
    print(f"== {nama}: {len(items)} jadwal | {items[0][0].strftime('%d %b %H:%M')} – "
          f"{items[-1][0].strftime('%d %b %H:%M')} WIB | jam {jam} | caption "
          f"{min(i[1] for i in items)}–{max(i[1] for i in items)} char")
print(f"\nMASALAH: {len(masalah)}")
for m in masalah:
    print("  ⚠️", m[0], m[1].strftime("%d %b %H:%M"), (m[2] or "")[:48], m[3])
