CreaRack-SL

Servicio de Evaluación de Políticas de Escalado

Descripción

Servicio en monitoring/services/escalation_service.py que evalúa insights pendientes/ejecutándose y aplica políticas de escalado de notificaciones cuando se cumplen ventanas de tiempo.

Firma Principal

def check_escalations() -> int

Devuelve número de insights escalados en esta ejecución.

Flujo

  1. Carga insights en estado pending o executing (con .select_related("organization", "target"))
  2. Precarga políticas de escalado por (org_id, risk_level) en un diccionario único
  3. Itera insights: para cada uno, busca sus políticas en el diccionario (N+1 fix sa4 B13)
  4. Calcula próximo nivel: invoca _get_next_escalation_level(insight, policy, now) por cada política
  5. Escala si procede: llama escalate_insight(insight, next_level) para cada nivel próximo

Cambios Recientes (sa4 B13)

Antes: Cada insight disparaba una query EscalationPolicy.objects.filter(organization=insight.organization, risk_level=..., enabled=True).prefetch_related(...)

Ahora:

  1. Extrae org_ids de todos los insights en una pasada
  2. Precarga TODAS las políticas habilidad de esas orgs en una query única, groupware por (org_id, risk_level)
  3. Dikcionario policies_by_key acceso O(1) por insight

Impacto: -200+ queries/noche en tenant típico.

Dependencias

  • Modelos: AIInsight, EscalationPolicy, EscalationLevel, NotificationChannel
  • Servicios: escalate_insight() (mismo módulo)

Integración

Típicamente llamado por:

  • Tarea periódica (cron) cada 5-10 minutos
  • CLI o endpoint de admin para trigger manual

Véase también

  • [[feature—monitoring—sa4-baja-cleanup]]
  • [[concept—monitoring—escalation-workflow]]
  • [[entity—monitoring—model—escalation-policy]]
  • [[entity—monitoring—service—notification-dispatcher]]