# Roadmap de implementacion

## Fase 0 - Documentacion

Estado: en curso.

- Crear `back/lightdata_ai/`.
- Documentar arquitectura, RAG, contexto, Redis y endpoints.
- Conectar con manuales existentes.

## Fase 1 - Endpoint IA minimo

Estado: implementado base.

Objetivo: que el chat responda usando endpoint propio y modelo local.

Tareas:

- [x] Crear `back/sistema/controlador_ia.php`.
- [x] Agregar dispatch `ia.logistica.preguntar`.
- [x] Agregar `AppApi.iaLogisticaPreguntar`.
- [x] Modificar `AppChat` para reemplazar respuesta mock de IA.
- [x] Armar contexto basico: usuario, tenant, modulo activo, filtros.
- [x] Llamar Ollama `qwen2.5:7b-instruct`.

Aceptacion:

- [x] el navegador no llama a `localhost:11434`;
- [x] la auditoria registra `ia.logistica.preguntar`;
- [x] si Ollama esta caido, la UI responde con error amable.

## Fase 2 - RAG documental textual

Objetivo: que el agente entienda circuitos y DB.

Tareas:

- Crear index JSONL de documentos.
- Chunkear Markdown por secciones.
- Buscar por texto/tags.
- Incluir 5-12 chunks por pregunta.
- Agregar fuentes documentales en respuesta.

Aceptacion:

- pregunta sobre costos recupera procesos/listas/diccionario;
- pregunta sobre realtime recupera `CIRCUITOS-MS` y `MS/README`;
- respuesta no inventa tablas.

## Fase 3 - Contexto operativo real

Estado: iniciado con planner global para envios.

Objetivo: responder sobre datos vivos sin depender de la ventana activa ni de que el modelo llame herramientas.

Avance:

- [x] Planner global para conteos/listados de envios.
- [x] Acciones ejecutables desde chat (`abrir_modulo` + `estado`).
- [x] Abrir `envios.listado` con filtros derivados de lenguaje natural, por ejemplo cliente -> `filtros.nombre`.
- [x] Catalogo de capacidades operativas para elegir rutas/herramientas/controladores sin diccionarios de frases.

Tareas:

- [x] Reusar `ControladorEnvios` para conteos/listas globales de envios.
- [x] Detectar estado real desde `estados_envios` (`A retirar`, `Retirado`, etc.).
- [x] Interpretar fechas basicas: hoy, ayer, semana pasada, ultimos N dias/semanas.
- [x] Usar la ventana activa solo ante frases como "estos", "esta pantalla", "lo que estoy viendo".
- [x] Reusar `ControladorInformes` para agregados como `informes.porzonas` e `informes.porcliente`.
- [ ] Reusar `ControladorUsuarios`, `ControladorHealth`.
- [ ] Detectar tracking/ID/cliente/chofer con mas cobertura.
- [ ] Armar resumen operativo multi-dominio.
- Traer envio puntual con historial si aplica.
- Respetar permisos de perfil.

Aceptacion:

- [ ] "que paso con X" trae ficha real;
- [ ] "como estamos hoy" trae dashboard/resumen;
- [x] "cuantos envios a retirar tengo" consulta DB global y responde total vigente;
- [x] "de 1 semana para atras cuanto tengo a retirar" interpreta rango y consulta DB;
- [x] "cuantos pendientes tengo por zonas" elige `informes.porzonas` y no inventa zonas;
- [x] cliente/chofer no ve datos fuera de alcance porque se reutiliza `ControladorEnvios`.

## Fase 4 - Redis operativo

Objetivo: reducir DB y alimentar IA con estado caliente.

Tareas:

- Helper PHP de Redis/cache.
- Cache de catalogos.
- Cache de resumen operativo con TTL corto.
- `rt:presence:{tenant}`.
- `ia:{tenant}:context:logistica:{uid}:{hashCorto}`.
- Invalidaciones por CRUD y eventos MS.

Aceptacion:

- preguntas seguidas no reconstruyen todo;
- cambios de estado invalidan contexto;
- Redis caido degrada a DB.

## Fase 5 - Acciones sugeridas

Objetivo: que el agente ayude a operar sin ejecutar sin permiso.

Tareas:

- Devolver `acciones[]`.
- UI pinta botones.
- Acciones de navegacion: abrir modulo/ficha/informe.
- Acciones preparadas: cambio estado/asignacion/observacion.
- Confirmacion obligatoria.

Aceptacion:

- el agente puede abrir envios filtrados;
- no ejecuta cambios sin modal;
- backend revalida permisos.

## Fase 6 - Embeddings/vector search

Objetivo: mejorar RAG.

Opciones:

- embeddings locales con Ollama;
- SQLite/JSONL al inicio;
- Redis vector si se habilita modulo compatible;
- otro vector store si conviene.

No bloquear Fase 1-5 por embeddings. La busqueda textual bien etiquetada alcanza para arrancar.

## Fase 7 - Memoria conversacional

Objetivo: continuidad entre preguntas.

Tareas:

- Tabla `ia_conversaciones` o Redis TTL.
- Guardar resumen del hilo, no prompt completo.
- Feedback util/no util.
- Historial visible por usuario si se decide.

Aceptacion:

- el agente entiende "y de esos cuales estan sin chofer";
- no guarda datos sensibles innecesarios;
- el usuario puede reiniciar contexto.
