#!/usr/bin/env python3
"""TSLaw: tambah isi dua artikel klaster yang masih pendek (#3570 dan #3574)."""
import base64, json, re, sys, time, urllib.request, urllib.error, importlib.util

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg_tslaw", f"{WS}/cfg_tslaw.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
DOM, AUTH = "www.tslaw.id", base64.b64encode(f'{m.CFG["user"]}:{m.CFG["pass"]}'.encode()).decode()
UA = {"User-Agent": "Mozilla/5.0"}
TANDA = "<h2>Pertanyaan yang Sering Diajukan</h2>"

TAMBAHAN = {
    3570: """
<h2>Cara Menguji Calon Law Firm Sebelum Menunjuk</h2>

<p>Ada cara sederhana untuk menilai kualitas kantor hukum sebelum Anda menandatangani apa pun: ajukan satu
pertanyaan nyata dari pekerjaan Anda sehari-hari, lalu perhatikan jawabannya.</p>

<ul>
<li><strong>Apakah jawabannya spesifik?</strong> Kantor yang berpengalaman menyebut langkah, dokumen, dan
risikonya. Kantor yang menjawab dengan kalimat umum biasanya belum benar-benar membaca persoalan Anda.</li>
<li><strong>Apakah mereka bertanya balik?</strong> Pertanyaan seperti "siapa pihak lain dalam perjanjian ini"
atau "berapa nilai transaksinya" menandakan mereka terbiasa menimbang risiko, bukan sekadar menghitung
biaya.</li>
<li><strong>Apakah mereka menyebut apa yang tidak mereka tangani?</strong> Kantor yang jujur soal batas
kewenangannya lebih bisa dipercaya daripada yang mengaku bisa menangani segalanya.</li>
<li><strong>Seberapa cepat tanggapannya?</strong> Saat belum jadi klien pun mereka sudah lambat, biasanya
setelah jadi klien tidak lebih cepat.</li>
</ul>

<h2>Model Kerja Sama yang Lazim Dipakai Perusahaan</h2>

<p>Tiga pola berikut paling sering dipakai, dan pilihannya bergantung pada besar kecilnya kebutuhan legal
perusahaan Anda.</p>

<h3>Retainer bulanan</h3>
<p>Perusahaan membayar sejumlah biaya tetap setiap bulan untuk mendapatkan pendampingan berkelanjutan:
peninjauan kontrak rutin, menjawab pertanyaan legal harian, dan pendampingan rapat bila diperlukan. Cocok
untuk perusahaan yang setiap bulan selalu berurusan dengan kontrak.</p>

<h3>Tarif per proyek</h3>
<p>Dipakai untuk pekerjaan yang lingkupnya jelas dan berbatas waktu, misalnya pendirian badan usaha,
pendaftaran merek, atau penyusunan satu set perjanjian. Anggarannya mudah direncanakan.</p>

<h3>Kombinasi</h3>
<p>Retainer untuk urusan harian, ditambah biaya terpisah bila muncul perkara yang harus berjalan di
pengadilan. Pola ini memberi keleluasaan sekaligus keadilan bagi kedua pihak.</p>

<h2>Tanda Law Firm yang Sebaiknya Dihindari</h2>

<ul>
<li>Menjanjikan kemenangan sebelum mempelajari dokumen Anda.</li>
<li>Menolak memberi rincian biaya atau lingkup pekerjaan secara tertulis.</li>
<li>Tidak jelas siapa advokat yang akan menangani perkara Anda.</li>
<li>Ragu menyebut contoh penanganan pada industri yang sejenis.</li>
<li>Sulit memberi kabar, tetapi cepat menagih pembayaran.</li>
</ul>

<h2>Yang Sebaiknya Disiapkan Setelah Menunjuk Pendamping</h2>

<ol>
<li>Kumpulkan seluruh perjanjian yang masih berlaku dalam satu tempat, baik cetak maupun digital.</li>
<li>Buat catatan berisi kontak pihak-pihak yang biasa bekerja sama dengan perusahaan.</li>
<li>Tentukan satu orang di internal sebagai penghubung dengan kantor hukum agar informasinya tidak terpecah.</li>
<li>Jadwalkan peninjauan ulang dokumen secara berkala, misalnya tiap enam bulan untuk kontrak yang masih berjalan.</li>
</ol>
""",
    3574: """
<h2>Apa yang Terjadi Bila Dibiarkan</h2>

<p>Setiap situasi di atas punya pola konsekuensi yang mirip: pilihan menyelesaikan masalah menyempit, sementara
biaya dan waktu yang dibutuhkan bertambah.</p>

<ul>
<li><strong>Kontrak yang tidak ditinjau:</strong> klausul yang merugikan biasanya baru terasa saat salah satu
pihak tidak memenuhi kewajiban, dan saat itu posisi Anda sudah terkunci pada perjanjian yang sudah
ditandatangani.</li>
<li><strong>Somasi yang tidak dijawab:</strong> pihak lain bisa membacanya sebagai pengakuan atau pengabaian,
sehingga langkah berikutnya lebih cepat diambil.</li>
<li><strong>Perselisihan pemegang saham yang dibiarkan:</strong> operasional perusahaan ikut tersandera karena
keputusan penting tidak bisa diambil sementara.</li>
<li><strong>Kewajiban perizinan yang ditunda:</strong> sanksi administratif bisa menahan perluasan usaha, dan
perbaikan setelahnya jauh lebih rumit daripada mengurus dari awal.</li>
</ul>

<h2>Apa yang Terjadi Setelah Anda Menghubungi Law Firm</h2>

<p>Banyak pengusaha menunda karena membayangkan prosesnya rumit. Gambaran berikut biasanya berlaku umum:</p>

<ol>
<li><strong>Konsultasi awal.</strong> Anda menceritakan duduk perkaranya, kantor hukum memberi gambaran awal
tentang pilihan yang tersedia.</li>
<li><strong>Peninjauan dokumen.</strong> Dokumen yang Anda bawa diperiksa untuk memastikan posisi hukum
Anda.</li>
<li><strong>Penawaran lingkup dan biaya.</strong> Kantor hukum menyampaikan langkah yang akan ditempuh,
perkiraan waktu, dan rincian biayanya.</li>
<li><strong>Pemberian kuasa dan penanganan.</strong> Setelah kesepakatan, pekerjaan berjalan dengan laporan
berkala pada tiap tahap penting.</li>
</ol>

<h2>Biaya dan Waktu yang Perlu Disiapkan</h2>

<p>Besarnya biaya bergantung tingkat kerumitan perkara, jalur penyelesaian yang dipilih, dan nilai objek yang
diperselisihkan. Yang bisa Anda lakukan sejak awal adalah meminta rincian tertulis, memisahkan biaya jasa dari
biaya operasional, dan menanyakan apa yang terjadi bila perkara berjalan lebih lama dari perkiraan.</p>

<p>Untuk waktu, sengketa yang bisa diselesaikan lewat perundingan umumnya tuntas dalam hitungan pekan.
Perkara yang masuk pengadilan berjalan berbulan-bulan, dan pada tahap itu kesabaran serta kesiapan dokumen
sama pentingnya dengan kualitas pendamping.</p>

<h2>Satu Hal yang Sering Terlupakan</h2>

<p>Setelah perkara selesai, banyak perusahaan kembali bekerja seperti biasa tanpa memperbaiki akar masalahnya.
Padahal di situlah nilainya: memperbaiki format kontrak, menertibkan dokumen, dan menetapkan kebijakan
internal agar situasi yang sama tidak terulang. Kantor hukum yang baik akan membantu Anda menutup celah itu,
bukan hanya memenangkan perkara sekali jalan.</p>
""",
}


def req(p, method="GET", data=None):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    body = None
    if data is not None:
        body = json.dumps(data).encode(); h["Content-Type"] = "application/json"
    r = urllib.request.Request(f"https://{DOM}{p}", data=body, headers=h, method=method)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=200) as x:
                return x.status, json.loads(x.read())
        except urllib.error.HTTPError as e:
            return e.code, e.read().decode()[:200]
        except Exception:
            time.sleep(5)
    return 0, "gagal"


for pid, tambahan in TAMBAHAN.items():
    st, d = req(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=slug,content")
    if not isinstance(d, dict):
        print(f"#{pid}: gagal baca ({st})"); continue
    raw = d["content"]["raw"]
    if "Cara Menguji Calon" in raw or "Apa yang Terjadi Bila Dibiarkan" in raw:
        print(f"#{pid}: sudah pernah ditambah — dilewati"); continue
    if TANDA in raw:
        baru = raw.replace(TANDA, tambahan.strip() + "\n\n" + TANDA, 1)
    else:
        baru = raw.rstrip() + "\n" + tambahan
    print(f"#{pid} /{d['slug']}: {len(re.sub(r'<[^>]+>',' ',raw).split())} kata → "
          f"{len(re.sub(r'<[^>]+>',' ',baru).split())} kata")
    req(f"/wp-json/wp/v2/posts/{pid}", "POST", {"content": baru})
    st2, cek = req(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=content")
    raw2 = cek.get("content", {}).get("raw", "") if isinstance(cek, dict) else ""
    print(f"   tulis: {'✅' if raw2 == baru else '⚠️ tidak sama'} | kata sekarang: "
          f"{len(re.sub(r'<[^>]+>',' ',raw2).split())}")
    time.sleep(2)
