# Drake Designer M7.3 — Manual Completo

## ¿Qué es?

Drake Designer es la herramienta interna de Drakorp que genera **paquetes-producto entregables** (mockup de envase + etiqueta integrada nativamente) con calidad comercial premium tipo Montelobos / 400 Conejos / Amarás. Cada paquete se vende al cliente entre 45 y 80 mil pesos MXN. El costo de generación interno es de **~$0.18 USD por paquete final** (incluye botella + etiqueta integrada + QC visual).

---

## Versión actual: M7.3 (gpt-image-1 nativo)

**Diferencia clave vs M7.2:** la etiqueta ya **NO** es un PNG plano sobrepuesto. Ahora OpenAI gpt-image-1 redibuja la zona de la etiqueta como **parte de la foto original**, respetando curvatura, iluminación y sombras de la escena. El resultado se ve como fotografía real de producto, no como mockup con sticker pegado encima.

Vision check independiente con Claude Haiku 4.5 reporta **Quality 9/10, integración natural** en las 3 botellas de referencia.

---

## Flow del pipeline M7.3

```
[Brief: brand_id, brand_name, prompt_botella, subtitle, style]
        │
        ▼
[1. image_cascade]            → Botella foto realista (1024x1024)
                                Cloudflare SDXL / FLUX / Dreamshaper - 6 modelos gratis
        │  ~7-10 s
        ▼
[2. vision_analyst]           → Claude Haiku 4.5 vision analiza la botella
                                • tipo_envase, contraste, curvatura, fuente recomendada
                                • para auto-seleccionar color de etiqueta (copper/gold)
        │  ~5-7 s
        ▼
[3. image_integrator]         → OpenAI gpt-image-1 (quality=high) redibuja la zona
                                de etiqueta integrada nativamente al envase
                                • Sin texto alucinado (texto exacto en prompt)
                                • Sin border duro de PNG sobrepuesto
                                • Sigue curvatura e iluminación real
        │  ~30-50 s   (~$0.17 USD)
        ▼
[4. qc_visual]                → Claude Haiku vision evalúa el composite final
                                • score 0-100, aprobado true/false
                                • issues estructurados + fortalezas
        │  ~5-7 s
        ▼
[Output: composite_final.png, bottle_base.png, analisis.json,
         debug.json, qc_report.json, manifest.json]
```

**Tiempo total**: 60-90 segundos por botella.
**Costo total**: ~$0.17 USD por composite + $0.01 USD vision LLM = **~$0.18 USD = ~$3 MXN**.

---

## Uso desde la API

### Pipeline V3 completo (un POST = todo)

```bash
curl -X POST https://design.drakorpgroup.com/api/designer/run \
  -H "Content-Type: application/json" \
  -d '{
    "brand_id": 14,
    "brand_name": "MEZCAL CIELO ROTO",
    "prompt_botella": "Premium artisan Mexican mezcal in elegant black ceramic bottle, hand-thrown Oaxacan barro negro, matte finish, smooth wide central body for label placement, copper colored cap, dark moody studio lighting, professional product photography",
    "subtitle": "Barro Negro Coyotepec",
    "style": "vintage"
  }'
```

**Respuesta típica:**

```json
{
  "ok": true,
  "session": "marca_14_1779347073",
  "status": "approved",
  "qc_score": 85,
  "integrator": "openai_gpt-image-1",
  "editor_url": "/editor?s=marca_14_1779347073",
  "composite_url": "/files/marca_14_1779347073/composite_final.png",
  "total_time_s": 63.05
}
```

### CLI directo

```bash
cd /opt/drake/designer
./venv/bin/python3 engine/pipeline_v3.py \
  14 "MEZCAL CIELO ROTO" \
  "<prompt botella>" \
  "Barro Negro Coyotepec" \
  "vintage"
```

### Endpoints disponibles

| Método | Endpoint | Función |
|---|---|---|
| GET  | `/galeria` | Vista visual de todas las sesiones aprobadas |
| GET  | `/editor?s=<session>` | Editor (modo visualización en M7.3) |
| GET  | `/manual` | Este manual en HTML |
| GET  | `/manual.md` | Este manual en Markdown descargable |
| GET  | `/entregables` | JSON con lista de todas las sesiones + scores |
| GET  | `/files/<session>/<archivo>` | Servir archivos finales |
| POST | `/api/designer/run` | Pipeline V3 completo end-to-end |
| POST | `/api/designer/recompose` | (Solo M7.2) Re-aplicar etiqueta con valores nuevos |
| POST | `/api/designer/reqc` | Re-correr QC sobre composite existente |
| POST | `/api/designer/save` | Marcar versión actual como final |
| GET  | `/api/health` | Health check del service |

---

## Estilos y colores disponibles

### Estilos (parámetro `style`)

| Estilo | Descripción |
|---|---|
| `vintage` | Vintage artisan premium, serif clásico tipo Cinzel/Trajan, papel cream |
| `modern` | Minimal moderno premium, serif limpio, papel cream/blanco |
| `art_deco` | Art deco luxury, tipografía geométrica decorativa, papel cream/dorado |

### Colores de tinta (parámetro `color`)

| Color | Descripción | Cuándo usar |
|---|---|---|
| `copper` | Copper-foil cobre brillante | Botellas oscuras, mezcal premium |
| `gold` | Gold-foil dorado | Decanters claros, edición limitada |
| `black` | Negro profundo | Botellas claras, minimalista |
| `dark_brown` | Marrón chocolate | Tequilas añejos, vinos |

---

## Uso del Editor Web

URL: `https://design.drakorpgroup.com/editor?s=<session_id>`

### Modo M7.3 (gpt-image-1)

Cuando una sesión es M7.3 con `integrator=openai_gpt-image-1`, el editor muestra:
- El composite final con la etiqueta integrada nativamente
- Los sliders y campos de texto quedan **deshabilitados** porque la etiqueta es parte del píxel, no una capa sobrepuesta
- Aparece un aviso verde: "Etiqueta integrada nativamente. Las ediciones requieren regenerar (~$0.17 USD por iteración)"

Si quieres cambiar texto/posición/estilo en M7.3, debes **regenerar** desde el pipeline completo con los nuevos parámetros.

### Modo M7.2 (alpha-composite legacy)

Para sesiones m7.2.0 (anteriores), el editor sí permite editar en vivo:
- Texto: línea 1, línea 2, subtítulo
- Estilo: preset de contraste, fuente
- Posición: X, Y, Width, Height (% del envase)
- Live preview con debounce de 600ms
- Re-evaluar QC, Guardar final, Descargar PNG

### Lectura del QC

| Score | Color | Significado |
|---|---|---|
| 90-100 | 🟢 Verde | Perfecto, listo para cliente |
| 80-89 | 🟢 Lima | Aprobable, ajustes opcionales |
| 60-79 | 🟡 Amarillo | Requiere correcciones |
| <60 | 🔴 Rojo | Rechazar, regenerar |

### Severidad de issues

| Severidad | Acción sugerida |
|---|---|
| 🔴 crítico | Bloquea entrega — debe corregirse |
| 🟡 mayor | Recomendado corregir |
| 🔵 menor | Ajuste cosmético opcional |

---

## Estructura de archivos de una sesión

`/opt/drake/designer/entregables/marca_<brand_id>_<timestamp>/`

| Archivo | Contenido |
|---|---|
| `bottle_base.png` | Botella generada por cascade (1024x1024, sin etiqueta) |
| `composite_final.png` | **Resultado final** — botella + etiqueta integrada nativamente |
| `analisis.json` | Output de vision_analyst (tipo envase, paleta, fuente) |
| `debug.json` | Metadata del integrator (modelo, quality, usage, prompt) |
| `qc_report.json` | Score + issues + fortalezas del QC |
| `manifest.json` | Metadata final + status + layers |

Permisos esperados: `vpsexec:www-data 664` (uvicorn escribe, nginx lee).

---

## Cascada de modelos para botella base (free)

Validados mayo 2026:

| Modelo | Provider | Tiempo medio | Calidad | Uso |
|---|---|---|---|---|
| cf-sdxl | Cloudflare Workers AI | 7.14s | Alta — fotorealismo | Default photo task |
| cf-dreamshaper | Cloudflare Workers AI | 5.85s | Alta — estilizado | Variante artistic |
| cf-flux-schnell | Cloudflare Workers AI | 2.66s | Media — FLUX rápido | Fast iterations |
| cf-sdxl-lightning | Cloudflare Workers AI | 2.74s | Media — SDXL turbo | Fast iterations |
| polli-flux | Pollinations | 6.55s | Media — FLUX 1.1 | Fallback |
| polli-zimage | Pollinations | 5.97s | Media — alternativa | Fallback |

Cuota Cloudflare: 10K neurons/día. Sobrado para uso intensivo.

---

## Variables de entorno requeridas

En `/opt/drake/.env`:

```
ANTHROPIC_API_KEY=sk-ant-...     # Para vision_analyst y qc_visual (Haiku 4.5)
OPENAI_API_KEY=sk-proj-...       # Para image_integrator (gpt-image-1)
CLOUDFLARE_API_TOKEN=...         # Para cascade Cloudflare
CLOUDFLARE_ACCOUNT_ID=...
GEMINI_API_KEY=...               # Opcional (text-only OK, image bloqueado en free tier)
```

En `/opt/drake/designer/config/secrets.json`:

```json
{
  "pollinations_api_key": "sk_..."
}
```

---

## Comandos útiles

### Service
```bash
sudo systemctl status drake-designer.service
sudo systemctl restart drake-designer.service
sudo journalctl -u drake-designer -f
```

### Correr pipeline V3 desde CLI
```bash
cd /opt/drake/designer
./venv/bin/python3 engine/pipeline_v3.py 14 "MEZCAL CIELO ROTO" \
  "Premium artisan mezcal bottle, ..." \
  "Barro Negro Coyotepec" "vintage"
```

### Health check de la cascada
```bash
./venv/bin/python3 engine/image_cascade.py health
```

### Test directo del integrator
```bash
./venv/bin/python3 engine/image_integrator.py \
  /opt/drake/designer/entregables/marca_14_1779347073/bottle_base.png \
  "MEZCAL CIELO ROTO" "Barro Negro Coyotepec"
```

---

## Troubleshooting

### "Permission denied" al re-componer
Causa: el composite_final.png quedó con owner www-data:www-data y uvicorn corre como vpsexec.
Solución:
```bash
sudo chown -R vpsexec:www-data /opt/drake/designer/entregables/marca_XXX/
sudo chmod -R 775 /opt/drake/designer/entregables/marca_XXX/
sudo find /opt/drake/designer/entregables/marca_XXX/ -type f -exec chmod 664 {} \;
```

### "gpt-image-1 alucina texto"
Causa: quality=medium o low en el integrator.
Solución: usar **quality=high** siempre en producción. M7.3 ya lo hace por default.

### "QC score < 60 siempre"
Probablemente el prompt del cascade no está pidiendo zona limpia para etiqueta. Mejorar prompt: pedir explícitamente "smooth flat surface for label", "clean middle section", "no engravings in middle".

### "OpenAI 401/403"
La key está en `/opt/drake/.env` como `OPENAI_API_KEY`. Verificar saldo en https://platform.openai.com/usage.

### "Pollinations devuelve 403"
Pollinations rechaza prompts cortos o sin descriptores ricos. El cascade los marca como fail y pasa al siguiente modelo. No es bloqueante (Cloudflare cubre).

### "La galería no muestra imágenes"
Verificar HTTP 200 en `/files/<session>/composite_final.png` y perms 664.

---

## Stack técnico

- **Backend**: FastAPI + uvicorn workers=2 (port 5280)
- **Frontend**: HTML/JS vanilla (sin frameworks)
- **DB**: PostgreSQL para metadata de marcas
- **Imágenes**: Pillow + OpenCV (cv2) + numpy
- **Vision LLM**: Claude Haiku 4.5
- **Imagen IA botella**: Cloudflare Workers AI + Pollinations (free)
- **Imagen IA integrador**: OpenAI gpt-image-1 ($)
- **Web server**: nginx (TLS Let's Encrypt)
- **Hosting**: VPS Contabo 217.77.5.226

---

## Costo y economía

| Item | Costo USD |
|---|---|
| Generación botella (cf-sdxl) | $0.00 |
| Análisis vision (Haiku) | $0.005 |
| Integración etiqueta (gpt-image-1 high 1024) | $0.17 |
| QC vision (Haiku) | $0.005 |
| **Total por paquete final** | **~$0.18** = **~$3 MXN** |
| **Precio venta Drakorp** | **45,000 - 80,000 MXN** |
| **Margen IA puro** | **>99.99%** |

---

## Sesiones de referencia (Mezcal Cielo Roto)

Las 3 sesiones M7.3 validadas:

| Sesión | Score QC | Visual (Haiku) | Texto detectado |
|---|---|---|---|
| marca_14_1779347073 (Barro Negro Coyotepec) | 85/100 | 9/10 natural | MEZCAL CIELO ROTO Barro Negro Coyotepec |
| marca_14_1779347136 (Edición Limitada Decanter) | 85/100 | 9/10 natural | MEZCAL CIELO ROTO Edición Limitada |
| marca_14_1779347203 (Cerámica Zapoteca) | 87/100 | 9/10 natural | MEZCAL CIELO ROTO Cerámica Zapoteca |

URLs visuales:
- https://design.drakorpgroup.com/galeria
- https://design.drakorpgroup.com/files/marca_14_1779347073/composite_final.png
- https://design.drakorpgroup.com/files/marca_14_1779347136/composite_final.png
- https://design.drakorpgroup.com/files/marca_14_1779347203/composite_final.png

---

## Roadmap

- [x] M7.0 — Pipeline básico cascade + alpha-composite
- [x] M7.2 — Smart vision analyst + label designer + editor con sliders
- [x] M7.3 — **Integración nativa con gpt-image-1** (calidad comercial)
- [ ] M7.4 — Editor con re-generación cuesta-controlada (slider de quality low/medium/high)
- [ ] M7.5 — Batch endpoint para procesar N marcas en paralelo
- [ ] M8 — Multi-vista (frontal, lateral, isométrica) en un solo run
- [ ] M9 — Variantes automáticas: 3 estilos del mismo brand en un solo request

---

Versión: **m7.3.0**
Última actualización: 2026-05-21
Mantenedor: Drakorp Group · Mario Ayrton
