# 2024-06-07 · Integración Gemini para imágenes en Lectura global

## Backend
- Creado módulo `GeminiService` que usa el modelo `gemini-2.5-flash-image` de Gemini para generar ilustraciones infantiles.
- Nuevo `GlobalWordsService` lee `content/palabras-globales.json`, precarga imágenes en `content/generated/global-words/` y expone endpoints REST (`/global-words`).
- Endpoint `/global-words/:slug/image` entrega/auto-genera la imagen cuando el front la solicita.
- Se habilitó CORS en Nest para que la webapp consuma el API desde `http://localhost:4173` u otros orígenes configurables.
- Si Gemini rechaza la petición (por acceso al modelo) el servicio genera un placeholder SVG brillante y lo cachea, garantizando que Milo siempre vea una figura.

## Frontend
- `Lectura global` ahora consume imágenes reales desde el backend y ofrece matching palabra-imagen con feedback inmediato.
- Se agregó `VITE_API_BASE_URL` (ver `app/.env.example`) y se cachean URLs por palabra para evitar descargas repetidas.
- Se mantiene el centro de ayuda con indicaciones prácticas.

## Uso
1. En una terminal: `cd backend && npm run start:dev` (se precargarán imágenes en background automáticamente).
2. En otra terminal: `cd app && npm run dev -- --host 0.0.0.0 --port 4173` y abrir `http://localhost:4173`.

## Pendientes
- [ ] Manejar colas/concurrencia para lotes grandes (usar BullMQ u otra cola). 
- [ ] Guardar metadatos de generación (prompt, versión, timestamps) en BD.
- [ ] Añadir endpoint para verificar progreso del prefetch y mostrarlo en el dashboard.
- [ ] Validar acceso a los modelos de imagen en la cuenta de Gemini (si `gemini-2.5-flash-image` no está habilitado se seguirán viendo placeholders hasta que Google otorgue acceso).
