#!/usr/bin/env python3
"""Bank caption Threads bergaya "kasus klien + pertanyaan" untuk @ukyhandoko,
dijadwalkan 1 post/hari jam 10:00 WIB (slot 09:00–11:00 yang menurut riset paling ramai).
Pakai --apply untuk membuat jadwal."""
import json, sys
from datetime import datetime, timedelta, timezone

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from repliz_client import get_client, ACC          # noqa: E402

client = get_client()

CAPTION = [
    "Klien saya minta turunkan biaya iklan 30%, tapi produknya belum ada diferensiasi. Kalian biasanya mulai dari mana?",
    "Ada klien yang mau langsung jualan lewat iklan, padahal websitenya belum punya satu pun testimoni. Kalau ketemu kasus begitu, kalian bereskan dulu atau tetap jalan?",
    "Saya selalu berdebat soal ini: naikkan volume konten, atau naikkan mutunya. Tim kalian condong ke mana?",
    "Klien minta hasil terukur di bulan pertama, padahal semuanya baru dimulai dari nol. Kalian biasanya menjanjikan apa di bulan pertama?",
    "Biaya iklan naik tiap kuartal, tapi konversinya tetap. Kalian memeriksa bagian mana dulu?",
    "Website klien cepat, isinya rapi, tapi tidak ada yang menghubungi. Menurut kalian masalahnya di mana?",
    "Saya pernah menolak klien karena briefnya tidak masuk akal secara bisnis. Kalian pernah melakukan hal yang sama?",
    "Tim kecil, permintaan banyak. Kalian menolak pekerjaan, atau menambah orang dulu?",
    "Kalau anggarannya cuma cukup untuk satu hal, konten atau iklan, kalian pilih mana? Saya penasaran alasannya.",
    "Laporan bulanan: menurut pengalaman kalian, berapa angka yang benar-benar dibaca klien sampai habis?",
    "Klien minta gaya bahasa santai, padahal industrinya serius. Kalian ikut kemauan klien atau mempertahankan gaya sendiri?",
    "Konten yang paling banyak dibaca justru yang paling murah dibuat. Kalian punya contoh serupa?",
    "Ada klien menuntut peringkat nomor satu di kota besar, dengan anggaran seadanya. Kalian menyampaikan ini dengan cara bagaimana?",
    "Setelah bertahun-tahun kerja, saya baru sadar yang membuat klien bertahan bukan hasilnya, tapi cara kita melaporkannya. Setuju?",
    "Saya lebih sering belajar dari proyek yang gagal daripada yang berhasil. Kalian menyimpan catatan kegagalan proyek?",
    "Kalau harus memilih antara klien yang bayarnya besar tapi sulit, atau kecil tapi lancar, kalian pilih mana?",
]

JAM_WIB = 10
MULAI = datetime.now(timezone.utc).date() + timedelta(days=1)
jam_utc = (JAM_WIB - 7) % 24
geser = 0 if JAM_WIB - 7 >= 0 else 1

print(f"bank caption: {len(CAPTION)} butir | slot {JAM_WIB}:00 WIB mulai {MULAI}\n")
rencana = []
for i, teks in enumerate(CAPTION):
    hari = MULAI + timedelta(days=i)
    slot = datetime(hari.year, hari.month, hari.day, jam_utc, 0, 0, tzinfo=timezone.utc) + timedelta(days=geser)
    rencana.append({"teks": teks, "slot": slot.strftime("%Y-%m-%dT%H:%M:%S.000Z"),
                    "wib": (slot + timedelta(hours=7)).strftime("%d %b %H:%M")})
    print(f"   {rencana[-1]['wib']} | {len(teks):>3} char | {teks[:62]}")

panjang = [len(c) for c in CAPTION]
print(f"\npanjang caption: {min(panjang)}–{max(panjang)} karakter (batas Threads 500)")
print(f"memuat tautan: {sum(1 for c in CAPTION if 'http' in c or 'www.' in c)}")
print(f"memuat pertanyaan: {sum(1 for c in CAPTION if '?' in c)}/{len(CAPTION)}")

if "--apply" not in sys.argv:
    print("\n(dry run — pakai --apply untuk menjadwalkan)")
    json.dump(rencana, open(f"{WS}/drafts/threads_bank_kasus_klien.json", "w"), indent=1, ensure_ascii=False)
    sys.exit(0)

print("\n=== membuat jadwal ===")
ok = gagal = 0
for r in rencana:
    try:
        hasil = client.schedule_text(ACC.UKY_THREADS, r["teks"], r["slot"])
        sid = hasil.get("scheduleId") if isinstance(hasil, dict) else None
        cek = client.get_schedule(sid) if sid else {}
        benar = isinstance(cek, dict) and str(cek.get("scheduleAt", ""))[:16] == r["slot"][:16] and cek.get("status") == "pending"
        ok += 1 if benar else 0
        gagal += 0 if benar else 1
        print(f"   {r['wib']} | {'✅' if benar else '⚠️'} | id {sid}")
    except Exception as e:
        gagal += 1
        print(f"   {r['wib']} | ❌ {str(e)[:70]}")
print(f"\nselesai: berhasil {ok} | gagal {gagal}")
