#!/usr/bin/env python3
"""Survei kesiapan artikel tslaw.id untuk perbaikan harian 2026-10-10.

Hanya BACA. Menghitung metrik nyata dari REST API (context=edit) untuk semua
artikel di drafts/tslaw_audit_selaras.json, plus status perbaikan (tombol WA,
skema FAQPage, tautan pilar /law-firm-surabaya/, jumlah H2/H3, kata, FAQ).
Hasil -> drafts/tslaw_survei_20261010.json
"""
import base64, html as htmlmod, json, os, re, sys, urllib.request, urllib.error

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from cfg_tslaw import CFG

AUTH = base64.b64encode(f"{CFG['user']}:{CFG['pass']}".encode()).decode()
BASE = "https://tslaw.id/wp-json/wp/v2"
HDR = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"}


def rest_get(path, timeout=120):
    req = urllib.request.Request(BASE + path, headers=HDR)
    with urllib.request.urlopen(req, timeout=timeout) as r:
        return json.load(r)


def wc_tanpa_skema(s):
    t = htmlmod.unescape(re.sub(r"<(script|style).*?</\1>", " ", s, flags=re.S))
    return len(re.sub(r"<[^>]+>", " ", t).split())


audit = json.load(open(f"{WS}/drafts/tslaw_audit_selaras.json"))
sudah = {3233, 3208, 3230, 2940, 2823, 3057, 3065, 3232}  # sudah digarap 2-9 Okt

rows = []
for a in audit:
    pid = a["id"]
    try:
        p = rest_get(f"/posts/{pid}?context=edit")
    except Exception as e:
        rows.append({"id": pid, "slug": a["slug"], "error": str(e)[:120]})
        continue
    raw = p["content"]["raw"]
    meta = p.get("meta") or {}
    h2 = re.findall(r"<h2[^>]*>(.*?)</h2>", raw, re.S)
    h2t = [re.sub(r"<[^>]+>", "", h).strip() for h in h2]
    tanya = [h for h in h2t if h.endswith("?")]
    rows.append({
        "id": pid,
        "slug": p["slug"],
        "status": p["status"],
        "judul": p["title"]["raw"],
        "kata_audit": a["kata"],
        "kata_tanpa_skema": wc_tanpa_skema(raw),
        "tayang": a["tayang"], "klik": a["klik"], "sesi_ga4": a["sesi_ga4"],
        "kueri": a["kueri"], "fokus": a["fokus"],
        "wa": raw.count("wa.me/6281909222026"),
        "wa_lain": sorted(set(re.findall(r"wa\.me/(\d+)", raw))),
        "faqpage": raw.count('"@type": "FAQPage"'),
        "h2_tanda_tanya": len(tanya),
        "h2_judul_tanya": tanya[:8],
        "pilar_link": raw.count("law-firm-surabaya"),
        "h2": len(h2), "h3": len(re.findall(r"<h3", raw)),
        "judul_seo": meta.get("_yoast_wpseo_title"),
        "meta_desc": meta.get("_yoast_wpseo_metadesc"),
        "sudah_digarap": pid in sudah,
    })
    print(f"{pid} {p['slug'][:52]:52s} kata={rows[-1]['kata_tanpa_skema']:5d} "
          f"tayang={a['tayang']:3d} klik={a['klik']} ga4={a['sesi_ga4']:3d} "
          f"wa={rows[-1]['wa']} faqsch={rows[-1]['faqpage']} "
          f"pilar={rows[-1]['pilar_link']} H2={rows[-1]['h2']}", flush=True)

json.dump(rows, open(f"{WS}/drafts/tslaw_survei_20261010.json", "w"),
          ensure_ascii=False, indent=1)
print(f"\n{len(rows)} artikel -> drafts/tslaw_survei_20261010.json")
