#!/usr/bin/env python3
"""Gera a foto base do criativo 11 - CONECTA COM O SEU SISTEMA (API).

Conceito: laptop escuro mostrando dashboard tech com diagrama de rede
(modulos conectados por linhas verdes). Transmite "API integra tudo".

Prompt enxuto (menos texto na imagem = menos chance de 400 na API).

Modelo: gpt-image-2.5-sunburst (preferido)
Fallbacks: 2.5-flare -> 2 -> 1.5
"""
import os
import base64
from pathlib import Path

env_path = Path("/opt/mia/.env")
for line in env_path.read_text().splitlines():
    if line.startswith("OPENAI_API_KEY="):
        os.environ["OPENAI_API_KEY"] = line.split("=", 1)[1].strip()

OUT_DIR = Path(__file__).resolve().parent
FOTOS_DIR = OUT_DIR / "fotos_raw"
FOTOS_DIR.mkdir(exist_ok=True)

MODELS = [
    "gpt-image-2.5-sunburst",
    "gpt-image-2.5-flare",
    "gpt-image-2",
    "gpt-image-1.5",
]

# Prompt 1 - simplificado
PROMPT_V1 = (
    "Photorealistic product shot of a dark laptop screen on a wooden desk "
    "showing a tech dashboard with a network diagram: 5 small connected "
    "modules in a dark interface, glowing green connection lines between "
    "them. Warm desk lamp light, blurred office background. 35mm wide shot "
    "slightly above. Clean minimalist, documentary tech photography. Not "
    "AI-generated."
)

# Prompt 2 - ainda mais enxuto (fallback)
PROMPT_V2 = (
    "Dark laptop screen showing network architecture diagram, glowing green "
    "lines connecting nodes, warm desk lamp light, wooden desk, blurred "
    "background. Photorealistic product photography."
)


def gerar(prompt: str, out_path: Path) -> str:
    try:
        from openai import OpenAI
    except ImportError:
        os.system("pip install --break-system-packages openai -q")
        from openai import OpenAI
    client = OpenAI()
    errors = []
    for model in MODELS:
        try:
            print(f"[TRY] {model} -> {out_path.name}")
            resp = client.images.generate(
                model=model, prompt=prompt, size="1024x1024",
                quality="high", n=1,
            )
            out_path.write_bytes(base64.b64decode(resp.data[0].b64_json))
            print(f"[OK]  {model} -> {out_path.name} ({out_path.stat().st_size // 1024} KB)")
            return model
        except Exception as e:
            msg = str(e)[:200]
            print(f"[WARN] {model} falhou: {msg}")
            errors.append(f"{model}: {msg}")
    raise RuntimeError(f"Todos modelos falharam: {errors}")


def main():
    log = []
    print("\n=== Criativo 11 - API INTEGRACAO (foto base) ===")
    out = FOTOS_DIR / "api_dashboard.png"

    if out.exists():
        print(f"[SKIP] ja existe: {out.name}")
        log.append(("api_dashboard", "ja_existente", "n/a"))
    else:
        # Tenta prompt v1 primeiro
        try:
            print("\n--- Tentando PROMPT_V1 (completo) ---")
            model = gerar(PROMPT_V1, out)
            log.append(("api_dashboard", model, "v1"))
        except Exception as e1:
            print(f"\n[WARN] V1 falhou geral: {e1}")
            print("\n--- Tentando PROMPT_V2 (ultra enxuto) ---")
            try:
                model = gerar(PROMPT_V2, out)
                log.append(("api_dashboard", model, "v2"))
            except Exception as e2:
                print(f"\n[ERRO] V2 tambem falhou: {e2}")
                print("[FALLBACK] Vamos para composicao Pillow pura no build.py")
                log.append(("api_dashboard", "FALHOU", "fallback_pillow"))

    lines = ["# Fotos do criativo 11 - API INTEGRACAO\n"]
    lines.append("Modelo preferido: gpt-image-2.5-sunburst (fallback: 2.5-flare, 2, 1.5)\n")
    lines.append("\n## Fotos geradas\n")
    for name, m, v in log:
        lines.append(f"- {name}.png  -> model: {m}  / prompt: {v}")
    lines.append("\n\n## PROMPT_V1 (prioritario)\n")
    lines.append(PROMPT_V1)
    lines.append("\n\n## PROMPT_V2 (fallback)\n")
    lines.append(PROMPT_V2)
    (OUT_DIR / "PROMPTS.md").write_text("\n".join(lines))
    print(f"\n[OK] Log salvo: {OUT_DIR / 'PROMPTS.md'}")


if __name__ == "__main__":
    main()
