Skip to content

Alerta masiva — Broadcast + impacto económico

Caso: cae la OLT del nodo Tegucigalpa-Norte a las 14:30. Telemetrics dispara una alerta masiva que afecta 87 ONTs.

Secuencia

Cálculo de impacto económico

Para cada dispositivo afectado:

  1. device.crm_external_contract_id → busca contract en Mongo por external_id.
  2. Del contract obtiene contact_id.
  3. Fan-out paralelo a /subscriptions/by-contract/:external_id?status=active.
  4. Por cada subscription, normaliza a monthly_cents:
    monthly  → amount_cents
    weekly   → amount_cents * 52 / 12
    yearly   → amount_cents / 12
    daily    → amount_cents * 365 / 12
  5. Suma total = MRC afectado.
  6. Pérdida por horaMRC / 730 (horas promedio/mes).
  7. Pérdida acumulada = pérdida/hora * (now - alert_started_at) — se muestra en hero y se actualiza en vivo.

Vista detalle vs modal

Las alertas individuales abren el AlertDetailSidebar modal (comportamiento previo intacto).

Las alertas masivas (marcadas con is_mass_outage=true) abren MassOutageDetailView — una ruta dedicada (/alerts/:id/mass-outage) con:

  • Hero grande mostrando pérdida acumulada.
  • Tabla de ONTs con cliente, sucursal, contrato.
  • Bitácora de comentarios con formulario.
  • Botón "Broadcast masivo" (idempotente por alert_id).

Template Meta usado

service_suspended (HSM aprobado por Meta). Cuerpo:

Hola 1, estamos trabajando en restablecer el servicio en tu zona. Tiempo estimado: 2. Disculpá las molestias, te avisamos cuando vuelva.

Variables inyectadas por el broadcaster: 1=nombre_cliente, 2=ETA si disponible o "pronto".

Siguiente: Cobranza (dunning).

Impulse Tech · Documentación interna