#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc18 Ukur Hasil Digital Marketing RS (KPI & ROI) (cron run)
Posts the 5-slide carousel (album) to Threads + LinkedIn + FB
at next free slot, 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_hc18_carousel")
SLIDE_FILES = ["01_cover.png", "02_kenapa.png", "03_kpi.png", "04_langkah.png", "05_cta.png"]

ARTICLE_URL = "https://studiosoft.id/data-analytics-rumah-sakit-kebutuhan-pasien"

THREADS = tambahkan_diskusi(
    ('Digital marketing RS & klinik biasanya jalan, tapi tanpa diukur hasilnya cuma "jalan-jalan".\n\n'
     'Padahal cukup pantau 5 hal:\n'
     '✅ Telp/WA masuk calon pasien\n'
     '✅ Booking janji temu\n'
     '✅ Kunjungan pasien\n'
     '✅ Biaya per pasien baru\n'
     '✅ Nilai balik tiap budget\n\n'
     'Dengan angka, keputusan jadi tegas — bukan menebak.\n\n'
     'Strategi digital RS Anda sudah diukur pakai KPI?'),
    platform='threads', industri='rumah_sakit', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Banyak RS mengeluarkan budget digital marketing tanpa pernah mengukur hasilnya. Padahal KPI sederhana bisa langsung menunjukkan mana yang efektif.\n\n'
     '5 KPI kunci untuk RS & klinik:\n'
     '1. Volume telp/WA masuk dari calon pasien\n'
     '2. Jumlah booking janji temu\n'
     '3. Kunjungan pasien yang terealisasi\n'
     '4. Biaya per pasien baru (cost per acquisition)\n'
     '5. Return on marketing investment\n\n'
     'Tanpa data, keputusan hanya berdasarkan perasaan — dan itu risiko di sektor kesehatan yang margin-nya ketat.\n\n'
     'Bold statement: marketing yang tidak diukur bukan strategi, melainkan harapan.\n\n'
     'Pendampingan KPI digital marketing RS/klinik: www.studiosoft.id'),
    platform='linkedin', industri='rumah_sakit', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('Banyak RS & klinik gak sadar berapa banyak pasien baru yang sebenarnya datang dari digital marketing. Karena gak pernah diukur.\n\n'
     'Padahal cukup pantau beberapa angka:\n'
     '✓ Berapa telp/WA masuk\n'
     '✓ Berapa yang jadi booking\n'
     '✓ Berapa yang benar-benar datang\n'
     '✓ Berapa biaya buat tiap pasien baru\n'
     '✓ Berapa baliknya dari tiap rupiah budget\n\n'
     'Dari situ strategi bisa digandakan atau diperbaiki. No tebak-tebakan.\n\n'
     'Buat tim yang sudah rutin pantau KPI digital marketing, Anda selangkah lebih maju! 👏'),
    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_hc18_kpi_{f}")
        if not u:
            print(f"GAGAL upload {f}")
            return None
        urls.append(u)
        print(f"OK {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 (Slot 1 = 05:00 WIB), replies at :01 and :02 WIB
    slot = c.next_slot_utc(5)
    print(f"Slot: 05:00 WIB -> {slot}")

    base_dt = datetime.fromisoformat(slot.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("\nTHREADS:")
    try:
        album = c.schedule_album(ACC.STUDIOSOFT_THREADS, THREADS, slot, medias,
                                 title="Ukur Hasil Digital Marketing RS & Klinik")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  OK Album -> {pid}")
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            f"Baca selengkapnya: {ARTICLE_URL}\n\nKonsultasi KPI digital marketing RS/klinik:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #KPIRumahSakit #DigitalMarketing #RumahSakit #Klinik",
            r3, type_="text", replies=[pid])
        print("  OK 2 replies")
        results["threads"] = True
    except Exception as e:
        print(f"  GAGAL {e}")
        results["threads"] = False

    # LINKEDIN
    print("\nLINKEDIN:")
    try:
        album = c.schedule_album(ACC.STUDIOSOFT_LINKEDIN, LINKEDIN, slot, medias,
                                 title="Ukur Hasil Digital Marketing RS & Klinik")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  OK Album -> {pid}")
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            f"Baca artikel lengkapnya: {ARTICLE_URL}\n\nKonsultasi KPI digital marketing RS:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #KPIRumahSakit #Healthcare #DigitalMarketing",
            r3, type_="text", replies=[pid])
        print("  OK 2 replies")
        results["linkedin"] = True
    except Exception as e:
        print(f"  GAGAL {e}")
        results["linkedin"] = False

    # FB
    print("\nFACEBOOK:")
    try:
        album = c.schedule_album(ACC.STUDIOSOFT_FB, FB, slot, medias,
                                 title="Ukur Hasil Digital Marketing RS & Klinik")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  OK 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 #KPIRumahSakit #DigitalMarketing #RumahSakit",
            r3, type_="text", replies=[pid])
        print("  OK 2 replies")
        results["fb"] = True
    except Exception as e:
        print(f"  GAGAL {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": 18, "topic": "KPI & ROI Digital Marketing 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)
