#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc14 Review Online & Kepercayaan Pasien (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_hc14_carousel")
SLIDE_FILES = ["01_cover.png", "02_review.png", "03_detail1.png", "04_detail2.png", "05_cta.png"]

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

THREADS = tambahkan_diskusi(
    ('Review pasien itu etalase kepercayaan RS & klinik:\n\n'
     '✅ Pasien cek review sebelum memutuskan datang\n'
     '✅ Review bagus = kepercayaan instan\n'
     '✅ Balas review (baik & buruk) secara profesional\n'
     '✅ Jadikan kritik bahan perbaikan layanan\n\n'
     'Menurut Anda, apa hal terpenting yang bikin pasien percaya pada sebuah rumah sakit?'),
    platform='threads', industri='rumah_sakit', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Review online sering diremehkan, padahal ini salah satu penentu utama reputasi RS & klinik.\n\n'
     'Pasien kini cek Google dan media sosial sebelum datang. Review bagus membangun kepercayaan instan; review buruk yang tak dijawab bisa menangkal calon pasien.\n\n'
     'Yang membedakan bukan sempurna tanpa kritik, tapi cara merespons kritik secara profesional dan konsisten. Reputasi dibangun dari tanggapan, bukan dari menghindari masalah.\n\n'
     'Bold statement: RS yang mengabaikan review pasien akan tertinggal dari yang merawatnya dengan serius.\n\n'
     'Konsultasi strategi reputasi digital RS & klinik Anda: www.studiosoft.id'),
    platform='linkedin', industri='rumah_sakit', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('Review pasien adalah cermin layanan RS/klinik Anda:\n\n'
     '✅ Minta review setelah pasien puas — ajukan dengan sopan\n'
     '✅ Balas setiap review, baik maupun buruk\n'
     '✅ Kritik dijawab profesional = nilai plus tersendiri\n'
     '✅ Monitor review rutin, jadikan bahan perbaikan\n\n'
     'Kuncinya bukan menghindari kritik, tapi konsisten menjaga kualitas dan merespons dengan baik. Buat yang sudah rutin menjaga reputasi ini, 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_hc_RP_{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="Review Online & Kepercayaan Pasien")
        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 website RS & klinik Anda:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #ReviewPasien #ReputasiOnline #DigitalMarketingRS #Healthcare",
            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="Review Online & Kepercayaan Pasien")
        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 website RS Anda:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #ReviewPasien #ReputasiOnline #DigitalMarketingRS #Healthcare",
            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="Review Online & Kepercayaan Pasien")
        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 #ReviewPasien #ReputasiOnline #DigitalMarketingRS #Healthcare",
            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": 14, "topic": "Review Online & 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)
