#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc20 Konten Edukasi Kesehatan untuk Kepercayaan Pasien (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_hc20_carousel")
SLIDE_FILES = ["01_cover.png", "02_kenapa.png", "03_isi.png", "04_langkah.png", "05_cta.png"]

ARTICLE_URL = "https://studiosoft.id/konten-edukasi-kesehatan-kepercayaan-pasien"

THREADS = tambahkan_diskusi(
    ('Pasien lebih percaya RS yang mengedukasi daripada yang cuma promosi diskon.\n\n'
     'Cukup rutin bagikan:\n'
     '✅ Info gejala & kapan harus ke dokter\n'
     '✅ Mitos vs fakta kesehatan\n'
     '✅ Tips pola hidup sehat\n'
     '✅ Jawaban atas pertanyaan pasien\n\n'
     'Konten yang bermanfaat menumbuhkan kepercayaan — sebelum pasien datang, mereka sudah yakin.\n\n'
     'RS/klinik Anda sudah rutin bikin konten edukasi?'),
    platform='threads', industri='rumah_sakit', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Konten edukasi kesehatan adalah cara paling halus sekaligus paling efektif membangun kepercayaan pasien.\n\n'
     'Pasien zaman sekarang tidak mencari RS dengan iklan kosong — mereka mencari yang bisa dipercaya. Dan kepercayaan itu lahir dari informasi yang bermanfaat dan akurat.\n\n'
     'Yang bisa Anda lakukan:\n'
     '1. Angkat topik yang sering ditanyakan pasien\n'
     '2. Libatkan dokter sebagai narasumber terpercaya\n'
     '3. Sajikan ringkas, jelas, tanpa klaim berlebihan\n'
     '4. Sebar konsisten di IG, FB, dan artikel website\n\n'
     'Bold statement: RS yang hanya jualan tanpa edukasi dianggap kurang peduli pada pasien — diam-diam ia kehilangan kepercayaan.\n\n'
     'Bantu susun strategi konten edukasi RS/klinik Anda: www.studiosoft.id'),
    platform='linkedin', industri='rumah_sakit', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('RS dan klinik yang rajin berbagi edukasi kesehatan justru lebih dipercaya pasien daripada yang hanya promosi.\n\n'
     'Mengapa? Karena konten yang bermanfaat menunjukkan kepedulian — bukan sekadar mengejar pasien.\n\n'
     'Ide konten yang bisa dipakai:\n'
     '✓ Gejala umum dan kapan harus ke dokter\n'
     '✓ Mitos vs fakta seputar kesehatan\n'
     '✓ Tips mencegah penyakit lewat pola hidup sehat\n'
     '✓ Jawaban atas pertanyaan yang sering masuk\n\n'
     'Rutin membagikannya di IG, FB, dan artikel website akan membangun kepercayaan sebelum pasien memutuskan datang.\n\n'
     'Buat tim yang sudah konsisten berbagi edukasi, 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_hc20_edukasi_{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="Konten Edukasi Kesehatan & Kepercayaan Pasien")
        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 strategi konten RS/klinik:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #EdukasiKesehatan #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="Konten Edukasi Kesehatan & Kepercayaan Pasien")
        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 strategi konten RS:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #EdukasiKesehatan #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="Konten Edukasi Kesehatan & Kepercayaan Pasien")
        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 #EdukasiKesehatan #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": 20, "topic": "Konten Edukasi Kesehatan untuk Kepercayaan Pasien",
                 "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)
