#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""perbaiki_slide1_retainer_26okt.py — perbaiki COVER carousel 26 Okt 2026 (retainer).

Masalah: intro artikel retainer-digital-marketing dibuka blok navigasi situs
("Skip to content Beranda Tentang Layanan Jasa SEO ...") sehingga `lead` slide 1
tercetak sebagai sampah navigasi. Slide 2-10 bersih (sudah di-OCR).

Perbaikan: rakit ulang slide 1 dari kalimat PEMBUKA ASLI artikel (bukan karangan),
render ulang, timpa JPEG dengan NAMA FILE SAMA → jadwal pending memakai URL itu,
jadi tidak perlu PUT media. Gate 200 dua ingress.
"""
import os
import subprocess
import sys

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
import ss_carousel_lib as L  # noqa: E402

IMG = os.path.join(WS, "openclaw-img")
OUT = os.path.join(WS, "ss_ig_car10_okt")
NAVY = (18, 43, 99)
WHITE = (255, 255, 255)
PREFIX = "ss_car10_retainer"
TAG = "#retainer"
INGRESS = ("103.84.155.153", "103.84.155.217")
HOST = "mantapserver.tail3947bb.ts.net"

JUDUL = ["RETAINER DIGITAL MARKETING: KAPAN", "BISNIS BUTUH & BAGAIMANA", "MENGHITUNG NILAINYA"]
LEAD = ("Retainer digital marketing adalah model kerja sama bulanan dengan penyedia jasa "
        "pemasaran digital: lingkup pekerjaan jelas, jangka panjang, bukan bayar per proyek.")
PARA = ("Model ini bukan sekadar soal cara bayar; ia mengubah cara hasil diproduksi: dari "
        "'kerjakan lalu selesai' menjadi 'rawat lalu tumbuh'.")


def gate(nama):
    ok = True
    for ip in INGRESS:
        code = subprocess.run(
            ["curl", "-s", "-o", "/dev/null", "-w", "%{http_code}", "--max-time", "30",
             "--resolve", f"{HOST}:443:{ip}", f"https://{HOST}/openclaw-img/{nama}"],
            capture_output=True, text=True).stdout.strip()
        print(f"  gate {ip}: {code}")
        if code != "200":
            ok = False
    return ok


def main():
    from PIL import Image
    s = L.Slide(1, 10, TAG, bg=WHITE, fg=NAVY, dot_color=NAVY)
    s.title([(JUDUL[0], L.AKSEN_PUTIH)] + JUDUL[1:], after=40)
    s.lead(LEAD, after=26)
    s.para(PARA, size=29)
    png = s.render(f"{PREFIX}_01.png", OUT, quiet=True)
    im = Image.open(png).convert("RGB")
    assert im.size == (1080, 1350), im.size
    jpg = os.path.join(IMG, f"{PREFIX}_01.jpg")
    im.save(jpg, "JPEG", quality=85, optimize=True)
    print(f"render: {png}")
    print(f"jpeg  : {jpg} ({os.path.getsize(jpg)} bytes) warna sudut={im.getpixel((8, 8))}")
    print("gate 200 dua ingress:", "OK" if gate(f"{PREFIX}_01.jpg") else "GAGAL")


if __name__ == "__main__":
    main()
