Files
reformix-hackaton/mvp/image-worker/README.md
2026-06-07 18:11:44 -04:00

86 lines
3.4 KiB
Markdown

# Reformix Image Worker
Worker de generación de renders fotorrealistas "después" para Reformix. Recibe el perfil completo de un lead desde la app principal, genera imágenes del resultado de la reforma usando IA, las valida y las entrega de vuelta a la app.
## Rol en el sistema
```
App Reformix
│ POST /perfil-completo (webhook)
Render Worker ← este proyecto
├── Etapa 1: Claude Haiku 4.5 via OpenRouter genera prompt técnico en inglés
├── Etapa 2: Gemini 2.0 Flash via OpenRouter genera imagen
└── Etapa 3: Claude Haiku 4.5 Vision via OpenRouter valida coherencia
│ POST /api/leads/:id/ingesta (con finalizar:true)
App Reformix → PDF → Email → WhatsApp → Cliente
```
## Requisitos
- Node.js 18+
- API key de OpenRouter (unica clave para todos los modelos)
## Instalación
```bash
cd mvp/image-worker
npm install
cp .env.example .env
# Editar .env con tu OPENROUTER_API_KEY
npm run start:dev
```
## Variables de entorno
| Variable | Descripción | Default |
|----------|------------|---------|
| `PORT` | Puerto del servidor HTTP | `3001` |
| `OPENROUTER_API_KEY` | API key de OpenRouter (unica para todos los modelos) | — |
| `OPENROUTER_MODEL_TEXTO` | Modelo para prompt-builder y supervisor | `anthropic/claude-3.5-haiku-20241022` |
| `OPENROUTER_MODEL_IMAGEN` | Modelo para generación de imágenes | `google/gemini-2.0-flash-exp-image-generation` |
| `REFORMIX_API_URL` | URL base de la app Reformix | `http://localhost:3000` |
| `FUNNEL_API_KEY` | API key compartida con la app Reformix | — |
| `MAX_RETRIES` | Reintentos por zona si el supervisor rechaza | `2` |
| `SUPERVISOR_MIN_SCORE` | Score mínimo para aprobar un render (0-100) | `70` |
## Conexión con la app Reformix
En el `.env` de la app Reformix (`mvp/b2c/`), configurar:
```env
PERFIL_WEBHOOK_URL=http://localhost:3001/perfil-completo
```
## Pipeline de 3 etapas (todo via OpenRouter)
### Etapa 1 — Prompt Builder (Claude Haiku 4.5 via OpenRouter)
Genera un prompt técnico detallado en inglés para el modelo de image-to-image. Incluye materiales, iluminación, paleta de colores, estilo y palabras clave de render arquitectónico.
**Modelo:** `anthropic/claude-3.5-haiku-20241022`
**Prompt base:** `prompts/prompt-builder.txt`
### Etapa 2 — Image Generator (Gemini 2.0 Flash via OpenRouter)
Toma el prompt generado + la foto "antes" del cliente y produce el render "después". Maneja rate limiting (429) con reintento automático.
**Modelo:** `google/gemini-2.0-flash-exp-image-generation`
### Etapa 3 — Supervisor (Claude Haiku 4.5 Vision via OpenRouter)
Compara la foto "antes" con el render "después" y evalúa coherencia: estilo, materiales, calidad, artefactos. Devuelve score 0-100. Si el score es menor a `SUPERVISOR_MIN_SCORE`, reintenta desde la Etapa 2 (máximo `MAX_RETRIES` veces).
**Modelo:** `anthropic/claude-3.5-haiku-20241022`
## Skills
| Archivo | Descripción |
|---------|-------------|
| `skills/pipeline.md` | Orquestación del pipeline de 3 etapas |
| `skills/webhook.md` | Contrato del webhook entrante `/perfil-completo` |
| `skills/prompt-builder.md` | Llamada a OpenRouter para generar prompts |
| `skills/image-generator.md` | Llamada a OpenRouter para generación de imágenes |
| `skills/supervisor.md` | Validación de calidad con Claude Haiku Vision via OpenRouter |
| `skills/reformix-api.md` | Entrega de renders al endpoint `/ingesta` de la app |