# Backend — Dashboard API (FastAPI) API REST que reutiliza toda la lógica de negocio del dashboard original. El frontend (React) consume estos endpoints. ## Requisitos - Python 3.10+ - Driver ODBC para SQL Server (ODBC Driver 17 o 18) ## Instalación ```bash cd backend pip install -r requirements.txt ``` En Windows, si falta el driver ODBC de SQL Server, descárgalo de: https://learn.microsoft.com/sql/connect/odbc/download-odbc-driver-for-sql-server ## Configuración El archivo `.env` ya contiene las credenciales (copiado del proyecto original). Si necesitas cambiarlas, edita `.env` (usa `.env.example` como referencia). ## Ejecutar ```bash python main.py ``` El servidor arranca en: **http://localhost:8000** - Documentación interactiva: http://localhost:8000/docs - Health check: http://localhost:8000/api/health ## Cómo funciona el rendimiento 1. **Al arrancar** → precarga todos los módulos (datos en memoria) 2. **Refresco en segundo plano** → cada 4 min recarga el caché silenciosamente 3. **Respuestas** → instantáneas porque vienen de memoria 4. El frontend solo pide datos (JSON), nunca recarga toda la página ## Endpoints principales | Método | Ruta | Descripción | |--------|------|-------------| | GET | `/api/periodo-actual` | Año y mes actuales | | GET | `/api/ocupabilidad?ano=&mes=&sede=&programa=` | Datos ocupabilidad | | GET | `/api/ventas?ano=&mes=` | Datos ventas | | GET | `/api/ventas/detalle?vendedor=&ano=&mes=&tipo=` | Detalle vendedor | | GET | `/api/cobranza?ano=&mes=§orista=&agrupacion=` | Datos cobranza | | GET | `/api/cobranza/detalle?grupo=&ano=&mes=§orista=&agrupacion=` | Estado de cuenta | | GET | `/api/rentabilidad?ano=&mes=&sede=&programa=` | Datos rentabilidad | | GET | `/api/rentabilidad/detalle?programa=&ano=&mes=` | Detalle programa | | GET | `/api/rentabilidad/costos?programa=&ano=&mes=` | Costos programa | | GET | `/api/saldo-pendiente?tipo_cuota=` | Saldos pendientes | | GET | `/api/asesores` | Lista de asesores (Chatwoot) | | POST | `/api/asesores/estado?agent_id=&online=` | Cambiar estado asesor | | POST | `/api/cache/refresh` | Forzar refresco de caché | ## Estructura ``` backend/ ├── main.py # FastAPI + endpoints ├── services.py # Capa que envuelve la lógica con caché ├── cache_manager.py # Caché en memoria + refresco background ├── requirements.txt ├── .env # Credenciales (no subir a git) ├── core/ # DataManager (reutilizado del original) ├── modules/ # Lógica de negocio (reutilizada del original) └── SQL_QUERY_2/ # Queries SQL optimizadas ```