#!/usr/bin/env python3
"""Cek status tautan internal 3179 + uji fakta pendirian PT (Serper)."""
import json, re, urllib.request, urllib.error

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
UA = {"User-Agent": "Mozilla/5.0"}


def head(u):
    try:
        r = urllib.request.Request(u, headers=UA, method="GET")
        with urllib.request.urlopen(r, timeout=60) as x:
            return x.status, len(x.read())
    except urllib.error.HTTPError as e:
        return e.code, 0
    except Exception as e:
        return type(e).__name__, 0


print("=== STATUS TAUTAN ===")
for u in ["https://www.tslaw.id/7-aspek-hukum-bisnis-yang-wajib-dipahami/",
          "https://www.tslaw.id/7-aspek-hukum-bisnis-yang-wajib-dipahami.htm",
          "https://www.tslaw.id/5-dokumen-hukum-yang-wajib-dimiliki-setiap-pelaku-usaha-di-indonesia/",
          "https://www.tslaw.id/5-dokumen-hukum-yang-wajib-dimiliki-setiap-pelaku-usaha-di-indonesia.htm",
          "https://www.tslaw.id/law-firm-surabaya/",
          "https://www.tslaw.id/law-firm-surabaya.htm",
          "https://www.tslaw.id/panduan-pendirian-pt-untuk-pelaku-usaha.htm",
          "https://www.tslaw.id/panduan-mendirikan-pt-untuk-umkm.htm"]:
    print(f"  {head(u)[0]}  {u}")

tok = json.load(open(f"{WS}/.serper_token.json"))
KEY = tok.get("api_key") or tok.get("key") or list(tok.values())[0]


def cari(q):
    req = urllib.request.Request("https://google.serper.dev/search",
                                 data=json.dumps({"q": q, "gl": "id", "hl": "id", "num": 5}).encode(),
                                 headers={"X-API-KEY": KEY, "Content-Type": "application/json"})
    with urllib.request.urlopen(req, timeout=60) as r:
        d = json.load(r)
    return d.get("answerBox") or d.get("knowledgeGraph") or None, [
        {"t": o.get("title"), "s": (o.get("snippet") or "")[:300], "u": o.get("link")}
        for o in d.get("organic", [])[:5]]


QS = [
    "Pasal 7 UU 40 tahun 2007 perseroan terbatas didirikan 2 orang atau lebih akta notaris",
    "modal disetor minimal 25 persen modal dasar pendirian PT Pasal 32 UUPT",
    "PP 8 tahun 2021 modal dasar perseroan usaha mikro dan kecil kesepakatan pendiri",
    "perseroan perorangan Pasal 153A UU Cipta Kerja didirikan satu orang tanpa akta notaris pernyataan pendirian",
    "pengesahan badan hukum PT berubah jadi pendaftaran elektronik SABH AHU Kemenkumham UU Cipta Kerja",
    "nama perseroan terbatas minimal tiga kata Pasal 16 UU 40 2007",
    "kewajiban laporan kegiatan penanaman modal LKPM triwulan berlaku untuk usaha menengah besar",
    "tarif PPh badan 22 persen PPh final 0,5 persen UMKM PP 55 2022",
    "RUPS tahunan paling lambat 6 bulan setelah tahun buku berakhir Pasal 78 UUPT",
    "biaya jasa notaris dan pendirian PT di Indonesia kisaran juta rupiah 2026",
]
for q in QS:
    try:
        ab, org = cari(q)
    except Exception as e:
        print("=" * 95); print("Q:", q); print("GAGAL:", type(e).__name__, str(e)[:160]); continue
    print("=" * 95)
    print("Q:", q)
    if ab:
        print("ANSWERBOX:", json.dumps(ab, ensure_ascii=False)[:600])
    for o in org:
        print("  -", str(o["t"])[:90], "|", o["u"])
        print("    ", o["s"][:290])
