Readme
This commit is contained in:
192
README.md
Normal file
192
README.md
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
# Beyond Diagnosis
|
||||||
|
|
||||||
|
Beyond Diagnosis es una aplicación de análisis de operaciones de contact center.
|
||||||
|
Permite subir un CSV con interacciones y genera:
|
||||||
|
|
||||||
|
- Análisis de volumetría por canal y skill
|
||||||
|
- Métricas operativas (AHT, escalaciones, recurrencia, etc.)
|
||||||
|
- CSAT global y métricas de satisfacción
|
||||||
|
- Modelo económico (coste anual, ahorro potencial, etc.)
|
||||||
|
- Matriz de oportunidades y roadmap basados en datos reales
|
||||||
|
- Cálculo de *agentic readiness* para priorizar iniciativas de automatización
|
||||||
|
|
||||||
|
La arquitectura está compuesta por:
|
||||||
|
|
||||||
|
- **Frontend** (React + Vite)
|
||||||
|
- **Backend** (FastAPI + Python)
|
||||||
|
- **Nginx** como proxy inverso y terminación TLS
|
||||||
|
- **Docker Compose** para orquestar los tres servicios
|
||||||
|
|
||||||
|
En producción, la aplicación se sirve en **HTTPS (443)** con certificados de **Let’s Encrypt**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Requisitos
|
||||||
|
|
||||||
|
Para instalación manual o con el script:
|
||||||
|
|
||||||
|
- Servidor **Ubuntu** reciente (20.04 o superior recomendado)
|
||||||
|
- Dominio apuntando al servidor (ej: `app.cliente.com`)
|
||||||
|
- Puertos **80** y **443** accesibles desde Internet (para Let’s Encrypt)
|
||||||
|
- Usuario con permisos de `sudo`
|
||||||
|
|
||||||
|
> El script de instalación se encarga de instalar Docker, docker compose plugin y certbot si no están presentes.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Instalación con script (recomendada)
|
||||||
|
|
||||||
|
### 1. Copiar el script al servidor
|
||||||
|
|
||||||
|
Conéctate al servidor por SSH y crea el fichero:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nano install_beyond.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Pega dentro el contenido del script de instalación que has preparado (el que:
|
||||||
|
|
||||||
|
- Instala Docker y dependencias
|
||||||
|
- Pide dominio, email, usuario y contraseña
|
||||||
|
- Clona/actualiza el repo en `/opt/beyonddiagnosis`
|
||||||
|
- Solicita el certificado de Let’s Encrypt
|
||||||
|
- Genera la configuración de Nginx con SSL
|
||||||
|
- Lanza `docker compose build` + `docker compose up -d`
|
||||||
|
).
|
||||||
|
|
||||||
|
Guarda (`Ctrl + O`, Enter) y sal (`Ctrl + X`).
|
||||||
|
|
||||||
|
Hazlo ejecutable:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x install_beyond.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Ejecutar el instalador
|
||||||
|
|
||||||
|
Ejecuta el script como root (o con sudo):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ./install_beyond.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
El script te pedirá:
|
||||||
|
|
||||||
|
- **Dominio** de la aplicación (ej. `app.cliente.com`)
|
||||||
|
- **Email** para Let’s Encrypt (avisos de renovación)
|
||||||
|
- **Usuario** de acceso (Basic Auth / login)
|
||||||
|
- **Contraseña** de acceso
|
||||||
|
- **URL del repositorio Git** (por defecto usará la que se haya dejado en el script)
|
||||||
|
|
||||||
|
Te mostrará un resumen y te preguntará si quieres continuar.
|
||||||
|
A partir de ahí, el proceso es **desatendido**, pero irá indicando cada paso:
|
||||||
|
|
||||||
|
- Instalación de Docker + docker compose plugin + certbot
|
||||||
|
- Descarga o actualización del repositorio en `/opt/beyonddiagnosis`
|
||||||
|
- Sustitución de credenciales en `docker-compose.yml`
|
||||||
|
- Obtención del certificado de Let’s Encrypt para el dominio indicado
|
||||||
|
- Generación de `nginx/conf.d/beyond.conf` con configuración HTTPS
|
||||||
|
- Construcción de imágenes y arranque de contenedores con `docker compose up -d`
|
||||||
|
|
||||||
|
### 3. Acceso a la aplicación
|
||||||
|
|
||||||
|
Una vez finalizado:
|
||||||
|
|
||||||
|
- La aplicación estará disponible en:
|
||||||
|
**https://TU_DOMINIO**
|
||||||
|
|
||||||
|
- Inicia sesión con el **usuario** y **contraseña** que has introducido durante la instalación.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Estructura de la instalación
|
||||||
|
|
||||||
|
Por defecto, el script instala todo en:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/opt/beyonddiagnosis
|
||||||
|
├── backend/ # Código del backend (FastAPI)
|
||||||
|
├── frontend/ # Código del frontend (React + Vite)
|
||||||
|
├── nginx/
|
||||||
|
│ └── conf.d/
|
||||||
|
│ └── beyond.conf # Configuración nginx para este dominio
|
||||||
|
└── docker-compose.yml # Orquestación de backend, frontend y nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
Servicios en Docker:
|
||||||
|
|
||||||
|
- `backend` → FastAPI en el puerto 8000 interno
|
||||||
|
- `frontend` → React en el puerto 4173 interno
|
||||||
|
- `nginx` → expone 80/443 y hace de proxy:
|
||||||
|
|
||||||
|
- `/` → frontend
|
||||||
|
- `/api/` → backend
|
||||||
|
|
||||||
|
Los certificados de Let’s Encrypt se almacenan en:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/etc/letsencrypt/live/TU_DOMINIO/
|
||||||
|
```
|
||||||
|
|
||||||
|
y se montan en el contenedor de Nginx como volumen de solo lectura.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Actualización de la aplicación
|
||||||
|
|
||||||
|
Para desplegar una nueva versión del código:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/beyonddiagnosis
|
||||||
|
sudo git pull
|
||||||
|
sudo docker compose build
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Esto:
|
||||||
|
|
||||||
|
- Actualiza el código desde el repositorio
|
||||||
|
- Reconstruye las imágenes
|
||||||
|
- Levanta los contenedores con la nueva versión sin perder datos de configuración ni certificados.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Gestión de la aplicación
|
||||||
|
|
||||||
|
Desde `/opt/beyonddiagnosis`:
|
||||||
|
|
||||||
|
- Ver estado de los contenedores:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
- Ver logs en tiempo real:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
- Parar la aplicación:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Uso básico
|
||||||
|
|
||||||
|
1. Accede a `https://TU_DOMINIO`.
|
||||||
|
2. Inicia sesión con las credenciales configuradas en la instalación.
|
||||||
|
3. Sube un fichero CSV con las columnas esperadas (canal, skill, tiempos, etc.).
|
||||||
|
4. La aplicación enviará el fichero al backend, que:
|
||||||
|
- Calcula métricas de volumetría, rendimiento, satisfacción y costes.
|
||||||
|
- Devuelve un JSON estructurado con el análisis.
|
||||||
|
5. El frontend muestra:
|
||||||
|
- Dashboard de métricas clave
|
||||||
|
- Dimensiones (volumetría, performance, satisfacción, economía, eficiencia…)
|
||||||
|
- Heatmap por skill
|
||||||
|
- Oportunidades y roadmap basado en datos reales.
|
||||||
|
|
||||||
|
Este README junto con el script de instalación permiten desplegar la aplicación de forma rápida y homogénea en un servidor por cliente.
|
||||||
Reference in New Issue
Block a user