#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — hc08 Google Business Profile untuk Klinik (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_hc08_carousel")
SLIDE_FILES = ["01_cover.png", "02_apa.png", "03_langkah.png", "04_tips.png", "05_cta.png"]

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

THREADS = tambahkan_diskusi(
    ('Klinik Anda muncul di Google Maps belum?\n\n'
     'Google Business Profile (GBP) itu gerbang pertama pasien nemu lokasi Anda — gratis, tapi sering diabaikan.\n\n'
     'Data lengkap, foto jelas, review aktif, Q&A terisi. Itu yang bikin klinik gampang ditemukan & dipercaya pasien baru.'),
    platform='threads', industri='seo', tone='netral', force=True)

LINKEDIN = tambahkan_diskusi(
    ('Banyak klinik punya website bagus, tapi lupa satu pintu paling penting: Google Business Profile.\n\n'
     'GBP yang teroptimasi artinya:\n'
     '• Data lokasi & jam buka akurat\n'
     '• Foto terbaru dan jelas\n'
     '• Review dikelola, semua dibalas\n'
     '• Q&A terisi dengan jawaban yang benar\n\n'
     'Hasilnya: pasien lebih mudah menemukan Anda dan lebih percaya sebelum datang.\n\n'
     'Audit GBP gratis untuk klinik Anda: www.studiosoft.id'),
    platform='linkedin', industri='seo', tone='opini', force=True)

FB = tambahkan_diskusi(
    ('Pasien zaman sekarang cari klinik lewat Google Maps, bukan brosur. Dan langkah pertama mereka adalah lihat Google Business Profile Anda.\n\n'
     'Yang sering keliru: GBP dibuat sekali lalu dibiarkan. Padahal harus dirawat:\n'
     '✅ Data lengkap dan akurat (alamat, jam buka, nomor)\n'
     '✅ Foto cover & profil yang terbaru\n'
     '✅ Review aktif — balas semua ulasan pasien\n'
     '✅ Q&A diisi biar calon pasien langsung dapat jawaban\n\n'
     'GBP yang rapi bukan cuma soal muncul di peta, tapi soal kepercayaan sebelum pasien melangkah masuk.\n\n'
     'Yang sudah rutin merawat GBP kliniknya, Anda tepat sasaran! 👏'),
    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_gbp_{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="Google Business Profile untuk Klinik")
        pid = album.get("scheduleId") or album.get("_id")
        print(f"  ✅ Album → {pid}")
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            f"Baca selengkapnya: {ARTICLE_URL}\n\nAudit GBP gratis:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_THREADS,
            "#StudioSoft #GBP #SEO #Healthcare #Klinik",
            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="Google Business Profile untuk Klinik")
        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\nAudit GBP untuk klinik Anda:\nwww.studiosoft.id",
            r2, type_="text", replies=[pid])
        c.create_schedule(ACC.STUDIOSOFT_LINKEDIN,
            "#StudioSoft #GBP #SEOLokal #Healthcare #Klinik",
            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="Google Business Profile untuk Klinik")
        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 #GBP #SEO #Healthcare #Klinik",
            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": 8, "topic": "Google Business Profile",
                 "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)
