#!/usr/bin/env python3
"""Gera PDF v2 com 10 estáticos + 2 carrosséis + legenda por criativo."""
import base64
import json
from pathlib import Path

BASE = Path("/opt/mia/workspace/clientes/borrello/criativos_ig_lote2_2026-09-21")
LEG_ORIG = json.load(open(BASE / "legendas.json"))
LEG_NOV = json.load(open(BASE / "legendas_novas.json"))

# 10 estaticos em ordem alfabetica (id, path_local, titulo, legenda)
ESTATICOS = [
    ("01_cores_feng_shui_bagua",
     BASE / "estaticos" / "01_cores_feng_shui_bagua.png",
     "Estático 01 — Cores do feng shui por área (baguá)",
     LEG_ORIG["estaticos"]["01_cores_feng_shui_bagua"]),
    ("01_quiz_fengshui_v3",
     BASE / "drive_download" / "estaticos" / "01_quiz_fengshui_v3.png",
     "Estático 01 (quiz) — Sua casa trabalha a favor ou contra você?",
     LEG_NOV["estaticos"]["01_quiz_fengshui_v3"]),
    ("02_3_erros_entrada_casa",
     BASE / "estaticos" / "02_3_erros_entrada_casa.png",
     "Estático 02 — 3 erros na entrada da casa",
     LEG_ORIG["estaticos"]["02_3_erros_entrada_casa"]),
    ("02_bagua_9_areas_v2",
     BASE / "drive_download" / "estaticos" / "02_bagua_9_areas_v2.png",
     "Estático 02 (baguá) — Sua casa tem 9 áreas",
     LEG_NOV["estaticos"]["02_bagua_9_areas_v2"]),
    ("03_sinais_energia_parada",
     BASE / "estaticos" / "03_sinais_energia_parada.png",
     "Estático 03 — Sinais de que sua casa tem energia parada",
     LEG_ORIG["estaticos"]["03_sinais_energia_parada"]),
    ("04_dica_espada_sao_jorge_v3",
     BASE / "drive_download" / "estaticos" / "04_dica_espada_sao_jorge_v3.png",
     "Estático 04 (dica) — Espada-de-são-jorge afasta visita",
     LEG_NOV["estaticos"]["04_dica_espada_sao_jorge_v3"]),
    ("04_rotina_limpeza_energetica",
     BASE / "estaticos" / "04_rotina_limpeza_energetica.png",
     "Estático 04 — Rotina de limpeza energética simples",
     LEG_ORIG["estaticos"]["04_rotina_limpeza_energetica"]),
    ("05_conversa_quarto_pesado_v2",
     BASE / "drive_download" / "estaticos" / "05_conversa_quarto_pesado_v2.png",
     "Estático 05 (v2) — Meu quarto está pesado. E agora?",
     LEG_NOV["estaticos"]["05_conversa_quarto_pesado_v2"]),
    ("05_conversa_quarto_pesado_v3e",
     BASE / "drive_download" / "estaticos" / "05_conversa_quarto_pesado_v3e.png",
     "Estático 05 (v3e) — Meu quarto está pesado. E agora?",
     LEG_NOV["estaticos"]["05_conversa_quarto_pesado_v3e"]),
    ("05_plantas_prosperidade",
     BASE / "estaticos" / "05_plantas_prosperidade.png",
     "Estático 05 — Plantas que atraem prosperidade",
     LEG_ORIG["estaticos"]["05_plantas_prosperidade"]),
]

CARROSSEL_01 = {
    "titulo": "Carrossel 01 — Os 5 animais celestiais do feng shui",
    "legenda": LEG_NOV["carrossel_animais_celestiais"],
    "slides": [
        (BASE / "drive_download" / "carrossel_01_animais" / "slide_01_capa.png", "Slide 1 — Capa"),
        (BASE / "drive_download" / "carrossel_01_animais" / "slide_02_dragao.png", "Slide 2 — Dragão (esquerda)"),
        (BASE / "drive_download" / "carrossel_01_animais" / "slide_03_tigre.png", "Slide 3 — Tigre (direita)"),
        (BASE / "drive_download" / "carrossel_01_animais" / "slide_04_tartaruga.png", "Slide 4 — Tartaruga (atrás)"),
        (BASE / "drive_download" / "carrossel_01_animais" / "slide_05_fenix.png", "Slide 5 — Fênix (frente)"),
        (BASE / "drive_download" / "carrossel_01_animais" / "slide_06_serpente.png", "Slide 6 — Resumo"),
        (BASE / "drive_download" / "carrossel_01_animais" / "slide_07_cta.png", "Slide 7 — CTA"),
    ],
}

CARROSSEL_02 = {
    "titulo": "Carrossel 02 — Feng Shui no quarto (5 mudanças que qualquer um pode fazer)",
    "legenda": LEG_ORIG["carrossel_quarto"],
    "slides": [
        (BASE / "carrossel_quarto" / "slide_01_capa.png", "Slide 1 — Capa"),
        (BASE / "carrossel_quarto" / "slide_02_posicao_cama.png", "Slide 2 — Posição da cama"),
        (BASE / "carrossel_quarto" / "slide_03_espelho.png", "Slide 3 — Espelho"),
        (BASE / "carrossel_quarto" / "slide_04_cabeceira.png", "Slide 4 — Cabeceira"),
        (BASE / "carrossel_quarto" / "slide_05_debaixo_cama.png", "Slide 5 — Debaixo da cama"),
        (BASE / "carrossel_quarto" / "slide_06_cores.png", "Slide 6 — Cores"),
        (BASE / "carrossel_quarto" / "slide_07_cta.png", "Slide 7 — CTA"),
    ],
}


def b64(path):
    return base64.b64encode(Path(path).read_bytes()).decode()


def esc(s):
    return s.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace("\n", "<br>")


html = ['<!doctype html><html lang="pt-BR"><head><meta charset="utf-8"><title>Aprovacao Borrello</title>',
        '<style>',
        '@page { size: A4; margin: 10mm; }',
        'body { font-family: Georgia, "Times New Roman", serif; color:#1a1a1a; max-width:780px; margin:0 auto; padding:0; }',
        'h1 { font-size:22px; margin-bottom:4px; }',
        '.subt { color:#666; font-size:12px; margin-bottom:14px; line-height:1.45; }',
        '.section { padding-top:2px; }',
        '.section-title { font-size:16px; color:#f5c400; background:#111; padding:8px 14px; border-radius:6px; margin:14px 0 10px; font-family:Arial,sans-serif; letter-spacing:0.5px; text-transform:uppercase; }',
        '.card { page-break-inside: avoid; padding:8px 0 10px; border-top:1px solid #ccc; display:flex; gap:14px; align-items:flex-start; }',
        '.card:first-of-type { border-top:none; }',
        '.card .arte { flex:0 0 220px; }',
        '.card .arte h2 { font-size:12px; margin:0 0 6px 0; color:#111; font-family:Arial,sans-serif; font-weight:700; }',
        '.card .arte img { width:100%; border-radius:4px; display:block; box-shadow:0 1px 4px rgba(0,0,0,.15); }',
        '.card .conteudo { flex:1; }',
        '.legenda { background:#faf7f2; border-left:3px solid #e0b400; padding:8px 12px; border-radius:4px; font-size:11.5px; line-height:1.45; white-space:pre-line; }',
        '.legenda strong { display:block; font-size:9px; letter-spacing:0.5px; color:#8a6a00; margin-bottom:4px; font-family:Arial,sans-serif; }',
        '.grid7 { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; margin-bottom:8px; }',
        '.grid7 figure { margin:0; }',
        '.grid7 img { width:100%; border-radius:3px; box-shadow:0 1px 3px rgba(0,0,0,.12); }',
        '.grid7 figcaption { font-size:9px; color:#555; text-align:center; margin-top:2px; font-family:Arial,sans-serif; }',
        '.carrossel-block { page-break-inside: avoid; margin-bottom:10px; padding-top:6px; }',
        '.hero { padding:12px 16px; background:#111; color:#fff; border-radius:6px; margin-bottom:12px; display:flex; align-items:center; gap:12px; }',
        '.hero .dot { width:32px; height:32px; border-radius:50%; background:#f5c400; flex-shrink:0; }',
        '.hero h1 { color:#fff; margin:0; font-size:16px; }',
        '.hero p { margin:2px 0 0 0; font-size:11px; color:#ccc; font-family:Arial,sans-serif; }',
        '.summary { list-style:none; padding:0; margin:8px 0 0 0; font-family:Arial,sans-serif; font-size:10.5px; color:#333; line-height:1.5; }',
        '.summary li { padding:2px 0; }',
        '.summary strong { color:#111; }',
        '</style></head><body>',
        '<div class="hero"><div class="dot"></div><div>',
        '<h1>Aprovação de criativos IG — Francisco Borrello</h1>',
        '<p>10 estáticos + 2 carrosséis · setembro/2026</p>',
        '</div></div>',
        '<p class="subt">Cada bloco = <strong>arte + legenda</strong> lado a lado. Aprova "OK" ou aponta ajuste por peça. Copy segue padrão Borrello: sem auto-elogio, 1ª pessoa, linguagem clara pro 60+, acentuação PT-BR.</p>',
        ]

# Estaticos: layout 2 colunas (arte | legenda) por card
html.append('<div class="section"><div class="section-title">Estáticos (10)</div>')
for key, path, titulo, legenda in ESTATICOS:
    img_b64 = b64(path)
    html.append('<div class="card">')
    html.append(f'<div class="arte"><h2>{titulo}</h2><img src="data:image/png;base64,{img_b64}" alt="{titulo}"></div>')
    html.append(f'<div class="conteudo"><div class="legenda"><strong>LEGENDA DO POST</strong>{esc(legenda)}</div></div>')
    html.append('</div>')
html.append('</div>')

# Carrossel 01 e 02
for carrossel in [CARROSSEL_01, CARROSSEL_02]:
    html.append(f'<div class="section"><div class="section-title">{esc(carrossel["titulo"])}</div>')
    html.append('<div class="carrossel-block">')
    html.append('<div class="grid7">')
    for path, cap in carrossel["slides"]:
        img_b64 = b64(path)
        html.append(f'<figure><img src="data:image/png;base64,{img_b64}"><figcaption>{cap}</figcaption></figure>')
    html.append('</div>')
    html.append(f'<div class="legenda"><strong>LEGENDA DO CARROSSEL</strong>{esc(carrossel["legenda"])}</div>')
    html.append('</div>')
    html.append('</div>')

html.append('</body></html>')
html_str = "\n".join(html)

out_html = BASE / "lote_completo_aprovacao.html"
out_html.write_text(html_str)
print("HTML:", out_html)

from playwright.sync_api import sync_playwright
out_pdf = BASE / "aprovacao_Borrello_lote_completo.pdf"
with sync_playwright() as p:
    b = p.chromium.launch()
    ctx = b.new_context()
    page = ctx.new_page()
    page.goto(f"file://{out_html}")
    page.pdf(path=str(out_pdf), format="A4",
             margin={"top": "18mm", "bottom": "18mm", "left": "15mm", "right": "15mm"},
             print_background=True)
    b.close()
print("PDF:", out_pdf, out_pdf.stat().st_size, "bytes")
