#!/usr/bin/env python3
"""Pemeriksa pola tulisan AI (ringkas) untuk naskah artikel HTML StudioSoft.
Pakai: python3 cek_pola_ai.py <berkas.py>   (membaca variabel ISI dari skrip generator)
"""
import importlib.util, re, sys

BERKAS = sys.argv[1]
spec = importlib.util.spec_from_file_location("gen", BERKAS)
m = importlib.util.module_from_spec(spec)
sys.argv = [sys.argv[0]]          # cegah --apply ikut terbaca modul
try:
    spec.loader.exec_module(m)
except SystemExit:                # skrip generator keluar di jalur dry run
    pass
teks = re.sub(r"<[^>]+>", " ", m.ISI)
teks = teks.replace("&nbsp;", " ")

POLA = {
    "em dash (—)": r"—",
    "kutip melengkung": r"[“”‘’]",
    "CJK": r"[\u3000-\u9fff\uac00-\ud7af]",
    "rule-of-three kaku": r"\b(\w+), (\w+), (?:dan|serta) (\w+)\b(?=[^.]*\.\s*(?:Semua|Ketiganya))",
    "frasa AI": r"\b(delve|landscape|testimonial|testament|pivotal|seamless|robust|leverage|"
                r"unlock|elevate|empower|foster|underscore|showcase|navigat\w+|game.?changer)\b",
    "Indonesia-AI": r"\b(tidak hanya .{0,40}(?:tetapi|tapi) juga|bukan sekadar .{0,40}(?:melainkan|tapi)|"
                    r"di era digital|di dunia yang serba|tak dapat dipungkiri|pada akhirnya|"
                    r"mari kita|perlu dicatat bahwa|sangat penting untuk)\b",
    "hedging": r"\b(mungkin bisa jadi|bisa jadi mungkin|kiranya dapat|agaknya bisa)\b",
    "meta-komentar": r"\b(mari kita bahas|kita akan membahas|berikut ini akan dijelaskan)\b",
    "tanda seru berlebih": r"!",
    "bold padat": r"<strong>",
}
kata = len(teks.split())
print(f"=== {BERKAS}")
print(f"   panjang: {kata} kata")
soal = 0
for nama, pola in POLA.items():
    n = re.findall(pola, teks, flags=re.I)
    if n:
        soal += 1
        contoh = n[:4]
        print(f"   ⚠ {nama}: {len(n)}× {contoh}")
if not soal:
    print("   ✅ tidak ada pola yang dicurigai")
# sebaran panjang kalimat
kal = [len(k.split()) for k in re.split(r"(?<=[.!?])\s+", teks) if len(k.split()) > 2]
if kal:
    pendek = sum(1 for k in kal if k <= 10)
    panjang = sum(1 for k in kal if k >= 25)
    print(f"   kalimat: {len(kal)} · rata-rata {sum(kal)/len(kal):.1f} kata · "
          f"pendek(<=10): {pendek} · panjang(>=25): {panjang}")
