#!/usr/bin/env python3
"""
Perkaya caption Threads TS Law (10 jadwal 2-11 Sep) — mirror gaya LinkedIn: bedah sisi hukum lebih dalam.
Tetap tanpa mention, ≤500 char (aturan Threads), ajak diskusi.
"""
import sys, json, urllib.request
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import HEADERS, BASE

# mapping id jadwal → (judul berita, niche, angle, url) dari data yang sudah dipasang
# diambil dari deskripsi existing (parse ulang) supaya tidak salah konten
IDS = [
    "6a96a444f197bea385845ec6",  # 2 Sep WNA Aniaya
    "6a96a444f197bea385845ed4",  # 3 Sep Mayat Kardus
    "6a96a445f197bea385845eda",  # 4 Sep Kejagung MBG
    "6a96a445f197bea385845ee2",  # 5 Sep Bye Dolar
    "6a96a4450f4e8a4dace80a78",  # 6 Sep Komisi III Perampasan Aset
    "6a9768630f4e8a4dac045d88",  # 7 Sep Santri Keracunan MBG
    "6a976864f197bea38594eb2f",  # 8 Sep Tewas Jatim
    "6a976864f197bea38594eb3d",  # 9 Sep Ketua KPK Bupati Bogor
    "6a976864f197bea38594eb41",  # 10 Sep Monopoli Kenaikan
    "6a976865f197bea38594eb49",  # 11 Sep Cicil Utang KDKMP
]

def get(sid):
    req = urllib.request.Request(f"{BASE}/public/schedule/{sid}", headers=HEADERS)
    with urllib.request.urlopen(req, timeout=30) as r:
        return json.load(r)

def put(sid, payload):
    req = urllib.request.Request(f"{BASE}/public/schedule/{sid}",
                                 data=json.dumps(payload).encode(),
                                 headers={**HEADERS, "Content-Type": "application/json"},
                                 method="PUT")
    with urllib.request.urlopen(req, timeout=30) as r:
        return r.status

import re
# detail bedah hukum per jadwal (manual, sesuai isi berita)
DETAIL = {
    "6a96a444f197bea385845ec6": ("Hukum Pidana", "Penganiayaan (Pasal 351 KUHP)", "Kasus ini mengingatkan bahwa penganiayaan — sekecil apa pun — punya konsekuensi pidana. Di Indonesia, pelaku bisa dijerat pidana penjara, terlebih jika dilakukan dalam keadaan mabuk yang mengurangi kendali diri. Yang menarik: hukum tidak melihat kewarganegaraan, semua setara di depan hukum."),
    "6a96a444f197bea385845ed4": ("Hukum Pidana", "Pembunuhan & penyelidikan (Pasal 338 KUHP)", "Temuan mayat selalu membuka pertanyaan hukum: apakah ini pembunuhan, kecelakaan, atau sebab lain? Polisi harus membuktikan unsur kesalahan dan niat pelaku. Proses penyelidikan inilah yang menentukan pasal yang tepat untuk dijeratkan."),
    "6a96a445f197bea385845eda": ("Hukum Pidana / Tipikor", "Penyidikan korupsi oleh Kejagung", "Saat Kejagung memeriksa saksi dan yayasan, itu bagian dari proses penyidikan tindak pidana korupsi. Yang wajib dijaga: asas praduga tak bersalah — pemeriksaan bukan vonis. Publik perlu memahami beda tahap penyelidikan, penyidikan, dan penuntutan."),
    "6a96a445f197bea385845ee2": ("Hukum Bisnis", "Transaksi LCS & kepatuhan devisa", "Kesepakatan pakai mata uang lokal (LCS) adalah terobosan hukum bisnis internasional — mengurangi ketergantungan dolar. Bagi pelaku usaha, transaksi lintas negara kini punya opsi baru, tapi tetap wajib mematuhi aturan devisa dan perbankan yang berlaku."),
    "6a96a4450f4e8a4dace80a78": ("Hukum Pidana / Pidana Khusus", "UU Perampasan Aset", "Wacana 13 tindak pidana yang bisa dikenai perampasan aset adalah langkah besar: pelaku korupsi tidak hanya dihukum, tapi hartanya bisa dirampas negara. Ini momentum penting dalam pemberantasan korupsi — tapi tetap harus sesuai proses hukum yang adil."),
    "6a9768630f4e8a4dac045d88": ("Hukum Pidana / Perlindungan Konsumen", "Tanggung jawab hukum & UU Pangan", "Insiden keracunan massal memunculkan pertanyaan hukum: siapa bertanggung jawab — penyedia, distributor, atau pemangku kebijakan? UU Perlindungan Konsumen dan UU Pangan memberi korban hak menuntut ganti rugi, dan aparat bisa menelusuri unsur kelalaian."),
    "6a976864f197bea38594eb2f": ("Hukum Pidana", "Penyidikan dugaan kejahatan", "Setiap kematian yang mencurigakan harus melalui proses hukum yang transparan. Aparat wajib mengumpulkan alat bukti, memeriksa saksi, dan menentukan apakah ada unsur pidana — sebelum kesimpulan diumumkan ke publik."),
    "6a976864f197bea38594eb3d": ("Hukum Pidana / Tipikor", "Kewenangan KPK & aparat", "Pernyataan pimpinan KPK soal kemungkinan pemeriksaan adalah sinyal penegakan hukum berjalan. Di sisi lain, ini mengingatkan pentingnya kepastian hukum bagi pejabat publik: proses harus berdasarkan bukti, bukan asumsi."),
    "6a976864f197bea38594eb41": ("Hukum Bisnis / Persaingan Usaha", "UU Larangan Monopoli", "Dugaan monopoli di balik kenaikan harga adalah ranah UU No. 5 Tahun 1999 tentang Larangan Praktik Monopoli. KPPU bisa turun tangan bila terbukti ada penguasaan pasar yang merugikan konsumen — bukti dan data jadi kuncinya."),
    "6a976865f197bea38594eb49": ("Hukum Bisnis / Kepailitan", "Utang, restrukturisasi & kepailitan", "Fenomena cicil utang meski modal kecil menyentuh hukum kepailitan dan restrukturisasi utang. Pelaku usaha perlu tahu: ada mekanisme hukum untuk menyelesaikan utang secara tertib — tanpa harus kehilangan segalanya."),
}

updated = 0
for sid in IDS:
    d = get(sid)
    if sid not in DETAIL:
        print(f"  ⏭️  {sid}: tanpa detail")
        continue
    niche, angle, bedah = DETAIL[sid]
    # ambil url berita dari caption lama
    m = re.search(r"https?://\S+", d.get("description") or "")
    url = m.group(0) if m else ""
    # judul dari caption lama: "Baru lihat berita ini: X. ⚖️"
    mj = re.search(r"Baru lihat berita ini: (.+?)\. ⚖️", d.get("description") or "")
    judul = mj.group(1) if mj else "berita hukum"
    new_cap = (
        f"⚖️ BEDAH HUKUM: {judul}.\n\n"
        f"Dari sisi {niche}, kasus ini berkaitan dengan {angle}. {bedah}\n\n"
        f"Simak berita selengkapnya 👇\n{url}\n\n"
        f"Menurut Anda, bagaimana sebaiknya kasus ini disikapi secara hukum? Yuk diskusi! 👇\n\n"
        f"#TSLaw #HukumIndonesia #KonsultasiHukum #LawFirm"
    )
    # Threads ≤500 char (main body tanpa hashtag dihitung? amankan total)
    if len(new_cap) > 500:
        new_cap = new_cap[:497].rsplit(" ", 1)[0] + "…"
    payload = {
        "accountId": d.get("accountId"),
        "title": d.get("title", ""),
        "description": new_cap,
        "topic": d.get("topic", ""),
        "type": d.get("type", ""),
        "medias": d.get("medias") or [],
        "scheduleAt": d.get("scheduleAt"),
        "replies": [
            {"text": "Intinya: jangan menyimpulkan sebelum semua alat bukti terungkap. Proses hukum itu panjang dan harus adil. ⚖️", "username": ""},
        ],
    }
    try:
        put(sid, payload)
        updated += 1
        print(f"  ✅ {d.get('scheduleAt')[:10]} | {judul[:45]}")
    except Exception as e:
        print(f"  ❌ {sid}: {e}")

print(f"\n📊 Updated: {updated}")
