#!/usr/bin/env python3
"""Bangun threads_content_today.json untuk 20 Okt 2026 + validasi (panjang, link, mention, CJK, CTA, nada)."""
import json, re

CJK = re.compile(r"[\u3000-\u9fff\uff00-\uffef]")
URL = re.compile(r"https?://\S+")
CTA = re.compile(r"komentar|tulis di|ceritakan|menurut kamu|setuju|share", re.I)
ANDA = re.compile(r"\bAnda\b")

accounts = []

accounts.append({
    "account": "studiosoft",
    "slot": 11,
    "text": (
        "Kontrak agensi sering diteken buru-buru: anggaran baru turun, tim sudah jalan, dokumen dibaca sekilas.\n\n"
        "Pertanyaan muncul belakangan. Siapa pemilik akun iklan kalau kerja sama berhenti? Nambah dua artikel masuk paket atau ditagih lagi?\n\n"
        "Pasal yang sering bikin ribut: lingkup kerja, ukuran hasil, laporan, kepemilikan akun, hak pakai karya, biaya tambahan, cara keluar.\n\n"
        "Bagian mana yang paling luput di kontrakmu? Tulis di komentar ya.\n\n"
        "https://studiosoft.id/kontrak-digital-agency-pasal-wajib/"
    ),
    "topic": "Kontrak & Klien",
    "title": "StudioSoft Kontrak & Klien 2026-10-20",
    "allow_if_no_ownlink": True,
    "min": 200,
    "max": 500,
})

accounts.append({
    "account": "uky",
    "slot": 14,
    "text": (
        "Pertanyaan yang sering aku dengar: SEO sebulan ngapain aja sih?\n\n"
        "Ada tiga lapis: teknis (kecepatan halaman, struktur alamat), isi (halaman layanan dan artikel yang jawab pertanyaan calon pembeli), jangkauan (tautan internal, profil bisnis).\n\n"
        "Kalau ada yang jual janji peringkat tapi nggak bisa jelasin tiga lapis itu, aku tanya balik: mana yang dibayar?\n\n"
        "Menurut kamu, lapis mana yang paling sering diabaikan? Ceritakan di komentar ya.\n\n"
        "https://studiosoft.id/jasa-seo-surabaya/"
    ),
    "topic": "Website",
    "title": "uky Website 2026-10-20",
    "allow_if_no_ownlink": True,
    "min": 300,
    "max": 480,
})

accounts.append({
    "account": "tslaw",
    "slot": 17,
    "text": (
        "Nama brand kamu sudah didaftarkan, atau baru dipakai di kemasan dan feed? Banyak yang baru sadar saat ada pihak lain memakai nama yang sama.\n\n"
        "Daftar merek sekarang bisa online lewat DJKI, tanpa ke kantor. Yang dicek: mereknya khas, bukan kata umum, dan belum dipakai pihak lain. Prosesnya sekitar 12 bulan, perlindungannya 10 tahun dan bisa diperpanjang.\n\n"
        "Kalau nama brand kamu dipakai orang besok, bukti apa yang kamu punya? Tulis di komentar ya.\n\n"
        "https://www.tslaw.id/cara-daftar-merek-dagang/"
    ),
    "topic": "Merek & HAKI",
    "title": "tslaw Merek & HAKI 2026-10-20",
    "allow_if_no_ownlink": True,
    "min": 200,
    "max": 500,
})

accounts.append({
    "account": "tsc",
    "slot": 20,
    "text": (
        "Tahi lalat yang nggak sakit bukan berarti aman. Perubahan awal biasanya nggak nyeri, jadi sering dibiarkan.\n\n"
        "Dokter kulit pakai lima patokan: bentuknya asimetris, tepinya nggak rata, warnanya nggak seragam, diameter lewat 6 mm, dan berubah dalam hitungan pekan.\n\n"
        "Yang luput: letaknya di punggung, telapak kaki, sela jari, sampai bawah kuku. Jarang kelihatan saat bercermin.\n\n"
        "Punya tahi lalat yang berubah? Ceritakan di komentar ya.\n\n"
        "https://www.theskincodeclinic.com/kapan-tahi-lalat-perlu-diperiksa/"
    ),
    "topic": "Tahi Lalat & Kulit",
    "title": "TSC Tahi Lalat & Kulit 2026-10-20",
    "allow_if_no_ownlink": True,
    "min": 200,
    "max": 500,
})

accounts.append({
    "account": "das",
    "slot": 20,
    "text": (
        "Oli aus nggak selalu bikin lampu indikator menyala. Tandanya sering halus: mesin berat, suara kasar, tarikan lemot.\n\n"
        "Cek dipstick saat mobil parkir datar, mesin dingin 5-10 menit. Oli sehat masih cokelat keemasan. Kalau hitam pekat dan kental, atau ada butiran seperti pasir, itu tanda aus.\n\n"
        "Tanda lain: level cepat turun, asap knalpot kebiruan, bau oli terbakar.\n\n"
        "Kamu cek oli sendiri atau pas servis? Ceritakan di komentar ya.\n\n"
        "https://dasindonesia.com/tanda-oli-mesin-harus-segera-diganti/"
    ),
    "topic": "Oli & Perawatan",
    "title": "DAS Oli & Perawatan 2026-10-20",
    "allow_if_no_ownlink": True,
    "min": 200,
    "max": 500,
})

data = {"date": "2026-10-20", "accounts": accounts}
json.dump(data, open("/home/mantapman/.hermes/profiles/atun/workspace/threads_content_today.json", "w"),
          ensure_ascii=False, indent=1)

ok = True
for a in accounts:
    t = a["text"]
    n = len(t)
    issues = []
    if not URL.search(t):
        issues.append("TANPA LINK")
    if re.search(r"(?<!\S)@\w+", t):
        issues.append("MENTION")
    if CJK.search(t):
        issues.append("CJK")
    if ANDA.search(t):
        issues.append("ADA 'Anda'")
    if not CTA.search(t[-170:]):
        issues.append("CTA HILANG")
    if n > a["max"]:
        issues.append(f"KEPANJANGAN {n}>{a['max']} (buang {n - a['max']})")
    if n < a["min"]:
        issues.append(f"KEPENDEKAN {n}<{a['min']}")
    if len(a["topic"]) > 50:
        issues.append(f"TOPIC >50 ({len(a['topic'])})")
    print(f"{a['account']:11s} slot {a['slot']:02d}  {n:3d} char  {a['topic']:22s} {'OK' if not issues else ' | '.join(issues)}")
    if issues:
        ok = False
print("SEMUA OK" if ok else "ADA MASALAH")
