Descripción General
Esta guía cubre el flujo completo para el monitoreo de transacciones, desde la creación hasta el análisis automático de riesgo y la generación de alertas. Las transacciones se evalúan según reglas específicas para detectar patrones sospechosos, montos inusuales, jurisdicciones de alto riesgo y otras señales de alerta.Diagrama de Flujo
Paso 1: Crear Transacción
Las transacciones se crean a través de la API de transacciones con conversión automática de moneda y ejecución opcional de reglas. Endpoint:POST /transactions
Solicitud:
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| externalId | string | Sí | Su identificador único para esta transacción |
| type | enum | Sí | Tipo de transacción: PAYMENT, TRANSFER, WITHDRAWAL, DEPOSIT, REFUND, CHARGEBACK, REVERSAL, FEE, ADJUSTMENT, OTHER |
| status | enum | No | Estado de la transacción (por defecto: PENDING) |
| amount | number | Sí | Monto de la transacción en la moneda original |
| currency | string | Sí | Código de moneda ISO 4217 (ej., USD, EUR, GBP) |
| paymentMethod | enum | No | Método de pago utilizado |
| originEntityId | uuid | No | ID de la entidad emisora (si la entidad existe en el sistema) |
| originExternalId | string | No | Identificador externo del emisor |
| originName | string | No | Nombre del emisor |
| originCountry | string | No | País del emisor (ISO 3166-1 alpha-2) |
| destinationEntityId | uuid | No | ID de la entidad receptora (si la entidad existe en el sistema) |
| destinationExternalId | string | No | Identificador externo del receptor |
| destinationName | string | No | Nombre del receptor |
| destinationCountry | string | No | País del receptor (ISO 3166-1 alpha-2) |
| description | string | No | Descripción de la transacción |
| category | string | No | Categoría de la transacción |
| transactedAt | datetime | No | Cuándo ocurrió la transacción (por defecto: ahora) |
| executeRules | boolean | No | Ejecutar reglas automáticamente (por defecto: true) |
| metadata | object | No | Metadatos personalizados adicionales |
-
Conversión de Moneda:
- Si la moneda no es USD, convierte el monto a USD usando tasas de cambio en tiempo real
- Almacena:
amountInUsd,exchangeRate,rateSource,rateTimestamp - En caso de falla de conversión, la transacción aún se crea (sin monto en USD)
-
Creación de Transacción:
- Se crea el registro de transacción en la base de datos
- Se genera un ID único
- Se vincula a las entidades de origen/destino si se proporcionan
-
Análisis Automático de Riesgo (si
executeRules: true):- Ejecuta reglas específicas de transacción
- Calcula la puntuación de riesgo
- Crea alertas para las reglas que coinciden
- Actualiza el estado de la transacción si es necesario
Paso 2: Conversión de Moneda
Cómo Funciona la Conversión de Moneda
- Conversión Automática: Si
currency !== 'USD', el sistema automáticamente convierte a USD - Proveedor: Usa el servicio
ms-providers(configurado víaMS_PROVIDERS_URL) - Caché: Las tasas de cambio se almacenan en caché por 1 minuto (TTL)
- Resiliencia: Patrón de circuit breaker con respaldo a caché obsoleto
- Degradación Controlada: Si la conversión falla, la transacción aún se crea (sin monto en USD)
- Si
currency: 'USD', no se necesita conversión amountInUsd = amountexchangeRate = 1rateSource = 'no-conversion'
Manejo de Fallas de Conversión
Si el servicio de moneda no está disponible:Paso 3: Análisis de Riesgo de Transacciones
Cómo Funciona el Análisis de Riesgo de Transacciones
El RulesExecutionService evalúa las transacciones usando reglas específicas de transacción:-
Carga de Contexto:
- Carga los datos de la transacción
- Carga las entidades vinculadas (origen/destino) con datos de enriquecimiento
- Prepara el contexto de ejecución
-
Selección de Reglas:
- Filtra reglas por
targetEntityTypes: ['transaction'] - Filtra por disparador:
'created'(para automático) o'manual_evaluation' - Filtra por estado:
enabled: trueystatus: 'active'
- Filtra reglas por
-
Ejecución de Reglas:
- Evalúa las condiciones de reglas contra el contexto de transacción
- Ejecuta acciones para reglas coincidentes (agregar puntuación, crear alertas, actualizar estado)
- Acumula la puntuación de riesgo
-
Actualización de Puntuación:
- Actualiza el
riskScorede la transacción - Establece
flagged: truesi la puntuación > 50 - Almacena el array
riskFactorscon razones
- Actualiza el
-
Creación de Alertas:
- Las reglas con acción
create_alertgeneran alertas - Las alertas se vinculan a la transacción
- Las alertas se consolidan en investigaciones después de un retraso de 5 segundos
- Las reglas con acción
Ejemplos de Reglas Específicas de Transacción
Regla 1: Monto de Transacción GrandeEstructura del Contexto de Transacción
El motor de reglas recibe este contexto:Paso 4: Creación de Transacciones en Lote
Para escenarios de alto volumen, use el endpoint de lote para crear múltiples transacciones eficientemente. Endpoint:POST /transactions/batch
Solicitud:
- Inserción masiva para mejor rendimiento
- Conversión de moneda optimizada (almacena en caché las tasas para la misma moneda)
- Detección automática de duplicados (por externalId)
- Ejecución opcional de reglas en todas las transacciones
- Máximo 1000 transacciones por lote
- Tiempo de espera de 2 minutos
Paso 5: Análisis Manual de Transacciones
Si creó una transacción conexecuteRules: false, puede activar manualmente el análisis de riesgo más tarde.
Endpoint: POST /entities/:transactionId/analyze
Solicitud:
- Re-analizar la transacción después del enriquecimiento de la entidad
- Analizar la transacción después de actualizaciones de reglas
- Re-puntuación periódica de transacciones pendientes
Paso 6: Consultas y Monitoreo de Transacciones
Listar Transacciones con Filtrado
Endpoint:GET /transactions
Parámetros de Consulta:
flagged: Filtrar por estado marcado (true, false, all)minAmount/maxAmount: Filtro de rango de monto (en moneda original)currency: Filtrar por monedatype: Filtrar por tipo de transacciónstatus: Filtrar por estado de transacciónentityId: Filtrar por entidad de origen o destinostartDate/endDate: Filtro de rango de fechassearch: Búsqueda de texto libre (externalId, description, names)sortBy: Campo de ordenamiento (transacted_at, amount, risk_score, created_at)sortOrder: Dirección de ordenamiento (asc, desc)
Obtener Detalles de Transacción
Endpoint:GET /transactions/:transactionId
Respuesta: Objeto completo de transacción con detalles de análisis de riesgo
Ver Alertas de Transacción
Endpoint:GET /alerts?transactionId=:transactionId
Respuesta: Todas las alertas generadas para la transacción
Paso 7: Consolidación de Alertas e Investigaciones
Después del análisis de riesgo, las alertas se consolidan automáticamente en investigaciones:- Creación de Alertas: Las reglas con acción
create_alertcrean alertas individuales - Retraso de 5 Segundos: El sistema espera para recopilar todas las alertas relacionadas
- Consolidación: Las alertas relacionadas se consolidan en una sola investigación
- Creación de Investigación: Se crea la investigación con:
- Prioridad basada en la severidad de alerta más alta
- Estado: “open”
- Todas las alertas relacionadas vinculadas
- Notificaciones: Se notifica a los analistas sobre la nueva investigación
Mejores Prácticas
-
Siempre Habilite Reglas Automáticas: Establezca
executeRules: true(por defecto) para detectar transacciones sospechosas inmediatamente. -
Use la API de Lote para Volumen: Para importaciones masivas o escenarios de alto volumen, use
/transactions/batchpara un mejor rendimiento. -
Vincule Entidades: Siempre proporcione
originEntityIdydestinationEntityIdcuando estén disponibles. Esto habilita:- Datos de enriquecimiento de entidad en la evaluación de reglas
- Mejor agregación de riesgo
- Patrones de transacción a nivel de entidad
-
Mapeo de ID Externo: Siempre establezca un
externalIdúnico para correlación con sus sistemas. -
Manejo de Moneda: El sistema maneja la conversión de moneda automáticamente. Asegúrese de que
MS_PROVIDERS_URLesté configurado correctamente. -
Configuración de Reglas: Configure las reglas de transacción para su apetito de riesgo:
- Umbrales de monto apropiados para su negocio
- Jurisdicciones de alto riesgo basadas en sus requisitos de cumplimiento
- Reglas de velocidad basadas en patrones normales de transacción
-
Gestión de Estado: Use el campo
statusde la transacción para rastrear el ciclo de vida:- PENDING → APPROVED/REJECTED/CANCELLED
- Actualice el estado basado en revisión manual o validación externa
-
Monitoreo: Configure dashboards para monitorear:
- Tasa de transacciones marcadas
- Puntuaciones de riesgo promedio
- Volumen de alertas por tipo
- Tiempo de resolución de investigaciones