#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc24 Testimoni & Review Pasien Online (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_hc24_carousel")
SLIDE_FILES = ["01_cover.png", "02_kenapa.png", "03_isi.png", "04_langkah.png", "05_cta.png"]

ARTICLE_URL = "https://studiosoft.id/google-business-profile-klinik/"

THREADS = tambahkan_diskusi(
    ('Ulasan pasien di Google jadi bahan pertimbangan utama sebelum orang memilih RS atau klinik.\n\n'
     'Biar kepercayaan tumbuh, kelola ulasan dengan baik:\n'
     '✅ Minta review setelah pasien selesai dirawat\n'
     '✅ Tampilkan testimoni terbaik di website\n'
     '✅ Balas setiap ulasan, termasuk yang kritik\n'
     '✅ Pantau skor dan jadikan bahan perbaikan\n\n'
     'Review yang jujur dan dikelola baik jadi pemasaran paling kuat.\n\n'
     'Menurut Anda, apakah ulasan online lebih menentukan daripada brosur saat memilih fasyankes?'),
    platform='threads', industri='rumah_sakit', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Keputusan pasien memilih RS/klinik kini sangat dipengaruhi ulasan online, bukan sekadar reputasi lama.\n\n'
     'Testimoni yang dikelola strategis memberi dampak nyata:\n'
     '1. Ulasan jujur membangun kepercayaan yang lebih kuat dari iklan\n'
     '2. Testimoni spesifik tentang layanan relevan menarik pasien target\n'
     '3. Membalas ulasan, termasuk kritik, menunjukkan RS responsif\n'
     '4. Skor review menjadi bahan evaluasi layanan secara berkala\n\n'
     'Bold statement: fasyankes yang mengabaikan ulasan pasien kehilangan peluang kepercayaan terbesar di era digital.\n\n'
     'Strategi kelola ulasan & reputasi digital fasyankes: www.studiosoft.id'),
    platform='linkedin', industri='rumah_sakit', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('Testimoni pasien bukan sekadar pajangan — itu fondasi kepercayaan terhadap RS/klinik Anda.\n\n'
     'Yang sering dilewatkan:\n'
     '❌ Tidak minta ulasan setelah pasien pulang\n'
     '❌ Review kurang baik dibiarkan tanpa tanggapan\n'
     '❌ Testimoni bagus tidak ditampilkan di website\n\n'
     'Yang benar:\n'
     '✓ Rutin minta review setelah pelayanan selesai\n'
     '✓ Balas semua ulasan dengan sopan dan cepat\n'
     '✓ Tampilkan testimoni terbaik di media sosial\n'
     '✓ Jadikan masukan pasien bahan perbaikan layanan\n\n'
     'Ulasan yang dikelola baik menjadi aset pemasaran paling jujur dan murah.\n\n'
     'Buat tim fasyankes yang sudah konsisten merawat reputasi digitalnya, 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_hc24_testimoni_{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="Testimoni & Review Pasien Online untuk 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 strategi reputasi digital RS/klinik:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #TestimoniRS #ReviewPasien #RumahSakit #HealthcareDigital",
            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="Testimoni & Review Pasien Online untuk 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 strategi reputasi digital RS:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #TestimoniRS #Healthcare #RumahSakit #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="Testimoni & Review Pasien Online untuk 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 #TestimoniRS #ReviewPasien #RumahSakit #Klinik",
            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": 23, "topic": "Testimoni & Review Pasien Online",
                 "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)
