#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc04 Iklan Digital untuk RS & Klinik (cron run)
Posts the 5-slide carousel (album) to Threads + LinkedIn + FB
at next free slot (05:00 WIB), with nested replies + discussion hook.
"""
import json, os, sys
from datetime import datetime, timezone, timedelta
from repliz_client import ReplizClient, ACC
from diskusi_engine import tambahkan_diskusi

c = ReplizClient()

CAROUSEL_DIR = os.path.expanduser("~/.openclaw/workspace-atun/studiosoft_hc04_carousel")
SLIDE_FILES = ["01_cover.png", "02_mengapa.png", "03_langkah.png", "04_hasil.png", "05_cta.png"]

THREADS = tambahkan_diskusi(
    ('Iklan digital untuk RS & klinik bukan sekadar buang biaya.\n'
     'Dengan target yang tepat, anggaran kecil pun bisa jangkau pasien baru:\n'
     '🎯 Target radius & demografi pasien\n'
     '📊 Terukur — tahu berapa pasien masuk\n'
     '⚡ Hasil bisa terasa lebih cepat\n'
     '💲 Anggaran fleksibel, mulai kecil dulu\n\n'
     'Kuncinya: mulainya benar, lalu diukur & dioptimasi.'),
    platform='threads', industri='rumah_sakit', tone='netral')

LINKEDIN = tambahkan_diskusi(
    ('Iklan digital untuk rumah sakit dan klinik, efektif bila dikelola dengan strategi yang tepat.\n\n'
     'Banyak faskes mengira iklan berbayar itu mahal dan rumit. Padahal dengan penargetan yang presisi, budget kecil pun bisa menjangkau pasien yang tepat — di radius dan demografi yang memang membutuhkan layanan kita.\n\n'
     'Pendekatan bertahap yang bisa diterapkan:\n'
     '• Tetapkan tujuan sejak awal: pasien baru, kunjungan web, atau pendaftaran\n'
     '• Siapkan landing page yang jelas dan meyakinkan\n'
     '• Target radius serta demografi pasien dengan presisi\n'
     '• Mulai dengan budget kecil, lalu ukur hasilnya\n'
     '• Optimasi iklan yang paling efektif secara berkala\n\n'
     'Dengan data yang terukur, setiap rupiah yang dikeluarkan bisa dipertanggungjawabkan. Mau dibantu strategi iklan digital untuk faskes Anda? studiosoft.id'),
    platform='linkedin', industri='rumah_sakit', tone='opinion')

FB = tambahkan_diskusi(
    ('Iklan digital untuk RS dan klinik, efektif bila dikelola dengan strategi yang benar.\n'
     'Banyak faskes mengira iklan berbayar itu mahal dan rumit. Padahal dengan target yang presisi, budget kecil pun bisa menjangkau pasien yang tepat.\n\n'
     'Langkah bertahap yang bisa diterapkan:\n'
     '✓ Tetapkan tujuan: pasien baru / kunjungan web\n'
     '✓ Siapkan landing page yang jelas\n'
     '✓ Target radius & demografi pasien\n'
     '✓ Mulai budget kecil, ukur hasilnya\n'
     '✓ Optimasi yang paling efektif\n\n'
     'Setiap rupiah jadi terukur dan bisa dipertanggungjawabkan.\n\n'
     'Konsultasi strategi iklan digital untuk faskes: studiosoft.id'),
    platform='facebook', industri='rumah_sakit', tone='netral')

def upload_slides():
    urls = []
    for f in SLIDE_FILES:
        p = os.path.join(CAROUSEL_DIR, f)
        u = c.upload_to_wp(p, filename=f"ss_hc_iklan_{f}")
        if not u:
            print(f"❌ Upload gagal {f}")
            return None
        urls.append(u)
        print(f"✅ {f} → {u.split('/')[-1]}")
    return urls

def main():
    wib = datetime.now(timezone(timedelta(hours=7)))
    print(f"Time WIB: {wib.strftime('%Y-%m-%d %H:%M')}")
    print(f"Threads len: {len(THREADS)} (<=500: {len(THREADS)<=500})")

    url = upload_slides()
    if not url:
        return False
    medias = [c.make_media(u, "image", f"slide{i+1}") for i, u in enumerate(url)]

    # Next free slot = 05:00 WIB (Slot 1), replies at :01 and :02 WIB
    slot_base = c.next_slot_utc(5)
    print(f"Slot: 05:00 WIB → {slot_base}")

    base_dt = datetime.fromisoformat(slot_base.replace("Z", "+00:00"))
    r2 = (base_dt + timedelta(minutes=1)).strftime("%Y-%m-%dT%H:%M:%S.000Z")
    r3 = (base_dt + timedelta(minutes=2)).strftime("%Y-%m-%dT%H:%M:%S.000Z")

    results = {}

    # THREADS
    print("\n📱 THREADS:")
    try:
        album = c.schedule_album(ACC.STUDIOSOFT_THREADS, THREADS, slot_base, medias,
                                 title="Iklan Digital untuk RS & Klinik")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  ✅ Album → {pid}")
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "Butuh bantuan strategi iklan digital untuk RS & klinik?\nstudiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #IklanDigital #MetaAds #RumahSakit #Klinik #DigitalMarketing",
            r3, type_="text", replies=[pid])
        print("  ✅ 2 replies")
        results["threads"] = True
    except Exception as e:
        print(f"  ❌ {e}")
        results["threads"] = False

    # LINKEDIN
    print("\n💼 LINKEDIN:")
    try:
        album = c.schedule_album(ACC.STUDIOSOFT_LINKEDIN, LINKEDIN, slot_base, medias,
                                 title="Iklan Digital untuk RS & Klinik")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  ✅ Album → {pid}")
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "Tertarik membangun strategi iklan digital untuk RS & klinik Anda?\nstudiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #IklanDigital #HealthcareMarketing #MetaAds #DigitalMarketing",
            r3, type_="text", replies=[pid])
        print("  ✅ 2 replies")
        results["linkedin"] = True
    except Exception as e:
        print(f"  ❌ {e}")
        results["linkedin"] = False

    # FB
    print("\n🔵 FACEBOOK:")
    try:
        album = c.schedule_album(ACC.STUDIOSOFT_FB, FB, slot_base, medias,
                                 title="Iklan Digital untuk RS & Klinik")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  ✅ Album → {pid}")
        c.create_schedule(ACC.STUDIOSOFT_FB,
            "Ada pertanyaan seputar iklan digital untuk RS & klinik? Tanya di kolom komentar! 👇",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_FB,
            "#StudioSoft #IklanDigital #MetaAds #RumahSakit #Klinik #DigitalMarketing",
            r3, type_="text", replies=[pid])
        print("  ✅ 2 replies")
        results["fb"] = True
    except Exception as e:
        print(f"  ❌ {e}")
        results["fb"] = False

    print("\n" + "=" * 50)
    ok = all(results.values())
    print("✅ Semua platform dijadwalkan!" if ok else f"⚠️ Gagal: {[k for k,v in results.items() if not v]}")

    if ok:
        state = {"index": 4, "topic": "Iklan Digital RS & Klinik",
                 "last_post": wib.strftime("%Y-%m-%d %H:%M")}
        with open(os.path.expanduser("~/.openclaw/workspace-atun/studiosoft_healthcare_state.json"), "w") as f:
            json.dump(state, f)
        print("📝 State updated")
    return ok

if __name__ == "__main__":
    sys.exit(0 if main() else 1)
