# Supervisor de calidad — Claude Haiku 4.5 Vision via OpenRouter ## Responsabilidad Comparar la foto "antes" con el render "después" y verificar que el resultado es coherente con el brief del cliente. Devolver aprobación y score. ## Llamada a OpenRouter POST https://openrouter.ai/api/v1/chat/completions Authorization: Bearer {OPENROUTER_API_KEY} Content-Type: application/json Body: { "model": "{OPENROUTER_MODEL_TEXTO}", // anthropic/claude-3.5-haiku-20241022 "messages": [ { "role": "system", "content": "You are a quality supervisor..." }, { "role": "user", "content": [ { "type": "text", "text": "Reforma tipo: cocina\nMetros: 12..." }, { "type": "image_url", "image_url": { "url": "data:image/...foto_antes" } }, { "type": "image_url", "image_url": { "url": "data:image/...render_despues" } } ] } ], "max_tokens": 256, "temperature": 0.2 } ## System prompt Contenido de prompts/supervisor.txt ## Respuesta esperada JSON estricto: { "aprobado": boolean, "score": number, "motivo": string } ## Manejo de respuesta malformada Si el modelo no devuelve JSON válido: → devolver { aprobado: false, score: 0, motivo: "Error parseando respuesta del supervisor" } Nunca lanzar excepción desde el supervisor, siempre devolver el objeto. ## Umbral de aprobación aprobado: true AND score >= SUPERVISOR_MIN_SCORE (del .env, por defecto 70)