75 lines
2.6 KiB
Markdown
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=§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
|
|
```
|