Files

106 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TASKS.md - To-Do List
Este documento define el plan de ejecución del proyecto.
Principio rector:
> *Cada fase deja el sistema en un estado funcional, testeable y estable.*
---
## Fase 1 Base del Sistema (Infraestructura + Entrada)
**Objetivo:** Recibir datos de gastos y dejarlos listos para procesar.
- [x] **1.1 Bootstrap del Proyecto**
- [x] Crear estructura de carpetas modular en `/app`.
- [x] Configurar entorno virtual y `requirements.txt`.
- [x] Dockerización con `docker-compose.yml`.
- [x] **1.2 Configuración y Base de Datos**
- [x] Definir `.env.example` con variables para OpenAI, Telegram y MySQL.
- [x] Configurar servicio de **MySQL 8.0** en Docker.
- [x] Implementar `app/config.py` para carga de variables.
- [x] **1.3 Entrada de Datos (Multimodal)**
- [x] Endpoint `/process-expense` para integración externa.
- [x] Endpoint `/webhook/telegram` para recepción directa.
- [x] Implementar módulos de ingestión inicial (`text.py`, `image.py`, `audio.py`).
- [x] **1.4 Orquestación Inicial**
- [x] Implementar `router.py` para coordinar el pipeline.
---
## Fase 2 Modelo de Datos y Estados
**Objetivo:** Tener claridad absoluta sobre qué es un gasto y en qué estado vive.
- [x] **2.1 Modelos Pydantic**
- [x] Crear modelos en `app/schema/base.py`: `RawInput`, `ExtractedExpense`, `ProvisionalExpense`, `FinalExpense`.
- [x] **2.2 Estados del Gasto**
- [x] Definir `ExpenseStatus` (RECEIVED, ANALYZED, CONFIRMED, etc.).
- [x] **2.3 Persistencia SQL**
- [x] Implementar modelos SQLAlchemy y repositorios en `app/persistence`.
---
## Fase 3 Configuración y Lógica de Negocio
**Objetivo:** Mover la inteligencia determinística fuera del código.
- [/] **3.1 Loader de Configuración**
- [ ] Implementar carga dinámica de `config/providers.csv` y `keywords.csv`.
- [ ] **3.2 Matching de Proveedores**
- [ ] Implementar matching por nombre y aliases.
- [ ] **3.3 Clasificación por Keywords**
- [ ] Implementar búsqueda de keywords en descripciones para categorización automática.
---
## Fase 4 The Analyst (Procesamiento Inteligente)
**Objetivo:** Convertir texto crudo en un gasto provisional estructurado mediante IA.
- [/] **4.1 Extracción Multimodal (Completa)**
- [x] Texto -> Extracción con GPT.
- [ ] Voz -> Transcripción (Whisper/OpenAI).
- [ ] Imagen -> OCR + Extracción.
- [ ] **4.2 Validación y Score de Confianza**
- [ ] Implementar `app/ai/confidence.py` para evaluar la calidad de la extracción.
- [ ] **4.3 Detección de Duplicados**
- [ ] Evitar registrar el mismo gasto dos veces.
---
## Fase 5 Interacción con el Usuario
**Objetivo:** Asegurar control humano y correcciones.
- [ ] **5.1 Flujo de Confirmación en Telegram**
- [ ] Enviar botones de "Confirmar" / "Editar" tras procesar un gasto.
- [ ] **5.2 Parsing de Correcciones**
- [ ] Capacidad de corregir campos específicos mediante mensajes de texto.
- [ ] **5.3 Comandos de Consulta**
- [ ] Implementar `/status` y `/search` funcionales.
---
## Fase 6 Exportación y Cierre
**Objetivo:** Facilitar el uso de los datos fuera del sistema.
- [ ] **6.1 Exportación a CSV/Excel**
- [x] Implementar exportador básico a CSV.
- [ ] **6.2 Integración con Google Sheets (Opcional)**
- [ ] Sincronización automática de gastos confirmados.
---
## Fase 7 Hardening
**Objetivo:** Estabilidad y producción.
- [ ] **7.1 Manejo de Errores Robusto**
- [ ] Reintentos en llamadas a API de IA.
- [ ] Alertas de sistema.
- [ ] **7.2 Logs de Auditoría**
- [ ] Registro detallado de quién cambió qué y cuándo.