#!/usr/bin/env python3
"""Verifikasi halaman publik #3177 setelah perbaikan (cache buster)."""
import json, re, time, urllib.request, urllib.error

UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}
U = "https://www.tslaw.id/konsultasi-hukum-kapan-dan-mengapa/"
OUT = "/home/mantapman/.hermes/profiles/atun/workspace/tslaw_pemulihan/perbaikan_20261018"

r = urllib.request.urlopen(urllib.request.Request(f"{U}?nocache={int(time.time())}", headers=UA), timeout=90)
html = r.read().decode("utf-8", "replace")
open(f"{OUT}/post_3177_SESUDAH_LIVE.html", "w").write(html)
print("HTTP", r.status, "| panjang", len(html))

h2 = re.findall(r"<h2[^>]*>(.*?)</h2>", html, re.S)
h2 = [re.sub(r"<[^>]+>", "", x).strip() for x in h2]
print(f"H2 tampil: {len(h2)}")
for x in h2:
    print("   -", x)

wajib = ["Kerahasiaan yang Dilindungi Undang-Undang", "Batas Imunitas Advokat",
         "Konsultasi Online dan Kekuatan Bukti Digital", "Kapan Konsultasi Saja Tidak Cukup"]
print("H2 baru tampil:", all(w in h2 for w in wajib), [w for w in wajib if w not in h2])

# skema FAQ
sk = re.findall(r'<script type="application/ld\+json"[^>]*>(.*?)</script>', html, re.S)
faq = None
for s in sk:
    try:
        d = json.loads(s)
    except Exception:
        continue
    if isinstance(d, dict) and d.get("@type") == "FAQPage":
        faq = d
        break
print("skema FAQPage valid:", faq is not None, "| item:", len(faq["mainEntity"]) if faq else 0)
if faq:
    teks = re.sub(r"<[^>]+>", " ", html)
    hilang = [q["name"] for q in faq["mainEntity"] if q["name"] not in teks]
    print("pertanyaan skema tampil di halaman:", not hilang, hilang)

print("tombol WA:", bool(re.search(r"wa\.me/6281909222026", html)), "| hitung:", html.count("wa.me/6281909222026"))
print("tautan pilar:", html.count("/law-firm-surabaya/"))
print("em dash / kutip melengkung:", html.count("\u2014"), html.count("\u201c"), html.count("\u201d"))
print("judul halaman:", re.search(r"<title>(.*?)</title>", html, re.S).group(1).strip()[:100])

# tautan internal
isi = re.search(r'<div class="entry-content[^"]*">(.*?)</article>', html, re.S)
area = isi.group(1) if isi else html
links = sorted(set(re.findall(r'href="(https://(?:www\.)?tslaw\.id/[^"#?]*)"', area)))
print(f"\ntautan internal di isi: {len(links)}")
for u in links:
    try:
        rr = urllib.request.urlopen(urllib.request.Request(f"{u}?nocache={int(time.time())}", headers=UA), timeout=60)
        print(f"  {rr.status} {u}")
    except urllib.error.HTTPError as e:
        print(f"  {e.code} {u}  <== MATI")
    except Exception as e:
        print(f"  ERR {u} {str(e)[:40]}")
