Integraciones y Automatizacion
El modulo de onboarding se integra profundamente con otros modulos del sistema para automatizar tareas y sincronizar estados. Esta guia explica como funcionan estas integraciones.
Integracion con Documentos
DocumentRequest
Cuando agregas un item tipo document_request:
- OnboardingChecklistItem se crea
- Se crea vinculo con DocumentRequest
- Candidato sube archivos
- DocumentRequest.status = "completed"
- Sincronizacion automatica
- ChecklistItem.status = "completed"
Plantillas de documentos
Puedes usar DocumentRequestTemplate para crear solicitudes consistentes:
// Configuracion del item
{
type: "document_request",
documentRequestTemplateId: 5, // Usa plantilla existente
title: "Documentos de Ingreso"
}
Beneficios:
- Items predefinidos y estandarizados
- Menos configuracion manual
- Cambios en plantilla no afectan onboardings existentes
Sincronizacion de estado
El sistema sincroniza automaticamente:
| DocumentRequest | ChecklistItem |
|---|---|
| pending | pending |
| partial | in_progress |
| completed | completed |
Flujo de codigo:
- DocumentRequestController.completeRequest()
- OnboardingService.syncDocumentRequestStatus(requestId)
- Actualiza ChecklistItem.status
- Recalcula onboardingProgress
Integracion con Firmas
SignatureRequest
Cuando agregas un item tipo signature_request:
- OnboardingChecklistItem se crea
- Se crea vinculo con SignatureRequest (con PDF plantilla)
- Candidato firma
- SignatureRequest.status = "completed"
- Sincronizacion automatica
- ChecklistItem.status = "completed"
Documento plantilla
Cada item de firma requiere un PDF plantilla:
{
type: "signature_request",
documentTemplateKey: "templates/contrato-2024.pdf", // S3 key
documentTemplateUrl: "https://s3.../signed-url", // URL firmada
title: "Contrato de Trabajo"
}
Flujo de firma
- Candidato abre item en Mi Onboarding
- Navega a pagina de firma
- Visualiza PDF
- Dibuja firma
- Confirma
- PDF firmado se almacena
- SignatureRequest.status = "completed"
- Sincronizacion automatica
- ChecklistItem.status = "completed"
Expiracion
Las solicitudes de firma expiran en 30 dias. Si expira:
- El item permanece pendiente
- Reclutador debe crear nueva solicitud
- Se notifica al candidato
Integracion con Emails
Emails de notificacion
Al iniciar onboarding, puedes configurar emails automaticos:
| Destinatario | Proposito | |
|---|---|---|
| Bienvenida | Candidato | Informar sobre onboarding |
| RRHH | Reclutador | Notificar nueva contratacion |
Email de bienvenida
// Al iniciar onboarding
{
welcomeEmailTemplateId: 10 // ID de EmailTemplate
}
Variables disponibles:
| Variable | Descripcion |
|---|---|
{{candidateName}} | Nombre del candidato |
{{candidateEmail}} | Email del candidato |
{{positionTitle}} | Titulo de la vacante |
{{projectName}} | Nombre del proyecto |
{{startDate}} | Fecha de inicio formateada |
{{onboardingUrl}} | Link a Mi Onboarding |
{{companyName}} | Nombre de la empresa |
Email a RRHH
// Al iniciar onboarding
{
hrNotificationTemplateId: 11,
hrUserId: 5 // Usuario que recibe la notificacion
}
Variables adicionales:
| Variable | Descripcion |
|---|---|
{{recruiterName}} | Nombre del reclutador |
{{itemsCount}} | Numero de items en checklist |
Recordatorios
El sistema puede enviar recordatorios automaticos:
POST /api/onboarding/application/:appId/send-reminder
Contenido del recordatorio:
- Saludo personalizado
- Dias restantes
- Items pendientes
- Link a Mi Onboarding
Automatizacion con EventBus
Eventos emitidos
El onboarding emite eventos que pueden disparar automatizaciones:
ONBOARDING_ITEM_COMPLETED
Se emite cuando cualquier item se completa:
{
type: "ONBOARDING_ITEM_COMPLETED",
payload: {
applicationId: 123,
postulantId: 456,
itemId: 789,
itemType: "document_request",
itemTitle: "Documentos de Ingreso",
completedAt: "2024-01-15T10:30:00Z",
completedById: 456
}
}
Usos:
- Notificar al reclutador
- Actualizar dashboard en tiempo real
- Registrar en log de actividad
ONBOARDING_ALL_COMPLETED
Se emite cuando TODOS los items requeridos estan completos:
{
type: "ONBOARDING_ALL_COMPLETED",
payload: {
applicationId: 123,
postulantId: 456,
completedAt: "2024-01-15T14:00:00Z",
itemsCompleted: 6,
totalItems: 6
}
}
Usos:
- Notificar finalizacion a RRHH
- Mover tarea en proceso a siguiente etapa
- Activar integraciones externas
- Actualizar status en sistema externo
Suscribirse a eventos
En automatizaciones, puedes usar estos eventos como triggers:
Trigger: ONBOARDING_ALL_COMPLETED
Acciones:
- Enviar email de confirmacion
- Mover tarea a "Listo para iniciar"
- Notificar al gerente
Integracion con Procesos
Onboarding como etapa
El onboarding puede ser parte de un proceso de seleccion:
Proceso: Contratacion
- Entrevista
- Evaluacion
- Oferta
- Contratado
- Iniciar Onboarding
- Onboarding Completo
- Listo para iniciar
Automatizacion de proceso
Cuando el onboarding se completa, puedes:
1. Mover tarea automaticamente
- Evento: ONBOARDING_ALL_COMPLETED
- Accion: Mover tarea a etapa "Incorporado"
2. Crear siguiente tarea
- Evento: ONBOARDING_ALL_COMPLETED
- Accion: Crear tarea en proceso "Capacitacion"
Integracion con Vacantes
Plantilla por vacante
Puedes vincular plantillas a vacantes especificas:
- JobPosition: "Desarrollador Senior"
- OnboardingTemplate: "Onboarding Tech"
- Al contratar para esta vacante, se usa automaticamente esta plantilla
Configuracion
// OnboardingTemplate
{
name: "Onboarding Tech",
jobPositionId: 28, // Vinculado a vacante
items: [...]
}
Prioridad de seleccion
- Plantilla vinculada a la vacante
- Plantilla marcada como default
- Sin plantilla (items inline)
Sincronizacion de estados
Flujo completo
JobApplication
- status: "hired"
- onboardingStatus: "not_started" > "in_progress" > "completed"
- onboardingProgress: 0 > 50 > 100
OnboardingChecklistItems[]
- item1: "pending" > "completed"
- item2: "pending" > "in_progress" > "completed"
- item3: "pending" > "completed"
Recalculo de progreso
Cada vez que un item cambia:
- OnboardingService.updateOnboardingProgress(applicationId)
- Cuenta items completados
- Calcula porcentaje
- Actualiza onboardingProgress
- Si progress = 100%:
- onboardingStatus = "completed"
- onboardingCompletedAt = now()
Feature Gating
Acceso a plantillas
Crear plantillas requiere feature "automation":
// OnboardingTemplateController.create()
const hasAccess = await subscriptionService
.checkBooleanFeatureAccess(effectiveUserId, "automation");
if (!hasAccess) {
return res.status(403).json({
error: "Feature not available in your plan"
});
}
Plan requerido
| Funcionalidad | Plan Basico | Plan Pro |
|---|---|---|
| Crear onboarding | Si | Si |
| Items inline | Si | Si |
| Plantillas | No | Si |
| Automatizaciones | No | Si |
WebSocket en tiempo real
Presencia de candidato
El dashboard muestra si el candidato esta conectado:
// WebSocket event
{
type: "user_presence",
userId: 456,
status: "online"
}
Indicador en dashboard:
| Estado | Candidato |
|---|---|
| En linea (verde) | Juan Perez |
| Desconectado (gris) | Maria Garcia |
Actualizacion de progreso
Cuando el candidato completa un item:
// WebSocket event
{
type: "onboarding_progress_updated",
applicationId: 123,
progress: 67,
itemCompleted: "Documentos de Ingreso"
}
El dashboard se actualiza sin recargar.
Diagrama de integraciones
| Componente | Conexion | Destino |
|---|---|---|
| JobApplication (status:hired) | Crea | ChecklistItems |
| ChecklistItems | Vincula | DocumentReq / SignatureReq |
| OnboardingTmpl (items config) | Configura | ChecklistItems |
| EventBus (events) | Notifica | Automations |
| S3 Storage (files) | Almacena | Documentos y firmas |
| Automations (triggers/actions) | Ejecuta | EmailService |
| EmailService (notifications) | Envia | Candidato / RRHH |
Configuracion avanzada
Variables de entorno
No hay variables especificas para onboarding. Usa las generales de:
- S3 para almacenamiento de documentos
- Email para notificaciones
- Redis para cache de presencia
Timeouts
| Operacion | Timeout |
|---|---|
| Subida de archivo | 60s |
| Firma de documento | 30s |
| Sincronizacion | 10s |
Limites
| Recurso | Limite |
|---|---|
| Items por onboarding | 50 |
| Tamano de archivo | 10MB |
| Dias de expiracion firma | 30 |
Troubleshooting
Item no se sincroniza
Sintoma: DocumentRequest completado pero ChecklistItem sigue pendiente.
Causa: Error en la sincronizacion.
Solucion:
- Verificar logs del backend
- Llamar manualmente:
POST /api/onboarding/sync-document/:documentRequestId
Evento no se dispara
Sintoma: Onboarding completo pero automatizacion no ejecuta.
Causa: Trigger mal configurado.
Solucion:
- Verificar configuracion del trigger
- Revisar logs de EventBus
- Verificar que el evento tenga los campos esperados
Email no llega
Sintoma: Candidato no recibe email de bienvenida.
Causas:
- Template no configurado
- Email invalido
- Filtro de spam
Solucion:
- Verificar templateId al iniciar
- Revisar email del candidato
- Revisar logs de EmailService
Proximos pasos
- Plantillas de Onboarding - Crear plantillas
- Automatizacion - Configurar triggers