#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc19 Landing Page Pendaftaran Online RS/Klinik (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_hc19_carousel")
SLIDE_FILES = ["01_cover.png", "02_kenapa.png", "03_isi.png", "04_langkah.png", "05_cta.png"]

ARTICLE_URL = "https://studiosoft.id/strategi-digital-marketing-rumah-sakit"

THREADS = tambahkan_diskusi(
    ('Landing page pendaftaran online itu pintu masuk pasien baru, tapi sering dilupakan.\n\n'
     'Padahal cukup sediakan:\n'
     '✅ Info layanan & jadwal dokter\n'
     '✅ Formulir daftar yang singkat\n'
     '✅ Tombol "DAFTAR SEKARANG" mencolok\n'
     '✅ Lokasi & nomor WA yang jelas\n\n'
     'Satu halaman yang rapi bisa menata semua alur pendaftaran.\n\n'
     'Landing page RS/klinik Anda sudah seperti ini?'),
    platform='threads', industri='rumah_sakit', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Halaman pendaftaran online sering jadi "anak tiri" di website RS. Padahal di sinilah calon pasien memutuskan mau datang atau tidak.\n\n'
     'Selemah apa pun iklan Anda, landing page yang berantakan bisa membuang konversi. Sebaliknya, halaman yang jelas bisa menuntun calon pasien dari penasaran jadi pendaftar.\n\n'
     '4 elemen yang wajib ada:\n'
     '1. Informasi layanan & jadwal dokter\n'
     '2. Formulir pendaftaran yang singkat\n'
     '3. Tombol CTA yang menonjol\n'
     '4. Lokasi & kontak yang mudah diakses\n\n'
     'Bold statement: kalau halaman pendaftaran Anda sulit dipakai, pasien pindah ke RS lain yang lebih mudah — diam-diam.\n\n'
     'Bantu siapkan landing page RS/klinik: www.studiosoft.id'),
    platform='linkedin', industri='rumah_sakit', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('Pasien zaman sekarang gak mau ribet telepon-terus-ngantri buat daftar. Mereka cari halaman pendaftaran online yang simpel dan jelas.\n\n'
     'Cukup sediakan:\n'
     '✓ Info layanan & jadwal dokter\n'
     '✓ Formulir daftar singkat (nama, kontak, keluhan)\n'
     '✓ Tombol "DAFTAR SEKARANG" yang mencolok\n'
     '✓ Alamat, peta, dan nomor WA\n\n'
     'Dari sini alur pendaftaran jadi rapi dan bisa diukur.\n\n'
     'Buat tim yang sudah punya halaman pendaftaran online yang mudah, 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_hc19_landing_{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="Landing Page Pendaftaran Online 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 landing page RS/klinik:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #LandingPageRS #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="Landing Page Pendaftaran Online 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 landing page RS:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #LandingPageRS #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="Landing Page Pendaftaran Online 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 #LandingPageRS #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": 19, "topic": "Landing Page Pendaftaran Online 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)
