Flujos de Jobs por Entidad

Este documento describe el orden y las dependencias de los jobs en las diferentes colas del sistema, organizado por entidad principal.

📋 Índice


Meeting

Flujo Principal de Procesamiento

1. Creación de Meeting (Video)

text
Meeting Created

[meeting_media_cdn_upload] → Sube video a CDN

[meeting_video_audio_conversion] → Convierte video a audio

[meeting_transcript_generation] → Solicita transcripción

2. Creación de Meeting (Audio)

text
Meeting Created

[meeting_media_cdn_upload] → Sube audio a CDN

[meeting_transcript_generation] → Solicita transcripción

Flujo de Transcripción

text
[meeting_transcript_generation] → Solicita transcripción a proveedor externo

[meeting_transcript_generation_check] → Verifica estado de transcripción (polling)

[meeting_transcript_process] → Procesa respuesta de transcripción

  ├─→ [meeting_summary_generation] ⚠️ REQUIERE transcript completado
  ├─→ [meeting_feedback_report_generation] ⚠️ REQUIERE transcript completado
  ├─→ [meeting_vtt_caption_upload] ⚠️ REQUIERE transcript completado
  └─→ [call_post_processing_process] (si tiene call asociado)

⚠️ Dependencias Críticas:

  • meeting_summary_generation NO puede ejecutarse sin meeting_transcript_process completado
  • meeting_feedback_report_generation NO puede ejecutarse sin meeting_transcript_process completado
  • meeting_vtt_caption_upload NO puede ejecutarse sin meeting_transcript_process completado

Flujo de Summary Generation

text
[meeting_summary_generation] → Genera resumen de la reunión

[transactional_email_send] → Envía email con resumen a participantes

Flujo de CDN Response

text
[meeting_media_cdn_response] → Respuesta de CDN después de subir media

[meeting_media_cdn_upload] → Reintento si es necesario

Flujo de Reconciliation Check

text
[meeting_reconciliation_check] → Verifica meetings que no completaron procesamiento

  ├─→ [meeting_video_audio_conversion] (si falta audio)
  ├─→ [meeting_media_cdn_upload] (si falta upload a CDN)
  └─→ [meeting_transcript_generation] (si falta transcript)

Flujo de Translation

text
[meeting_translation_generation] → Genera traducción del transcript (on-demand)

Flujo de Transcript Chat

text
[meeting_transcript_chat_generation] → Genera embeddings para chat del transcript

Flujo de Access Control

text
Meeting Created/Updated

[meeting_access_team_enforcer] → Aplica control de acceso a nivel de equipo

CRM Integration

Flujo de Sincronización Outgoing

Meeting Summary Sync

text
Meeting Summary Created (Domain Event)

[crm_meeting_outgoing] → Sincroniza meeting con CRM

Meeting Participant Sync

text
Meeting Participant Created/Updated (Domain Event)

[crm_meeting_outgoing] → Sincroniza participantes con CRM

Meeting Opportunity Sync

text
Meeting-Opportunity Association Created/Updated (Domain Event)

[crm_meeting_outgoing] → Sincroniza asociación meeting-opportunity

[crm_meeting_note_outgoing] → Sincroniza notas relacionadas

Meeting Contact Sync

text
Meeting-Contact Association Created/Updated (Domain Event)

[crm_meeting_outgoing] → Sincroniza asociación meeting-contact

Meeting Company Sync

text
Meeting-Company Association Created/Updated (Domain Event)

[crm_meeting_outgoing] → Sincroniza asociación meeting-company

[crm_meeting_note_outgoing] → Sincroniza notas relacionadas

Flujo de Importación Incoming

Hubspot

text
Hubspot Webhook/Manual Import

[crm_hubspot_import] → Importa datos desde Hubspot

Zoho

text
Zoho Webhook/Manual Import

[crm_zoho_import] → Importa datos desde Zoho

[crm_zoho_incoming_event] → Procesa eventos de Zoho

Flujo de Sync

Salesforce

text
Salesforce Sync (Manual/Cron)

[crm_salesforce_sync] → Sincroniza datos con Salesforce

Membrain

text
Membrain Import (Manual/Connect)

[crm_membrain_import] → Importa datos desde Membrain

Membrain Sync (Cron ~10 min)

[crm_membrain_sync] → Sincroniza cambios incrementales desde Membrain

Zoho Notification Channel

text
Zoho Notification Channel Sync (Cron)

[crm_zoho_notification_channel_sync] → Sincroniza canales de notificación

Calendar Integration

Flujo de Importación

text
Calendar Credential Created/Updated

[calendar_import] → Importa eventos del calendario

  └─→ [calendar_import] (retry si falla)

Flujo de Desconexión

text
User Deleted / Role Downgraded / Billing Changed

[calendar_disconnect] → Desconecta calendario del usuario

Flujo de Grant Expired

text
Calendar Grant Expired (Webhook)

[calendar_grant_expired] → Procesa expiración de grant

[transactional_email_send] → Notifica al usuario

Flujo de Selective Sync

text
Calendar Selective Sync Requested

[calendar_selective_sync] → Sincroniza selectivamente eventos

Voice Agent Call

Flujo de Webhook

text
Voice Agent Call Webhook Received

[voice_agent_call_webhook_process] → Procesa webhook

  ├─→ [voice_agent_call_outgoing] → Envía datos a sistema externo
  └─→ [voice_agent_call_outgoing] → Notificaciones adicionales

Flujo de Importación

text
Voice Agent Call Import Requested

[voice_agent_call_import_process] → Importa llamadas

Flujo de Batch

text
Voice Agent Call Batch Requested

[voice_agent_call_batch_process] → Procesa batch de llamadas

[voice_agent_call_outgoing] → Envía datos procesados

User

Flujo de Remoción

text
User Deleted

[user_removal] → Procesa eliminación de usuario
  ├─→ Limpia datos asociados
  └─→ [calendar_disconnect] → Desconecta calendarios

Flujo de Notificación a Admins

text
User Created (Invite)

[transactional_email_send] → Notifica a admins de nuevo usuario

Billing

Flujo de Stripe

text
Stripe Webhook/Event

[billing_stripe_process] → Procesa pago/facturación

Flujo de Cancelación de Licencia

text
License Cancellation Requested

[billing_license_cancel] → Procesa cancelación

Webhook

Flujo de Outgoing

text
Domain Event / Business Event

[webhook_outgoing] → Envía webhook a clientes externos

Eventos que disparan webhooks:

  • Meeting Created/Updated/Deleted
  • Meeting Note Created/Updated/Deleted
  • Commercial Signal Detected

Call Integration

Flujo de Importación

Aircall

text
Aircall Import (Cron)

[call_aircall_import] → Importa llamadas desde Aircall

Ringover

text
Ringover Import (Cron)

[call_ringover_import] → Importa llamadas desde Ringover

3CX

text
3CX Import (Cron)

[call_threecx_import] → Importa llamadas desde 3CX

Hubspot

text
Hubspot Call Import

[call_hubspot_import] → Importa llamadas desde Hubspot

[call_hubspot_incoming_event] → Procesa eventos de Hubspot

Flujo de Outgoing

text
Call Created/Updated

[call_outgoing] → Envía datos de llamada a sistemas externos

Activity Metadata

Flujo de Generación

text
Meeting Summary Created (Domain Event)

[activity_metadata_generator] → Genera metadata de actividad

[activity_metadata_generator] → Genera metadata adicional si es necesario

Company

Flujo de Actualización de Status

text
Meeting Summary Created (Domain Event)

[company_status_update] → Actualiza status de compañía basado en summary

Goal

Flujo de Reporte

text
Goal Report Requested (Cron/Manual)

[goal_report_generation] → Genera reporte de objetivos

  ├─→ [jobs_queue_generic] → Procesa datos adicionales
  └─→ [jobs_queue_generic] → Finaliza reporte

Task

Flujo de Verificación de Vencimiento

text
Task Due Check (Cron)

[task_due_check] → Verifica tareas vencidas

[jobs_queue_generic] → Notifica/actualiza tareas vencidas

Playlist

Flujo de Access Control

text
Playlist Created/Updated

[playlist_access_team_enforcer] → Aplica control de acceso a nivel de equipo

Meeting Note

Flujo de Generación Automática

text
Activity Type Changed (Domain Event)

[meeting_note_generate_automatic_notes] → Genera notas automáticas

Flujo de Sincronización CRM

text
Meeting Note Created/Updated

[crm_meeting_note_outgoing] → Sincroniza nota con CRM

Meeting Bot

Flujo de Actualización de Media Output

text
Meeting Settings Changed (Domain Event)

[meeting_bot_update_bot_video_output] → Actualiza configuración de bot

Report

Flujo de Generación

text
Report Generation Requested

[report_generation] → Genera reporte

Transactional Email

Flujo de Envío

text
Event Triggered

[transactional_email_send] → Envía email transaccional

Eventos que disparan emails:

  • Meeting Summary Created → Email a participantes
  • Calendar Grant Expired → Notificación de expiración
  • User Created → Notificación a admins
  • Auth0 Ticket → Emails de autenticación

Domain Events

Flujo de Procesamiento

text
Domain Event Published

[domain_events] → Procesa evento de dominio

[domain_event_subscribers] → Ejecuta subscribers registrados

Subscribers comunes:

  • sync-meeting-summary-to-crm[crm_meeting_outgoing]
  • sync-meeting-participant-to-crm[crm_meeting_outgoing]
  • sync-meeting-opportunity-to-crm[crm_meeting_outgoing]
  • sync-meeting-contact-to-crm[crm_meeting_outgoing]
  • sync-meeting-company-to-crm[crm_meeting_outgoing]
  • update-company-status-from-summary[company_status_update]
  • generate-metadata-from-summary[activity_metadata_generator]
  • generate-notes-from-activity-type[meeting_note_generate_automatic_notes]
  • notify-meeting-created[webhook_outgoing]
  • notify-meeting-deleted[webhook_outgoing]
  • notify-meeting-note-created[webhook_outgoing]
  • notify-meeting-note-updated[webhook_outgoing]
  • notify-meeting-note-deleted[webhook_outgoing]
  • notify-commercial-signal-detected[webhook_outgoing]
  • enforce-meeting-access-for-user-team[meeting_access_team_enforcer]
  • enforce-playlist-access-for-user-team[playlist_access_team_enforcer]
  • disconnect-calendar-on-user-delete[calendar_disconnect]
  • disconnect-calendar-on-role-downgrade[calendar_disconnect]
  • disconnect-calendar-on-billing-change[calendar_disconnect]
  • update-bot-settings-on-meeting-settings-change[meeting_bot_update_bot_video_output]

Business Events

Flujo de Procesamiento

text
Business Event Published

[business_events] → Procesa evento de negocio

[business_event_subscribers] → Ejecuta subscribers registrados

[jobs_queue_generic] → Jobs adicionales si es necesario

Maintenance Jobs

Flujo de Limpieza

Async Job Cleanup

text
Async Job Cleanup (Cron)

[async_job_cleanup] → Limpia jobs antiguos

Audit Log Cleanup

text
Audit Log Cleanup (Cron)

[audit_log_cleanup] → Limpia logs de auditoría antiguos

Webhook Event Cleanup

text
Webhook Event Cleanup (Cron)

[webhook_event_cleanup] → Limpia eventos de webhook antiguos

Access Control

Flujo de Retry

text
Access Control Retry Requested

[access_control_retry] → Reintenta operación de control de acceso

Flujo de Reconciliation

text
Access Control Reconciliation (Cron)

[access_control_reconciliation] → Reconcilia permisos

Commercial Signal

Flujo de Actualización

text
Commercial Signal Detected

[commercial_signal_suggested_actions_update] → Actualiza acciones sugeridas

Notas Importantes

Dependencias Críticas

  1. Meeting Summary requiere Transcript:

    • meeting_summary_generation SIEMPRE requiere que meeting_transcript_process esté completado
    • Sin transcript, el summary no puede generarse
  2. Meeting Feedback Report requiere Transcript:

    • meeting_feedback_report_generation SIEMPRE requiere que meeting_transcript_process esté completado
  3. VTT Caption requiere Transcript:

    • meeting_vtt_caption_upload SIEMPRE requiere que meeting_transcript_process esté completado
  4. Video requiere conversión a Audio:

    • Para meetings con video, meeting_video_audio_conversion debe completarse antes de meeting_transcript_generation
  5. CDN Upload puede ejecutarse en paralelo:

    • meeting_media_cdn_upload puede ejecutarse en paralelo con otros procesos, pero es necesario para el streaming

Patrones Comunes

  • Domain Events → Subscribers → Jobs: La mayoría de los flujos comienzan con un Domain Event que dispara un Subscriber que a su vez crea Jobs
  • Retry Patterns: Muchas colas tienen lógica de retry automática configurada en BullMQ
  • Idempotency: Los processors usan locks de Redis para evitar procesamiento duplicado
  • Transactional Consistency: Todos los jobs usan JobsQueueService.appendJobToQueue() que garantiza consistencia transaccional con la base de datos

Colas que Trabajan de Forma Atómica

Estas colas pueden ejecutarse independientemente sin depender de otras:

  • webhook_outgoing
  • transactional_email_send
  • crm_*_outgoing (después de recibir el evento)
  • calendar_disconnect
  • user_removal
  • billing_*
  • access_control_*
  • playlist_access_team_enforcer
  • meeting_access_team_enforcer
  • meeting_bot_*
  • commercial_signal_*
  • task_due_check
  • goal_report_generation
  • report_generation
  • Maintenance jobs (cleanup)

Última Actualización

Este documento fue generado automáticamente analizando todos los usos de appendJobToQueue en el código base.

Fecha: 2026-01-23