#!/usr/bin/env python3
"""Generate threads_content_today.json untuk 2026-09-14 + validasi keras."""
import json, re, sys

DATE = "2026-09-14"

LINK_SS = "https://studiosoft.id/retainer-digital-marketing/"
LINK_UKY = "https://studiosoft.id/konsultan-ai-surabaya/"
LINK_TSLAW = "https://www.tslaw.id/panduan-membuat-surat-wasiat/"
LINK_TSC = "https://www.theskincodeclinic.com/jerawat-membandel-mojokerto-butuh-dokter-kulit/"
LINK_DAS = "https://dasindonesia.com/bengkel-nissan-surabaya/"

items = [
    {
        "account": "studiosoft",
        "slot": 11,
        "text": (
            "Banyak pemilik bisnis bertanya ke saya, mengapa hasil promosinya naik-turun tiap bulan? "
            "Jawaban saya biasanya satu: kampanye dijalankan hanya saat ada anggaran.\n\n"
            "Di artikel baru saya, saya uraikan cara kerja retainer digital marketing: apa yang "
            "dikerjakan tiap bulan, bagaimana hasilnya diukur, dan kapan model ini lebih hemat.\n\n"
            f"{LINK_SS}\n\n"
            "Menurut Anda, lebih efektif kampanye musiman atau kerja bulanan? "
            "Tulis pendapat Anda di komentar."
        ),
    },
    {
        "account": "uky",
        "slot": 14,
        "text": (
            "Saya dulu mengira AI hanya relevan untuk perusahaan besar. Setelah saya pakai sendiri untuk "
            "pekerjaan harian, yang berubah bukan alatnya, tapi cara saya bekerja.\n\n"
            "Di artikel baru saya, saya tulis kapan bisnis butuh pendampingan konsultan AI dan kapan "
            "cukup belajar sendiri. AI tidak menggantikan pemilik usaha, ia memberi waktu untuk hal "
            "yang lebih bernilai.\n\n"
            f"{LINK_UKY}\n\n"
            "Di bagian mana bisnis Anda ingin dibantu AI? Ceritakan di kolom komentar."
        ),
    },
    {
        "account": "tslaw",
        "slot": 17,
        "text": (
            "Sengketa harta di keluarga hampir selalu berawal dari satu hal yang sama: tidak ada wasiat "
            "tertulis.\n\n"
            "Di artikel baru kami, saya bahas syarat sah surat wasiat, siapa yang berhak membuatnya, dan "
            "prosedur resminya di Indonesia. Pemahaman ini jauh lebih murah daripada berperkara di "
            "pengadilan bertahun-tahun.\n\n"
            f"{LINK_TSLAW}\n\n"
            "Menurut Anda, sejak kapan sebaiknya seseorang menyiapkan wasiat? Tulis pendapat Anda di "
            "kolom komentar."
        ),
    },
    {
        "account": "tsc",
        "slot": 20,
        "text": (
            "Jerawat yang bertahan lebih dari tiga bulan biasanya bukan lagi soal skincare, tapi soal "
            "kondisi kulit yang perlu diperiksa dokter.\n\n"
            "Di artikel baru kami, saya uraikan lima alasan kenapa jerawat membandel di Mojokerto "
            "sebaiknya ditangani dokter kulit, bukan dengan berganti produk terus-menerus. Terapi yang "
            "tepat selalu dimulai dari diagnosis.\n\n"
            f"{LINK_TSC}\n\n"
            "Setuju? Ceritakan pengalaman kulitmu di kolom komentar."
        ),
    },
    {
        "account": "das",
        "slot": 23,
        "text": (
            "Saya sering kedatangan pemilik Nissan yang sudah keliling bengkel umum tapi masalahnya "
            "belum tuntas. Mobil Jepang punya karakter mesin dan transmisi yang butuh penanganan "
            "spesifik, dari CVT sampai kaki-kaki.\n\n"
            "Di artikel baru kami, saya jelaskan kapan servis rutin masih cukup dan kapan mobil Anda "
            "butuh bengkel spesialis Nissan.\n\n"
            f"{LINK_DAS}\n\n"
            "Seberapa penting memilih bengkel spesialis menurut Anda? Tulis di kolom komentar."
        ),
    },
]

CTA_RE = re.compile(r"komentar|pendapat|diskusi|setuju|share|pengalaman|menurut", re.I)
MENTION_RE = re.compile(r"@\w+")
URL_RE = re.compile(r"https?://\S+")

data = {"date": DATE, "accounts": []}
ok = True
for it in items:
    t = it["text"]
    n = len(t)
    problems = []
    if n > 500:
        problems.append(f"PANJANG {n}>500")
    if not URL_RE.search(t):
        problems.append("TANPA LINK")
    if not CTA_RE.search(t):
        problems.append("TANPA CTA")
    if MENTION_RE.search(t):
        problems.append("ADA MENTION")
    if "…" in t or re.search(r"\.\.\.", t):
        problems.append("ADA ELIPSIS/TRUNCATED")
    # hashtag kapital?
    for tag in re.findall(r"#(\w+)", t):
        if tag != tag.lower():
            problems.append("HASHTAG KAPITAL")
    status = "OK " if not problems else "FAIL"
    if problems:
        ok = False
    print(f"{status} {it['account']:11s} len={n:3d} url={bool(URL_RE.search(t))} cta={bool(CTA_RE.search(t))} {problems}")
    data["accounts"].append(it)

out = "/home/mantapman/.hermes/profiles/atun/workspace/threads_content_today.json"
with open(out, "w") as f:
    json.dump(data, f, indent=2, ensure_ascii=False)
print("tulis ->", out)
sys.exit(0 if ok else 1)
