CHEFMANAGER 3.5.0 · PRIVATE AI · VALIDACIÓN DE ENTREGA
========================================================

Validación realizada sobre el paquete final antes de generar el ZIP.

1. CÓDIGO
- PHP: 50 archivos comprobados con `php -l`, sin errores de sintaxis.
- JavaScript: 11 archivos comprobados con `node --check`, sin errores de sintaxis.
- Python AI Gateway: 7 archivos compilados correctamente.
- Bash: scripts/install-local.sh comprobado con `bash -n`.
- docker-compose.ai.yml: YAML parseado correctamente.

2. AI GATEWAY
Prueba funcional local con runtime Ollama simulado:
- /health sin X-ChefManager-AI-Key: rechazado (401).
- /health con credencial correcta: operativo.
- override de modelo por restaurante: bloqueado por defecto.
- tool desconocida/inventada por el modelo: descartada.
- consulta analítica compleja: enviada al perfil de razonamiento.
- Vision: usa el modelo configurado por servidor y declara writes_performed=false.
- resultado: GATEWAY_TEST_OK.

3. SQLITE / MIGRACIÓN V17
- sqlite-v17-private-ai.sql aplicada dos veces sobre una base ChefManager actualizada: OK (idempotente).
- PRAGMA integrity_check: ok.
- PRAGMA foreign_key_check: 0 incidencias.
- 7 tablas Private AI presentes.
- permisos Private AI presentes y clasificados:
  private_ai.use = administrative
  private_ai.manage = critical
  private_ai.actions.confirm = critical

4. SEGURIDAD
- El LLM no recibe acceso SQL libre ni credenciales del ERP.
- Tools ejecutadas únicamente mediante allow-list en PHP.
- restaurant_id y branch_id se aplican desde el usuario autenticado.
- acciones de escritura disponibles en 3.5.0 son propuestas y requieren confirmación.
- Ollama y PostgreSQL no publican puertos en docker-compose.ai.yml.
- AI Gateway se publica solo en 127.0.0.1:8090.
- el índice PGVector usa FORCE RLS por restaurant_id.
- el Gateway usa un rol PostgreSQL NOSUPERUSER/NOBYPASSRLS.
- no se entrega ai-gateway/.env ni un secreto compartido real.
- no se entrega storage/admin-reset-once.json pre-generado.
- los modelos/pesos LLM no se incluyen en el ZIP.

5. FALLBACK
Si AI Gateway/Ollama/PGVector están fuera de servicio:
- el ERP/POS continúa operativo;
- AiInsights sigue disponible;
- Private AI puede usar selección de tools por reglas internas;
- RAG documental degrada a búsqueda léxica SQLite;
- no se bloquean ventas, caja, cocina ni inventario.

6. LIMITACIONES DE ESTA VALIDACIÓN
El PHP disponible en este entorno tiene PDO, pero no PDO_SQLITE, por lo que no fue posible ejecutar una prueba HTTP PHP→SQLite completa aquí. La estructura/migración SQLite se validó directamente con SQLite y la sintaxis PHP fue validada por separado.

Tampoco se descargaron modelos de varios GB ni se realizaron llamadas reales a Ollama, porque el paquete debe entregarse sin pesos y la instalación se realiza en el servidor destino. El AI Gateway sí se probó con un runtime simulado para verificar autenticación, enrutamiento, filtrado de tools y seguridad de Vision.

7. PRUEBAS OBLIGATORIAS EN EL HOSTING/SERVIDOR DESTINO
- instalar/levantar ai-gateway con scripts/install-local.sh;
- configurar CHEFMANAGER_AI_SECRET con el secreto generado;
- comprobar /health a través de ChefManager;
- ejecutar scripts/benchmark-local.py después de descargar los modelos;
- probar preguntas de ventas, compras sugeridas, pronóstico, inventario, mermas y conocimiento;
- probar una propuesta de producto agotado y confirmar/rechazar manualmente;
- probar Vision con una factura real sin confirmar escrituras transaccionales.
