Triggers Programados

Configuracion de automatizaciones basadas en horarios y schedules

triggersprogramadosschedulecronhorariorecurrentetimer

Triggers Programados

Configura automatizaciones que se ejecutan segun un horario predefinido.

Como Funcionan

Flujo: Scheduler Timer -> Verificar Agentes Activos -> Evaluar Condiciones

Luego:

  • Si pasa condiciones -> Encolar Ejecucion
  • Si no pasa -> Esperar siguiente ciclo

Los triggers programados:

  • Se verifican segun su intervalo
  • Buscan registros que cumplan condiciones
  • Ejecutan acciones para cada match
  • Mantienen historial de ejecuciones

Tipos de Schedule

SCHEDULED

Trigger generico programado

Configuracion:

  • interval: Intervalo en minutos
  • time: Hora especifica (HH:MM)
  • days: Dias de la semana
  • timezone: Zona horaria
  • filters: Condiciones adicionales

Ejemplo:

{
  "eventType": "SCHEDULED",
  "configuration": {
    "interval": 60,           // Cada hora
    "time": "09:00",          // A las 9am
    "days": ["mon", "tue", "wed", "thu", "fri"],
    "timezone": "America/Mexico_City"
  }
}

DAILY_DIGEST

Resumen diario automatico

Configuracion:

  • time: Hora de envio
  • recipients: Lista de destinatarios
  • includeMetrics: Metricas a incluir
  • format: Formato (email, slack, etc.)

Uso tipico:

  • Resumen de actividad del dia
  • Candidatos nuevos
  • Pendientes por revisar
  • Alertas vencidas

REMINDER_DUE

Recordatorio de vencimientos

Configuracion:

  • entityType: Tipo de entidad a verificar
  • daysBefore: Dias antes del vencimiento
  • notifyTo: A quien notificar
  • action: Que hacer

Entidades soportadas:

  • document_request -> Solicitudes de documentos
  • signature_request -> Firmas pendientes
  • test_assignment -> Tests por vencer
  • event -> Eventos proximos
  • onboarding_item -> Items de onboarding

INACTIVITY_CHECK

Verificacion de inactividad

Configuracion:

  • entityType: Tipo de entidad
  • inactiveDays: Dias sin actividad
  • action: Accion a tomar
  • excludeTags: Tags a excluir

Usos tipicos:

  • Candidatos sin movimiento X dias
  • Procesos estancados
  • Vacantes sin aplicaciones
  • Usuarios inactivos

Configurar Schedule

Interfaz de Configuracion

Configurar Trigger Programado

CampoOpciones
TipoSCHEDULED
FrecuenciaCada X minutos / Hora especifica / Intervalo + hora
DiasLun, Mar, Mie, Jue, Vie, Sab, Dom
Zona horariaAmerica/Mexico_City

Ejemplos de Configuracion

Cada manana a las 8am (L-V):

{
  "time": "08:00",
  "days": ["mon", "tue", "wed", "thu", "fri"],
  "timezone": "America/Mexico_City"
}

Cada 2 horas durante horario laboral:

{
  "interval": 120,
  "startTime": "09:00",
  "endTime": "18:00",
  "days": ["mon", "tue", "wed", "thu", "fri"]
}

Cada lunes a las 9am:

{
  "time": "09:00",
  "days": ["mon"]
}

Ultimo dia del mes a las 6pm:

{
  "dayOfMonth": "last",
  "time": "18:00"
}

Patrones Comunes

Recordatorio de Documentos Pendientes

Workflow: Recordatorio Documentos

Trigger:

  • Tipo: REMINDER_DUE
  • Entidad: document_request
  • Dias antes: 2
  • Frecuencia: Diario a las 9am

Acciones:

  1. Buscar solicitudes por vencer
  2. Filtrar: status = pending
  3. Por cada una:
    • Enviar email recordatorio
    • Notificar al solicitante
  4. Registrar envios

Configuracion:

{
  "entityType": "document_request",
  "daysBefore": 2,
  "filters": {
    "status": "pending"
  },
  "notifyPostulant": true,
  "notifyOwner": true
}

Alerta de Tests por Vencer

Workflow: Alerta Tests

Trigger:

  • Tipo: REMINDER_DUE
  • Entidad: user_test
  • Dias antes: 1
  • Frecuencia: Diario a las 8am

Acciones:

  1. Buscar tests por vencer manana
  2. Filtrar: status = pending
  3. Por cada uno:
    • Enviar email urgente al candidato
    • SMS si tiene telefono
  4. Notificar a RH

Configuracion:

{
  "entityType": "user_test",
  "daysBefore": 1,
  "status": ["pending", "in_progress"],
  "channels": ["email", "sms"]
}

Resumen Semanal de Reclutamiento

Workflow: Reporte Semanal

Trigger:

  • Tipo: SCHEDULED
  • Dia: Viernes
  • Hora: 17:00
  • Frecuencia: Semanal

Acciones:

  1. Calcular metricas de la semana:
    • Nuevas aplicaciones
    • Entrevistas realizadas
    • Ofertas enviadas
    • Contrataciones
  2. Generar reporte
  3. Enviar a gerentes
  4. Guardar historico

Configuracion:

{
  "time": "17:00",
  "days": ["fri"],
  "metrics": ["applications", "interviews", "offers", "hires"],
  "recipients": ["hiring-managers@empresa.com"],
  "format": "email"
}

Limpieza de Candidatos Inactivos

Workflow: Archivar Inactivos

Trigger:

  • Tipo: INACTIVITY_CHECK
  • Entidad: user_profile
  • Dias inactivo: 90
  • Frecuencia: Mensual

Acciones:

  1. Buscar perfiles sin actividad 90+ dias
  2. Excluir tags: "vip", "pipeline-activo"
  3. Por cada uno:
    • Enviar email de despedida
    • Cambiar status a archived
    • Registrar motivo
  4. Generar reporte de archivados

Configuracion:

{
  "entityType": "user_profile",
  "inactiveDays": 90,
  "excludeTags": ["vip", "pipeline-activo"],
  "action": "archive",
  "notifyPostulant": true
}

Sincronizacion de Calendarios

Workflow: Sync Calendarios

Trigger:

  • Tipo: SCHEDULED
  • Intervalo: 15 minutos
  • Siempre activo

Acciones:

  1. Obtener eventos nuevos de Google
  2. Obtener eventos nuevos de Microsoft
  3. Sincronizar con calendario interno
  4. Actualizar slots disponibles
  5. Notificar conflictos

Configuracion:

{
  "interval": 15,
  "sources": ["google", "microsoft"],
  "syncDirection": "bidirectional",
  "alertOnConflict": true
}

Gestion de Ejecuciones

Historial de Ejecuciones

FechaTriggerResultadoRegistros
2024-01-19 09:00Recordatorio DocsOK5 enviados
2024-01-19 08:00Alerta TestsOK2 alertados
2024-01-18 17:00Reporte SemanalOK1 enviado
2024-01-18 09:00Recordatorio DocsParcial3/4 enviados

Acciones: [Ver Detalles] [Volver a Ejecutar]

Ver Detalles de Ejecucion

Ejecucion #12345

CampoValor
Fecha2024-01-19 09:00:15
TriggerRecordatorio Documentos
StatusCompletado
Duracion2.3 segundos
Registros procesados5

Resultados por registro:

  • Juan Perez -> Email enviado
  • Maria Garcia -> Email enviado
  • Pedro Lopez -> Email enviado
  • Ana Torres -> Email enviado
  • Carlos Ruiz -> Email enviado

Logs:

  • [09:00:15] Iniciando busqueda...
  • [09:00:15] Encontrados 5 pendientes
  • [09:00:16] Enviando emails...
  • [09:00:17] Completado exitosamente

Reejecutar Manualmente

Opciones de reejecucion:

  1. Ejecutar Ahora - Ejecuta el trigger inmediatamente
  2. Ejecutar con Filtros - Especifica subset de registros
  3. Modo Debug - Ejecuta sin enviar realmente, solo muestra que haria
  4. Forzar Todos - Ignora el check de "ya procesado"

Condiciones y Filtros

Filtros en Triggers Programados

Los triggers programados pueden filtrar:

Por Estado:

  • status = pending
  • status in [pending, in_progress]
  • status != completed

Por Fecha:

  • dueDate < now()
  • dueDate between (now(), now() + 2 days)
  • createdAt > (now() - 7 days)

Por Propietario:

  • ownerId = current_user
  • assignedTo = team_id
  • department = "ventas"

Por Tags:

  • tags includes "urgente"
  • tags excludes "archivado"
  • tags any ["vip", "prioridad"]

Combinados:

  • status = pending AND dueDate < now() + 2 days

Ejemplo de Filtro Complejo

{
  "entityType": "document_request",
  "filters": {
    "AND": [
      { "status": "pending" },
      { "dueDate": { "lt": "{{now + 2 days}}" } },
      { "OR": [
        { "type": "ine" },
        { "type": "comprobante_domicilio" }
      ]},
      { "NOT": { "tags": ["excluir"] } }
    ]
  }
}

Zonas Horarias

Configurar Zona Horaria

Zonas horarias soportadas:

Mexico:

  • America/Mexico_City (UTC-6)
  • America/Cancun (UTC-5)
  • America/Tijuana (UTC-8)
  • America/Chihuahua (UTC-7)

Otras:

  • America/New_York (UTC-5)
  • America/Los_Angeles (UTC-8)
  • Europe/Madrid (UTC+1)
  • UTC (UTC+0)

Horario de Verano

El sistema maneja automaticamente:

  • Cambios de horario de verano
  • Ajustes de DST
  • Fechas de transicion
  • Sin configuracion adicional

Recomendacion: Usar zona horaria explicita, no offset numerico

Evitar Ejecuciones Duplicadas

Control de Duplicados

El sistema previene duplicados mediante:

  1. Lock de Ejecucion - Solo una instancia ejecuta a la vez
  2. ID de Ejecucion - Cada ejecucion tiene ID unico
  3. Marca de Procesado - Registros procesados se marcan
  4. Ventana de Tiempo - No reejecutar dentro de X minutos

Configurar Comportamiento

{
  "deduplication": {
    "enabled": true,
    "windowMinutes": 60,        // No repetir en 60 min
    "trackBy": "entity_id",     // Por cual campo
    "allowManualRerun": true    // Permitir manual
  }
}

Monitoreo y Alertas

Alertas de Fallos

Configurar alertas cuando:

  • Ejecucion falla
  • Toma mas de X segundos
  • Procesa menos de lo esperado
  • No encuentra registros
  • Error de conexion

Notificar via:

  • Email a administrador
  • Slack/Teams
  • Webhook
  • Dashboard

Dashboard de Salud

Estado de Triggers Programados

MetricaValor
Activos12
Pausados3
Error0

Ultima hora:

  • Ejecutados: 8
  • Exitosos: 8
  • Fallidos: 0
  • Registros procesados: 47

Proximas ejecuciones:

  • 10:00 - Recordatorio Docs
  • 12:00 - Sync Calendarios
  • 17:00 - Reporte Diario

Buenas Practicas

Diseno de Schedules

DO:

  • Espaciar ejecuciones pesadas
  • Ejecutar fuera de picos de uso
  • Usar filtros especificos
  • Monitorear duracion
  • Documentar proposito

DON'T:

  • Ejecutar cada minuto sin necesidad
  • Procesar miles de registros sin limite
  • Ignorar errores
  • Overlapping de ejecuciones
  • Depender de orden de ejecucion

Performance

Recomendaciones:

  • Limitar registros por ejecucion (batch)
  • Usar indices en filtros
  • Evitar queries N+1
  • Cache de datos repetitivos
  • Timeout en acciones externas

Proximos Pasos

¿No encontraste lo que buscabas?

Nuestro equipo de soporte está listo para ayudarte.

Contactar Soporte