#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc23 Google Ads untuk 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_hc23_carousel")
SLIDE_FILES = ["01_cover.png", "02_kenapa.png", "03_isi.png", "04_langkah.png", "05_cta.png"]

ARTICLE_URL = "https://studiosoft.id/8-alasan-kenapa-jasa-seo-surabaya-lebih-efektif-dibanding-iklan-berbayar/"

THREADS = tambahkan_diskusi(
    ('Iklan di Google itu bukan sekadar pasang kata kunci — kalau salah, budget habis tanpa pasien datang.\n\n'
     'Biar iklan RS/klinik efektif, perhatikan:\n'
     '✅ Kata kunci layanan + lokasi, bukan kata umum\n'
     '✅ Landing page yang relevan & cepat dibuka\n'
     '✅ Pesan jelas: layanan, harga wajar, ajak booking\n'
     '✅ Pantau hasil, singkirkan iklan yang boros\n\n'
     'Iklan yang tepat muncul justru saat pasien sedang mencari.\n\n'
     'Menurut Anda, apakah Google Ads lebih efektif daripada SEO untuk fasyankes?'),
    platform='threads', industri='rumah_sakit', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Banyak RS dan klinik membuang budget iklan karena pasang kata kunci yang salah atau halaman tujuan yang tidak relevan.\n\n'
     'Google Ads untuk fasyankes baru efektif jika fondasinya benar:\n'
     '1. Kata kunci spesifik dengan lokasi, bukan kata umum yang mahal\n'
     '2. Landing page yang relevan, cepat, dan mengajak pendaftaran\n'
     '3. Pesan yang jelas dan tidak melebih-lebihkan klaim kesehatan\n'
     '4. Pantau metrik konversi, bukan sekadar klik\n\n'
     'Bold statement: iklan berbayar tanpa SEO dan konten yang kuat justru membuat biaya per pasien semakin mahal.\n\n'
     'Strategi iklan & SEO yang terukur untuk fasyankes: www.studiosoft.id'),
    platform='linkedin', industri='rumah_sakit', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('Iklan Google Ads untuk RS dan klinik bisa sangat efektif — asal tidak asal pasang.\n\n'
     'Kesalahan yang sering terjadi:\n'
     '❌ Kata kunci terlalu umum jadi mahal\n'
     '❌ Iklan mengarah ke halaman yang tidak relevan\n'
     '❌ Tidak memantau hasil atau mematikan yang boros\n\n'
     'Yang benar:\n'
     '✓ Kata kunci layanan + lokasi spesifik\n'
     '✓ Landing page cepat dan jelas\n'
     '✓ Pesan yang jujur dan mengajak booking\n'
     '✓ Ukur konversi, perbaiki terus\n\n'
     'Iklan yang tepat akan muncul saat pasien sedang mencari.\n\n'
     'Buat tim fasyankes yang sudah menjaga strategi iklan & SEO secara seimbang, 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_hc23_googleads_{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="Google Ads 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 iklan & SEO RS/klinik:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #GoogleAds #RumahSakit #Klinik #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="Google Ads 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 iklan & SEO RS:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #GoogleAdsRS #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="Google Ads 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 #GoogleAds #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": 22, "topic": "Google Ads untuk 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)
