Files
dashboard-completo/backend/README.md
2026-06-27 11:58:05 -05:00

75 lines
2.6 KiB
Markdown

# 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=&sectorista=&agrupacion=` | Datos cobranza |
| GET | `/api/cobranza/detalle?grupo=&ano=&mes=&sectorista=&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
```