Módulo 8: Proyecto — Sistema de Alertas Programadas

Diseño del Sistema

Descripción de la cápsula

Antes de implementar, diseñamos en papel. La complejidad de este proyecto justifica planificación cuidadosa. En esta cápsula vas a ver el diseño completo: qué métricas monitorea, cómo categoriza, los flujos de notificación, y la arquitectura de workflows.


Lo que monitorea el sistema

Métricas (3 fuentes)

  1. Ventas (Sheet "daily_sales"):

    • Métrica: ventas del día actual
    • Umbral: <50% del promedio histórico → alerta media; <20% → crítica
  2. Errores en API (mock — Sheet "api_errors"):

    • Métrica: errores en última hora
    • Umbral: >10/hora → alerta media; >50/hora → crítica
  3. Tiempo de respuesta API (mock — Sheet "api_latency"):

    • Métrica: P95 latencia última hora
    • Umbral: >500ms → alerta media; >2000ms → crítica

Niveles de alerta

SeveridadAcciónCanalesEscalación
CríticaAlert inmediato + ack requiredSlack #alerts-critical + Email + (opcional SMS)15 min sin ack → manager
AltaAlert inmediatoSlack #alerts30 min sin ack → escalar
MediaSlack silenciosoSlack #monitoringNo escalación
BajaSolo Sheet logSheetNo notificación

Diseño general del workflow

[Schedule cada 15 min]
   │
[Verificar business hours + no holiday]
   │
[IF: dentro de horario operativo]
├─ NO → terminar (no spamear fuera de hora)
└─ SI → continuar
   │
[3 ramas paralelas: leer cada fuente]
   ├─→ Sheet ventas
   ├─→ Sheet errors
   └─→ Sheet latency
        │
        ▼
   [Merge Wait]
        │
   [Set: calcular categorías para cada métrica]
        │
   [SplitInBatches: procesar cada métrica]
        │
        [Switch sobre severidad]
        ├─→ critical → notificar + iniciar timer ack
        ├─→ high → Slack
        ├─→ medium → Slack silencioso
        └─→ low → solo log
        │
        loop back
        │
   [Done]
        │
   [Sheet log: 'alerts_history']

Workflow secundario: ack manager

[Webhook ack]
   │
[Set: marcar alert como acknowledged]
   │
[Sheet update]

Workflow terciario: escalación

[Schedule cada 5 min]
   │
[Sheet read: alerts críticas sin ack > 15 min]
   │
[Slack a manager]
   │
[Sheet update: escalada]

Arquitectura: ¿1 workflow o varios?

Decisión: 3 workflows según responsabilidad:

  1. [ALERTS-MAIN] Detección y notificación: corre cada 15 min
  2. [ALERTS-ACK] Acknowledgement: webhook que recibe ack
  3. [ALERTS-ESCALATE] Escalación: corre cada 5 min

Razón: cada uno tiene Schedule/trigger distinto y lógica distinta. Separar mejora mantenibilidad.


Datos persistentes (Sheets)

Sheets que vamos a usar:

SheetPropósito
daily_salesDatos de ventas (input)
api_errorsErrores recientes API (input)
api_latencyLatencias recientes (input)
thresholdsConfiguración: umbrales por métrica
alerts_historyLog de todas las alertas generadas
alerts_pending_ackAlertas críticas esperando ack
holidaysHolidays para no alertar

Decisiones de diseño clave

Decisión 1: ¿Por qué 15 min y no más frecuente?

  • Métricas no cambian dramáticamente cada minuto
  • Cada ciclo consume ejecuciones del plan n8n
  • 15 min es buen balance velocidad/costo

Decisión 2: ¿Por qué multi-source paralelo?

  • 3 Sheets son independientes
  • Paralelo es 3× más rápido
  • Permite que falle una sin afectar las otras (con Continue on Fail)

Decisión 3: ¿Por qué escalación con HITL pattern?

  • Alertas críticas requieren acción humana
  • Sin ack en 15 min = probablemente nadie miró
  • Escalación a manager garantiza atención

Decisión 4: ¿Por qué 3 workflows separados?

  • Single responsibility principle
  • Diferentes Schedules/triggers
  • Más fácil debuggear / cambiar uno sin afectar otros

Lo que se aplica de cada módulo

Módulo G2Aplicación específica
M01 TriggersSchedule (cron 15 min) + Webhook (ack)
M02 BranchingSwitch sobre severidad con 4 ramas
M03 LoopsSplitInBatches sobre métricas
M04 MergeWait mode juntando 3 fuentes
M05 SchedulingBusiness hours + no holidays
M06 Error handlingRetry, Continue on Fail, Error Workflow
M07 WaitHITL pattern para escalación

Siguiente paso

Implementamos paso a paso en las cápsulas 03-07. Cápsula 08 será test, deploy y monitoring.

Antes de pasar:

  • Diseño claro mental
  • Sheets de input creados con data mock
  • Credenciales listas (Google, Slack)

Creado: Mayo 11, 2026 Versión: 1.0