v1.7.0 - Fix: Corregido error 500 en SLA Dashboard
- Fix error de sintaxis SQL en cálculo de tickets 'at risk' - Fix error de timezone (offset-naive vs offset-aware datetimes) - Implementado sistema completo de SLA Management - Agregados endpoints: /sla/dashboard, /sla/violations, /sla/at-risk - Creadas vistas frontend para dashboard, violaciones y tickets en riesgo - Actualizado sistema de Celery para monitoreo automático de SLAs - Mejorada configuración de categorías con tiempos SLA personalizables - Corregidos problemas de proxy en configuración de Vite - Agregado troubleshooting guide en README Archivos principales modificados: - backend/app/api/v1/endpoints/sla.py (nuevo) - backend/app/api/schemas/sla.py (nuevo) - frontend-internal/src/routes/sla/ (nuevo módulo completo) - workers/app/tasks/sla_tasks.py (queries async mejoradas) Documentación: docs/changelog-2026-02-17.md
This commit is contained in:
@@ -23,16 +23,19 @@ workers/
|
||||
## Tareas Implementadas
|
||||
|
||||
### Email Tasks (`email_tasks.py`)
|
||||
|
||||
- [x] `send_email_task`: Envío básico de emails SMTP
|
||||
- [x] `send_templated_email_task`: Emails con plantillas Jinja2
|
||||
- [x] `send_bulk_email_task`: Envío masivo con progreso
|
||||
|
||||
### SLA Tasks (`sla_tasks.py`)
|
||||
|
||||
- [x] `check_sla_violations`: Monitoreo de violaciones SLA
|
||||
- [x] `calculate_sla_metrics`: Cálculo de métricas SLA
|
||||
- [x] `send_sla_warnings`: Alertas de SLAs próximos a vencer
|
||||
|
||||
### Maintenance Tasks (`maintenance_tasks.py`)
|
||||
|
||||
- [x] `health_check`: Health check de workers
|
||||
- [x] `cleanup_old_logs`: Limpieza de logs antiguos
|
||||
- [x] `generate_weekly_reports`: Reportes semanales
|
||||
@@ -40,6 +43,7 @@ workers/
|
||||
- [x] `database_maintenance`: Mantenimiento de BD
|
||||
|
||||
### Notification Tasks (`notification_tasks.py`)
|
||||
|
||||
- [x] `send_daily_digest`: Digest diario para agentes
|
||||
- [x] `send_ticket_notifications`: Notificaciones de tickets
|
||||
- [x] `send_system_alert`: Alertas del sistema
|
||||
@@ -53,12 +57,12 @@ workers/
|
||||
"check-sla-violations": check_sla_violations
|
||||
|
||||
# Diario a las 8:00 AM
|
||||
"send-daily-digest": send_daily_digest
|
||||
"send-daily-digest": send_daily_digest
|
||||
|
||||
# Semanal los domingos a las 2:00 AM
|
||||
"cleanup-old-logs": cleanup_old_logs
|
||||
|
||||
# Semanal los lunes a las 9:00 AM
|
||||
# Semanal los lunes a las 9:00 AM
|
||||
"generate-weekly-reports": generate_weekly_reports
|
||||
|
||||
# Cada minuto (health check)
|
||||
@@ -115,7 +119,7 @@ DEFAULT_FROM_EMAIL=noreply@servicemanager.local
|
||||
SLA_CHECK_ENABLED=true
|
||||
SLA_WARNING_THRESHOLD=0.8
|
||||
|
||||
# Mantenimiento
|
||||
# Mantenimiento
|
||||
LOG_RETENTION_DAYS=30
|
||||
DIGEST_ENABLED=true
|
||||
```
|
||||
@@ -133,6 +137,7 @@ DIGEST_ENABLED=true
|
||||
### Logs Estructurados
|
||||
|
||||
Todos los workers utilizan structured logging con:
|
||||
|
||||
- Task ID único
|
||||
- Correlation ID para tracking
|
||||
- Contexto de tenant
|
||||
@@ -154,7 +159,7 @@ celery -A app.celery inspect active
|
||||
### Métricas
|
||||
|
||||
- Task execution times
|
||||
- Success/failure rates
|
||||
- Success/failure rates
|
||||
- Queue lengths
|
||||
- Worker load
|
||||
|
||||
@@ -163,6 +168,7 @@ celery -A app.celery inspect active
|
||||
### Agregar Nueva Tarea
|
||||
|
||||
1. Crear función en módulo apropiado:
|
||||
|
||||
```python
|
||||
@celery_app.task(bind=True, time_limit=300)
|
||||
def new_task(self, param1: str, param2: int):
|
||||
@@ -172,6 +178,7 @@ def new_task(self, param1: str, param2: int):
|
||||
```
|
||||
|
||||
2. Registrar en `celery.py` si es periódica:
|
||||
|
||||
```python
|
||||
beat_schedule = {
|
||||
"new-periodic-task": {
|
||||
@@ -201,8 +208,9 @@ def reliable_task(self):
|
||||
Los templates están definidos en código por ahora. En el futuro se moverán a base de datos para ser editables por tenants.
|
||||
|
||||
Templates disponibles:
|
||||
|
||||
- `ticket_created`
|
||||
- `ticket_assigned`
|
||||
- `ticket_assigned`
|
||||
- `ticket_resolved`
|
||||
- `sla_warning`
|
||||
- `sla_violation`
|
||||
@@ -229,7 +237,7 @@ celery -A app.celery call app.tasks.email_tasks.send_email_task --args='["test@e
|
||||
```bash
|
||||
# Múltiples workers por queue
|
||||
celery -A app.celery worker --loglevel=info --concurrency=4 --queues=email
|
||||
celery -A app.celery worker --loglevel=info --concurrency=2 --queues=sla,maintenance
|
||||
celery -A app.celery worker --loglevel=info --concurrency=2 --queues=sla,maintenance
|
||||
celery -A app.celery worker --loglevel=info --concurrency=1 --queues=default
|
||||
|
||||
# Beat scheduler (solo una instancia)
|
||||
@@ -249,7 +257,7 @@ celery -A app.celery beat --loglevel=info
|
||||
|
||||
### Problemas Comunes
|
||||
|
||||
1. **Tasks stuck in queue**:
|
||||
1. **Tasks stuck in queue**:
|
||||
- Verificar workers activos
|
||||
- Revisar configuración de routing
|
||||
|
||||
@@ -276,4 +284,4 @@ celery -A app.celery inspect failed
|
||||
|
||||
# Purgar queue
|
||||
celery -A app.celery purge -Q queue_name
|
||||
```
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user