#!/usr/bin/env python3
"""Verifikasi halaman publik #3566 setelah perbaikan 13 Okt 2026."""
import json, re, time, urllib.request, urllib.error

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
DIR = f"{WS}/tslaw_pemulihan/perbaikan_20261013"
URL = "https://www.tslaw.id/biaya-jasa-law-firm-surabaya/"
UA = {"User-Agent": "Mozilla/5.0"}


def get(u):
    r = urllib.request.Request(u, headers=UA)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=90) as x:
                return x.status, x.read().decode("utf-8", "replace")
        except urllib.error.HTTPError as e:
            return e.code, ""
        except Exception:
            time.sleep(4)
    return 0, ""


cbs = f"{URL}?nocache={int(time.time())}"
st, html = get(cbs)
open(f"{DIR}/live_3566_verifikasi.html", "w").write(html)

skema = {"blok_ditemukan": False, "valid": False, "item": 0}
for m in re.finditer(r'<script type="application/ld\+json">(.*?)</script>', html, re.S):
    t = m.group(1).strip()
    if "FAQPage" in t:
        skema["blok_ditemukan"] = True
        try:
            d = json.loads(t)
            skema["valid"] = True
            skema["item"] = len(d.get("mainEntity", []))
            skema["pertanyaan"] = [q["name"] for q in d["mainEntity"]]
        except Exception as e:
            skema["galat"] = str(e)

hasil = {
    "http_status": st,
    "judul": (re.search(r"<title>(.*?)</title>", html, re.S).group(1).strip()[:120] if "<title>" in html else None),
    "meta_desc": (re.search(r'<meta name="description" content="(.*?)"', html, re.S).group(1)[:200] if 'name="description"' in html else None),
    "h2_baru": {h: (h in html) for h in ["Honorarium Advokat Menurut Undang-Undang",
                                         "Biaya Resmi di Luar Honorarium: Panjar Perkara dan Bea Meterai",
                                         "Rincian yang Sebaiknya Ada dalam Penawaran Tertulis"]},
    "faq_h3_tampil": len(re.findall(r"<h3>[^<]*\?</h3>", html)),
    "faq_tanya_panjar": "Apakah panjar biaya perkara bisa dikembalikan?" in html,
    "tombol_wa": html.count("wa.me/6281909222026"),
    "tautan_mati_ketahui": html.count("yang-perlu-anda-ketahui"),
    "tautan_benar_tahu": html.count("yang-perlu-anda-tahu-sebelum-ke-pengacara"),
    "angka_panjar_30rb": "Rp30.000" in html,
    "bea_meterai": "Undang-Undang Nomor\n10 Tahun 2020" in html or "Bea Meterai" in html,
    "pasal_21": "Pasal 21" in html,
    "skema": skema,
}
json.dump(hasil, open(f"{DIR}/live_3566_verifikasi.json", "w"), ensure_ascii=False, indent=1)
print(json.dumps(hasil, ensure_ascii=False, indent=1))

print("\n=== status tautan di isi artikel (halaman publik) ===")
hits = set(re.findall(r'href="(https://www\.tslaw\.id/[^"#?]+)"', html))
for u in sorted(hits):
    print(f"  {get(u)[0]:>4}  {u}")
