#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc09 Iklan FB & IG Rumah Sakit (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_hc09_carousel")
SLIDE_FILES = ["01_cover.png", "02_mengapa.png", "03_target.png", "04_langkah.png", "05_cta.png"]

ARTICLE_URL = "https://studiosoft.id/iklan-facebook-rumah-sakit"

THREADS = tambahkan_diskusi(
    ('Iklan rumah sakit di FB & IG bisa efektif — asal etis dan sesuai regulasi.\n\n'
     'Klaim medis tak boleh berlebihan, konten harus edukatif, dan target audiens yang pas (ibu hamil, lansia, warga lokal).\n\n'
     'Iklan yang benar bukan cuma menjangkau banyak orang, tapi menjangkau orang yang tepat.'),
    platform='threads', industri='seo', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Banyak rumah sakit ragu beriklan karena takut melanggar etika atau regulasi kesehatan. Padahal ada jalur yang aman dan efektif.\n\n'
     'Iklan FB & IG untuk RS yang benar:\n'
     '• Klaim medis jujur, tidak dilebih-lebihkan\n'
     '• Visual tenang dan profesional\n'
     '• Target pas: ibu hamil, lansia, radius lokal\n'
     '• Landing page pendaftaran yang mudah\n'
     '• Tetap patuh regulasi kesehatan\n\n'
     'Dengan cara ini, iklan jadi jembatan edukasi sekaligus pertumbuhan pasien.\n\n'
     'Konsultasi strategi iklan untuk RS Anda: www.studiosoft.id'),
    platform='linkedin', industri='seo', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('Iklan rumah sakit yang efektif itu bukan yang paling keras, tapi yang paling tepat sasaran dan etis.\n\n'
     'Yang sering keliru: memaksakan klaim berlebihan supaya menarik. Padahal bisa bikin pasien justru ragu.\n\n'
     'Cara yang benar:\n'
     '✅ Konten edukatif, bukan sebatas promosi\n'
     '✅ Targeting pas (ibu hamil, lansia, warga lokal)\n'
     '✅ Visual yang menenangkan & profesional\n'
     '✅ Landing page pendaftaran yang mudah\n'
     '✅ Tetap patuh regulasi kesehatan\n\n'
     'Iklan sehat = pasien nyaman dan percaya.\n\n'
     'Terima kasih buat yang sudah konsisten menjaga etika dalam promosi kesehatan — itu langkah yang jarang tapi sangat berharga! 👏'),
    platform='facebook', industri='seo', 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_iklan_{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="Iklan FB & IG Rumah Sakit")
        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 iklan gratis:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #IklanRS #MarketingKesehatan #MetaAds #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="Iklan FB & IG Rumah Sakit")
        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 iklan untuk RS Anda:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #IklanRS #MarketingKesehatan #MetaAds #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="Iklan FB & IG Rumah Sakit")
        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 #IklanRS #MarketingKesehatan #MetaAds #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": 9, "topic": "Iklan FB & IG Rumah Sakit",
                 "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)
