#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc06 Klinik Kecil Butuh Digital Marketing (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_hc06_carousel")
SLIDE_FILES = ["01_cover.png", "02_mitos.png", "03_alasan.png", "04_langkah.png", "05_cta.png"]

ARTICLE_URL = "https://studiosoft.id/klinik-kecil-butuh-digital-marketing"

THREADS = tambahkan_diskusi(
    ('Mitos: "Klinik saya kecil, cukup pasien datang saja."\n'
     'Fakta: Justru klinik kecil paling diuntungkan digital marketing.\n\n'
     'Kenapa?\n'
     '✅ Biaya mulai lebih rendah\n'
     '🎯 Jangkauan lebih tepat sasaran\n'
     '⚡ Hasil lebih cepat terasa\n'
     '🆓 Bisa mulai dari gratis (GBP, IG, SEO)\n\n'
     'Mulai dari satu langkah hari ini — jangan menunggu "sempurna".'),
    platform='threads', industri='rumah_sakit', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Mitos terbesar di dunia kesehatan: "Klinik saya kecil, cukup pasien datang saja."\n\n'
     'Justru sebaliknya — klinik kecil paling diuntungkan digital marketing:\n'
     '• Bisa dimulai dari Rp0 (Google Business Profile gratis)\n'
     '• SEO lokal tidak membedakan besar kecil, yang penting relevan\n'
     '• Iklan FB bisa mulai dari budget harian kecil\n'
     '• Jangkauan terukur dibanding brosur atau spanduk\n\n'
     'Kuncinya bukan budget besar, tapi konsisten dan relevan. Klinik kecil yang rajin edukasi justru lebih dekat dengan pasien.\n\n'
     'Konsultasi strategi digital marketing untuk klinik kecil: www.studiosoft.id'),
    platform='linkedin', industri='rumah_sakit', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('Banyak pemilik klinik kecil berpikir: "Ah, klinik saya kecil, cukup pasien datang aja."\n\n'
     'Ini mitos terbesar di dunia kesehatan. Justru klinik kecil yang paling diuntungkan digital marketing — dan bisa mulai dari GRATIS.\n\n'
     'Google Business Profile gratis. Posting Instagram gratis. SEO jangka panjang juga gratis.\n\n'
     'Yang penting konsisten dan relevan dengan pasien sekitar Anda. Kedekatan adalah kekuatan klinik kecil yang tidak dimiliki RS besar.\n\n'
     'Panduan lengkap: www.studiosoft.id'),
    platform='facebook', industri='rumah_sakit', tone='sanjungan', force=True)


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_klinikkecil_{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})")
    if len(THREADS) > 500:
        print("❌ Threads caption > 500 karakter, tolak kirim.")
        return False

    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="Klinik Kecil & Digital Marketing")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  ✅ Album → {pid}")
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            f"Baca selengkapnya: {ARTICLE_URL}\n\nKonsultasi strategi digital marketing klinik:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #KlinikKecil #DigitalMarketing #Healthcare #UMKM",
            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="Klinik Kecil & Digital Marketing")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  ✅ Album → {pid}")
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            f"Baca artikel lengkapnya: {ARTICLE_URL}\n\nKonsultasi strategi untuk klinik kecil Anda:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #KlinikKecil #DigitalMarketing #HealthcareManagement #UMKM",
            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="Klinik Kecil & Digital Marketing")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  ✅ Album → {pid}")
        c.create_schedule(ACC.STUDIOSOFT_FB,
            "Baca artikel lengkapnya: " + ARTICLE_URL,
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_FB,
            "#StudioSoft #KlinikKecil #DigitalMarketing #Healthcare #UMKM",
            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": 6, "topic": "Klinik Kecil DM",
                 "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)
