#!/usr/bin/env python3
"""StudioSoft Healthcare Carousel — Data Analytics RS
Resolusi: 1080×1350 (4:5 portrait)
BG: Biru tua #1E40AF
Teks: Putih #FFFFFF
Font: Poppins
Safe zone: 65px margin
"""

from PIL import Image, ImageDraw, ImageFont
import os, json, urllib.request

OUT_DIR = os.path.expanduser("~/.openclaw/workspace-atun/studiosoft_healthcare_analytics")
os.makedirs(OUT_DIR, exist_ok=True)

W, H = 1080, 1350
BLUE = (30, 64, 175)  # #1E40AF
WHITE = (255, 255, 255)
M = 65

FONT_DIR = os.path.expanduser("~/.fonts")

# Fonts
B140 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 140)
B120 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 120)
B100 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 100)
B85 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 85)
B50 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 50)
B30 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 30)
SB44 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 44)
SB36 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 36)
REG40 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 40)
REG36 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 36)
REG32 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 32)
REG28 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 28)
REG24 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 24)
REG20 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 20)

# Featured image for WP
FEATURED_PATH = os.path.expanduser("~/.openclaw/workspace-atun/featured_healthcare_v2/data-analytics-rumah-sakit-kebutuhan-pasien.jpeg")

def fh(drw, text, font):
    b = drw.textbbox((0, 0), text, font=font)
    return b[3] - b[1]

def fw(drw, text, font):
    return drw.textbbox((0, 0), text, font=font)[2]

def wrap_text(drw, text, font, max_w):
    words = text.split()
    if not words:
        return [""]
    lines = []
    cur = ""
    for w in words:
        test = cur + (" " if cur else "") + w
        if fw(drw, test, font) <= max_w:
            cur = test
        else:
            if cur:
                lines.append(cur)
            cur = w
    if cur:
        lines.append(cur)
    return lines if lines else [""]

def slide_cover():
    """Slide 1 — Cover"""
    img = Image.new("RGB", (W, H), BLUE)
    d = ImageDraw.Draw(img)

    # Header
    d.text((M, 30), "STUDIOSOFT", font=B30, fill=WHITE)
    d.text((W - M, 30), "1/5", font=REG24, fill=WHITE, anchor="rt")

    # Title
    title_lines = [
        "DATA",
        "ANALYTICS",
        "UNTUK RS",
    ]
    y = 320
    for line in title_lines:
        d.text((M, y), line, font=B140, fill=WHITE)
        y += 130

    # Garis
    y += 20
    for i in range(6):
        dx = M + i * 30
        d.line([(dx, y), (dx + 18, y)], fill=WHITE, width=3)

    y += 50
    d.text((M, y), "Pahami kebutuhan pasien\nmelalui data", font=REG36, fill=WHITE)

    # Footer
    d.text((M, H - 50), "studiosoft.id", font=REG20, fill=WHITE)
    d.text((W - M, H - 50), "#DataDriven", font=REG20, fill=WHITE, anchor="rt")

    p = os.path.join(OUT_DIR, "01_cover.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def slide_mengapa():
    """Slide 2 — Kenapa Data Analytics"""
    img = Image.new("RGB", (W, H), BLUE)
    d = ImageDraw.Draw(img)

    # Header
    d.text((M, 30), "STUDIOSOFT", font=B30, fill=WHITE)
    d.text((W - M, 30), "2/5", font=REG24, fill=WHITE, anchor="rt")

    # Title
    d.text((M, 140), "KENAPA DATA", font=B85, fill=WHITE)
    d.text((M, 240), "ANALYTICS?", font=B85, fill=WHITE)

    items = [
        ("📊", "70% RS belum analisis data pasien"),
        ("🔍", "Ketahui layanan paling dicari"),
        ("🕐", "Jam booking tertinggi pasien"),
        ("👥", "Demografi & asal pasien"),
        ("💬", "Feedback & keluhan utama"),
        ("📈", "Optimasi strategi marketing"),
    ]

    y = 440
    for emoji, text in items:
        d.text((M, y), f"{emoji}  {text}", font=REG32, fill=WHITE)
        y += 120

    d.text((M, H - 100), "Data bicara — Anda tinggal mendengar", font=SB36, fill=WHITE)

    # Footer
    d.text((M, H - 50), "studiosoft.id", font=REG20, fill=WHITE)
    d.text((W - M, H - 50), "#DataAnalytics", font=REG20, fill=WHITE, anchor="rt")

    p = os.path.join(OUT_DIR, "02_mengapa.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def slide_insight():
    """Slide 3 — Insight dari Data"""
    img = Image.new("RGB", (W, H), BLUE)
    d = ImageDraw.Draw(img)

    # Header
    d.text((M, 30), "STUDIOSOFT", font=B30, fill=WHITE)
    d.text((W - M, 30), "3/5", font=REG24, fill=WHITE, anchor="rt")

    d.text((M, 140), "INSIGHT DARI", font=B85, fill=WHITE)
    d.text((M, 240), "DATA PASIENT", font=B85, fill=WHITE)

    items = [
        'Pasien cari "biaya operasi" paling banyak',
        "60% traffic RS dari pencarian Google",
        "Booking tertinggi jam 09:00-11:00",
        "Pasien usia 25-40 paling aktif online",
        "Konten edukasi 3x lebih engaging",
    ]

    y = 420
    for item in items:
        d.text((M, y), f"  {item}", font=REG32, fill=WHITE)
        y += 140

    d.text((M, H - 100), "Dengan data, setiap keputusan marketing lebih akurat", font=SB36, fill=WHITE)

    d.text((M, H - 50), "studiosoft.id", font=REG20, fill=WHITE)
    d.text((W - M, H - 50), "#DataInsight", font=REG20, fill=WHITE, anchor="rt")

    p = os.path.join(OUT_DIR, "03_insight.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def slide_langkah():
    """Slide 4 — Langkah Memulai"""
    img = Image.new("RGB", (W, H), BLUE)
    d = ImageDraw.Draw(img)

    # Header
    d.text((M, 30), "STUDIOSOFT", font=B30, fill=WHITE)
    d.text((W - M, 30), "4/5", font=REG24, fill=WHITE, anchor="rt")

    d.text((M, 140), "LANGKAH", font=B85, fill=WHITE)
    d.text((M, 240), "MEMULAI", font=B85, fill=WHITE)

    steps = [
        ("01", "Audit data yang sudah ada"),
        ("02", "Integrasi sumber data (web, sosmed, booking)"),
        ("03", "Tentukan KPI utama RS"),
        ("04", "Analisis & visualisasi data"),
        ("05", "Optimasi strategi berdasarkan insight"),
    ]

    y = 400
    for num, desc in steps:
        d.text((M, y), num, font=B50, fill=WHITE)
        d.text((M + 90, y + 8), desc, font=SB36, fill=WHITE)
        y += 140

    d.text((M, H - 50), "studiosoft.id", font=REG20, fill=WHITE)
    d.text((W - M, H - 50), "#DataAnalytics", font=REG20, fill=WHITE, anchor="rt")

    p = os.path.join(OUT_DIR, "04_langkah.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def slide_cta():
    """Slide 5 — CTA"""
    img = Image.new("RGB", (W, H), BLUE)
    d = ImageDraw.Draw(img)

    # Header
    d.text((M, 30), "STUDIOSOFT", font=B30, fill=WHITE)
    d.text((W - M, 30), "5/5", font=REG24, fill=WHITE, anchor="rt")

    # Title
    title = "SIAP MENGOLAH\nDATA RS ANDA?"
    y = 350
    for line in title.split("\n"):
        d.text((M, y), line, font=B120, fill=WHITE)
        y += 120

    y += 60
    d.text((M, y), "Partner Pertumbuhan Bisnis Berbasis Data", font=SB36, fill=WHITE)

    y += 100
    d.text((M, y), "Konsultasi GRATIS", font=B50, fill=WHITE)
    d.text((M, y + 80), "studiosoft.id", font=REG40, fill=WHITE)

    # Footer
    d.text((M, H - 50), "studiosoft.id", font=REG20, fill=WHITE)

    p = os.path.join(OUT_DIR, "05_cta.png")
    img.save(p, "PNG")
    print(f"✅ {p}")
    return p


def generate_all():
    print("🎨 StudioSoft Healthcare Carousel — Data Analytics RS")
    print("=" * 45)
    paths = [
        slide_cover(),
        slide_mengapa(),
        slide_insight(),
        slide_langkah(),
        slide_cta(),
    ]
    print(f"\n✅ {len(paths)} slide generated in {OUT_DIR}")
    return paths


if __name__ == "__main__":
    generate_all()
