#!/usr/bin/env python3
"""Bangun threads_content_today.json untuk 19 Okt 2026 + validasi (panjang, link, mention, CJK, CTA)."""
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)

accounts = []

accounts.append({
    "account": "studiosoft",
    "slot": 11,
    "text": (
        "Klien kami pernah bilang, laporannya bagus tapi nggak menjawab apa-apa. Isinya angka yang sama tiap bulan.\n\n"
        "Padahal pertanyaannya sederhana: dari semua yang dikerjakan, mana yang benar-benar menggerakkan penjualan?\n\n"
        "Kami sarankan satu kebiasaan: tiap bulan pilih satu hal untuk diukur serius, bukan sepuluh.\n\n"
        "Bagian mana yang paling sering luput kamu cek? Tulis di komentar ya.\n\n"
        "https://studiosoft.id/tanda-digital-agency-bekerja-dengan-benar/"
    ),
    "topic": "Data & Pengukuran",
    "title": "StudioSoft Data & Pengukuran 2026-10-19",
    "allow_if_no_ownlink": True,
    "min": 200,
    "max": 500,
})

accounts.append({
    "account": "uky",
    "slot": 14,
    "text": (
        "Ada klien bilang, mending sewa freelancer daripada bayar agensi. Setahun kemudian dia balik, bukan karena freelancer-nya jelek, tapi karena orangnya cuma satu.\n\n"
        "Yang jarang dibahas: siapa yang jawab kalau hasilnya kurang. Freelancer ringan biaya, tapi kapasitasnya terbatas. Tim sendiri paham bisnis, tapi satu orang nggak bisa pegang semuanya.\n\n"
        "Kalau kamu pilih mana dulu? Ceritakan di komentar ya.\n\n"
        "https://studiosoft.id/digital-agency-vs-freelancer-vs-in-house/"
    ),
    "topic": "Agensi & Layanan",
    "title": "uky Agensi & Layanan 2026-10-19",
    "allow_if_no_ownlink": True,
    "min": 300,
    "max": 480,
})

accounts.append({
    "account": "tslaw",
    "slot": 17,
    "text": (
        "Masih sering kami temui karyawan yang nggak tahu statusnya sendiri: kontrak atau tetap. Tahu-tahunya pas masanya habis, dan uang kompensasinya nggak pernah muncul.\n\n"
        "Bedanya bukan cuma nama. Kontrak waktu tertentu selesai sendiri saat masanya habis, tapi tetap wajib ada uang kompensasi. Yang tanpa batas waktu harus punya alasan jelas kalau mau diakhiri.\n\n"
        "Sudah baca ulang kontrak kerjamu? Tulis di komentar ya.\n\n"
        "https://www.tslaw.id/pkwt-vs-pkwtt-panduan-lengkap-kontrak-kerja-karyawan/"
    ),
    "topic": "Ketenagakerjaan",
    "title": "tslaw Ketenagakerjaan 2026-10-19",
    "allow_if_no_ownlink": True,
    "min": 200,
    "max": 500,
})

accounts.append({
    "account": "tsc",
    "slot": 20,
    "text": (
        "Tato nggak bisa hilang pakai krim atau scrub, sekeras apa pun digosok. Tintanya disuntik ke lapisan dermis, di bawah jangkauan produk perawatan.\n\n"
        "Karena itu cara angkatnya pakai laser, dan tetap harus dioperasikan dokter. Pigmen dipecah jadi butiran kecil, lalu tubuh membersihkan sisanya. Hasilnya bertahap, ada jeda beberapa pekan antar sesi.\n\n"
        "Pernah kepikiran hapus tato? Tulis di komentar ya.\n\n"
        "https://www.theskincodeclinic.com/klinik-hapus-tato-sidoarjo/"
    ),
    "topic": "Hapus Tato & Laser",
    "title": "TSC Hapus Tato & Laser 2026-10-19",
    "allow_if_no_ownlink": True,
    "min": 200,
    "max": 500,
})

accounts.append({
    "account": "das",
    "slot": 20,
    "text": (
        "Banyak yang baru sadar mesinnya butuh overhaul setelah suara kasar atau tenaga drop. Padahal tanda awalnya sudah muncul lebih dulu.\n\n"
        "Menunda overhaul bukan menghemat. Makin lama, kerusakan menyebar ke dinding silinder, bearing, sampai kepala silinder. Biaya akhirnya jauh lebih besar.\n\n"
        "Jangan tunggu sampai mesinnya mogok di jalan.\n\n"
        "Kamu pernah ngalamin tandanya? Ceritakan di komentar ya.\n\n"
        "https://dasindonesia.com/pentingnya-overhaul-mesin-kerugian-bila-terlambat/"
    ),
    "topic": "Overhaul Mesin",
    "title": "DAS Overhaul Mesin 2026-10-19",
    "allow_if_no_ownlink": True,
    "min": 200,
    "max": 500,
})

data = {"date": "2026-10-19", "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 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']:24s} {'OK' if not issues else ' | '.join(issues)}")
    if issues:
        ok = False
print("SEMUA OK" if ok else "ADA MASALAH")
