# 💬 ChatEgresos

ChatEgresos es un proyecto del equipo de Innovación en **Banorte** diseñado para acelerar la creación de aplicaciones **RAG (Retrieval-Augmented Generation)** enfocadas en la gestión, consulta y análisis de información de egresos.  

Este repositorio no solo contiene la aplicación principal, sino también una librería de componentes reutilizables y notebooks para el procesamiento de documentos, evaluación de modelos y generación de datos sintéticos.

---

## 🚀 Inicio Rápido

```bash
# Instala dependencias del monorepo
mise setup

# Crea una nueva aplicación RAG (ejemplo de prueba)
mise new prueba

# Levanta un entorno de desarrollo
mise dev --app prueba
```

---

## ✅ Prerrequisitos

Si estás en el entorno de desarrollo oficial, ya deberías contar con estas herramientas.  
De lo contrario, instálalas previamente:

- **Mise** → [Documentación](https://mise.jdx.dev/)
- **Docker** → [Documentación](https://www.docker.com/)
- **Vault** → [Documentación](https://developer.hashicorp.com/vault/)

---

## 📂 Estructura del Proyecto

```
chategresos/
├── apps/           # Aplicaciones individuales de ChatEgresos
├── packages/       # Paquetes compartidos
├── notebooks/      # Notebooks para procesamiento y evaluación
├── .templates/     # Plantillas de aplicaciones
├── .containers/    # Configuraciones de Docker
└── compose.yaml    # Servicios de Docker Compose
```

---

## 🛠️ Comandos de Desarrollo

### 📌 Crear Nuevos Proyectos

```bash
# Crea una nueva aplicación RAG
mise new <nombre-app>

# Creación interactiva
mise new
```

### 🖥️ Entorno de Desarrollo

```bash
# Inicia servidores de desarrollo (frontend + backend)
mise dev
mise dev --app <nombre-app>     # App específica
mise dev --no-dashboard         # Sin dashboard en vivo
mise dev --check-deps           # Verifica dependencias
mise dev --list-apps            # Lista apps disponibles
```

### 📦 Gestión de Contenedores

```bash
# Inicia contenedores localmente
mise container:start
mise container:start <nombre-app>

# Subir imágenes a Azure Container Registry
mise container:push
mise container:push <nombre-imagen>
```

---

## 🏗️ Stack Tecnológico

### Tecnologías Principales
- **Frontend** → React / Next.js + TypeScript  
- **Backend** → Python + FastAPI / Uvicorn  
- **Paquetería** → pnpm (Node.js), uv (Python)  
- **Contenedores** → Docker & Docker Compose  

### Infraestructura
- **Gestión de Secretos** → HashiCorp Vault  
- **Registro de Contenedores** → Azure Container Registry  
- **Observabilidad** → OpenTelemetry  
- **Proxy Inverso** → Traefik  

---

## 🎯 Tu Primera App en ChatEgresos

1. **Genera desde plantilla**
   ```bash
   mise new mi-app-chategresos
   ```

2. **Inicia el entorno**
   ```bash
   mise dev --app mi-app-chategresos
   ```

3. **Accede a tu aplicación**
   - 🌐 Frontend: [http://localhost:3000](http://localhost:3000)  
   - ⚙️ API Backend: [http://localhost:8000](http://localhost:8000)  

---

## 🔧 Configuración

### Desarrollo Local
- Frontend → Puerto `3000`  
- Backend APIs → Puerto `8000`  
- Contenedores → Puertos auto-asignados (8001+)  

### Depuración
- Usa `--no-dashboard` para un log más limpio  
- Ejecuta `mise dev --check-deps` para verificar dependencias  
- Logs de contenedores:  
  ```bash
  docker logs <nombre-contenedor>
  ```

---

## 🤝 Contribuyendo

1. Crea nuevas aplicaciones usando las plantillas disponibles  
2. Respeta la estructura del monorepo  
3. Usa los comandos de desarrollo recomendados  
4. Verifica dependencias y realiza pruebas antes de hacer PRs  

---

## 📖 Recursos Adicionales

- 📁 **Plantillas** → `.templates/`  
- 🐳 **Docker Config** → `.containers/`  
- ⚡ **Tareas Automáticas** → `.mise/tasks/`  

---

✨ *ChatEgresos: Innovación con IA para la gestión de egresos* 🚀
