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
- CRM Integration
- Calendar Integration
- Voice Agent Call
- User
- Billing
- Webhook
- Call Integration
- Activity Metadata
- Company
- Goal
- Task
- Playlist
- Meeting Note
- Meeting Bot
- Report
- Transactional Email
- Domain Events
- Business Events
- Maintenance Jobs
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_generationNO puede ejecutarse sinmeeting_transcript_processcompletadomeeting_feedback_report_generationNO puede ejecutarse sinmeeting_transcript_processcompletadomeeting_vtt_caption_uploadNO puede ejecutarse sinmeeting_transcript_processcompletado
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
-
Meeting Summary requiere Transcript:
meeting_summary_generationSIEMPRE requiere quemeeting_transcript_processesté completado- Sin transcript, el summary no puede generarse
-
Meeting Feedback Report requiere Transcript:
meeting_feedback_report_generationSIEMPRE requiere quemeeting_transcript_processesté completado
-
VTT Caption requiere Transcript:
meeting_vtt_caption_uploadSIEMPRE requiere quemeeting_transcript_processesté completado
-
Video requiere conversión a Audio:
- Para meetings con video,
meeting_video_audio_conversiondebe completarse antes demeeting_transcript_generation
- Para meetings con video,
-
CDN Upload puede ejecutarse en paralelo:
meeting_media_cdn_uploadpuede 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_outgoingtransactional_email_sendcrm_*_outgoing(después de recibir el evento)calendar_disconnectuser_removalbilling_*access_control_*playlist_access_team_enforcermeeting_access_team_enforcermeeting_bot_*commercial_signal_*task_due_checkgoal_report_generationreport_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