Visión general de la arquitectura
Descripción general de la arquitectura del Matcher
Contextos acotados
Matcher tiene siete módulos. Cada uno posee sus datos y expone interfaces limpias hacia los demás.
- Configuración: Qué estás conciliando (contextos, fuentes, mapeos de campos, reglas)
- Descubrimiento: Conexiones a fuentes de datos externas, detección de esquemas y orquestación de extracción con el motor Fetcher integrado
- Ingesta: Obtención de datos (análisis, validación, normalización)
- Conciliación: El motor (ejecución de reglas, puntuación de confianza)
- Excepciones: Manejo de elementos no conciliados (flujo de trabajo, enrutamiento, resolución)
- Gobernanza: Registros de auditoría (logs inmutables para cumplimiento)
- Reportes: Visibilidad (informes, exportaciones, dashboards)
Configuración
Define qué estás conciliando y cómo. Maneja:- Contextos (qué se está conciliando)
- Fuentes (de dónde vienen los datos)
- Mapeos de campos (traducción de campos externos)
- Reglas (cómo conciliar)
ReconciliationContext: El alcance de la conciliaciónReconciliationSource: Configuración de la fuenteFieldMap: Reglas de traducción de camposMatchRule: Lógica de conciliación
Descubrimiento
El contexto acotado de Descubrimiento gestiona la conectividad con fuentes de datos externas, la detección de esquemas y la orquestación de extracciones con el motor Fetcher integrado. Matcher aloja ese motor en proceso; Fetcher no es un servicio remoto. Responsabilidades:- Gestionar las conexiones a fuentes de datos externas
- Detectar y cachear los esquemas de las fuentes
- Ejecutar extracciones en proceso y trasladar los resultados directamente a Ingesta
- Rastrear los ciclos de vida de las conexiones y las extracciones
FetcherConnection: Conexión a una fuente externa gestionada localmente por el motor integradoExtractionRequest: Rastrea el ciclo de vida de una extracción ejecutada por el motor integrado
Consulta Descubrimiento para ver cómo Descubrimiento se conecta a bases de datos externas con el motor Fetcher integrado.
Ingesta
El contexto acotado de Ingesta maneja la entrada y normalización de datos. Responsabilidades:- Analizar archivos subidos (CSV, JSON, XML)
- Validar datos entrantes contra esquemas configurados
- Normalizar datos externos a una representación canónica
- Detectar y manejar registros duplicados
- Emitir eventos de dominio cuando la ingesta se completa
IngestionJob: Rastrea el ciclo de vida y estado de la ingestaTransaction: Registro canónico de transacción normalizado
ingestion.completed: Indica que los datos están listos para conciliación
Conciliación
El contexto acotado de Conciliación contiene el motor de reconciliación. Responsabilidades:- Cargar reglas aplicables para un contexto de conciliación
- Ejecutar estrategias de conciliación (exacta, tolerancia, basada en fecha)
- Calcular puntajes de confianza
- Crear grupos de conciliación y asignar transacciones
- Identificar transacciones no conciliadas
MatchRun: Ejecución de un trabajo de conciliaciónMatchGroup: Grupo de transacciones conciliadasMatchItem: Asignación individual de transacción
match_group.confirmed: Un grupo de conciliación ha sido finalizadomatch_group.unmatched: Una conciliación previamente confirmada fue revertidatransaction.pending_review: Un candidato no automático necesita revisión
Gestión de excepciones
El contexto acotado de Excepciones gestiona las transacciones no resueltas. Responsabilidades:- Clasificar excepciones por severidad
- Enrutar excepciones a equipos internos o sistemas externos
- Soportar anulaciones manuales y ajustes
- Rastrear estado de resolución y SLAs
- Integrarse con herramientas externas de flujo de trabajo
Exception: Una transacción no resueltaResolution: Resultado del manejo de la excepciónRoutingRule: Lógica de enrutamiento y escalamiento
- JIRA para seguimiento de incidencias
- Webhooks para flujos de trabajo personalizados
Gobernanza
El contexto acotado de Gobernanza preserva la trazabilidad de la conciliación. Responsabilidades:- Registrar flujos de mutación auditables instrumentados en logs de auditoría inmutables
- Proporcionar historial de auditoría consultable
- Soportar reportes regulatorios y de cumplimiento
AuditLog: Registro de solo adición de los flujos de mutación auditables instrumentados
Reportes
El contexto acotado de Reportes proporciona visibilidad operacional. Responsabilidades:- Generar informes de conciliación
- Exponer métricas de dashboard
- Exportar datos de conciliación en múltiples formatos
Report: Resumen de conciliaciónDashboard: Métricas operacionales agregadasExportJob: Ejecución de exportación asíncrona
Flujo de datos
La conciliación sigue un pipeline determinístico a través de los contextos acotados:
1
Configuración
Los contextos de conciliación, fuentes, mapeos de campos y reglas se definen a través de la API.
2
Descubrimiento
Descubrimiento se conecta a fuentes externas, detecta sus esquemas y ejecuta extracciones en proceso con el motor Fetcher integrado. Los resultados extraídos se trasladan directamente a Ingesta.
3
Ingesta
Los archivos subidos y los datos extraídos por Descubrimiento se analizan, validan, normalizan y deduplican. Se emite un evento
ingestion.completed.4
Conciliación
Las reglas de conciliación se aplican a las transacciones elegibles, produciendo grupos de conciliación con puntajes de confianza en una escala entera de 0 a 100. Los grupos EXACT y TOLERANCE con una confianza de al menos 90 sobre 100 pueden confirmarse automáticamente; los grupos FUZZY y DATE_LAG siempre requieren revisión manual. Los elementos no conciliados se convierten en excepciones.
5
Manejo de excepciones
Las excepciones se clasifican, enrutan y resuelven ya sea manualmente o a través de sistemas externos. Las actualizaciones de resolución se propagan de vuelta a Matcher.
6
Gobernanza
Los flujos de mutación auditables instrumentados a lo largo del pipeline se registran en logs de auditoría inmutables.
7
Reportes
Los usuarios acceden a informes y dashboards que muestran el estado de conciliación, tasas de conciliación y antigüedad de excepciones.
Componentes de infraestructura
Matcher depende de los siguientes servicios de infraestructura:
Arquitectura de base de datos
- Resolución de pools específicos por tenant en despliegues multi-tenant configurados para la separación de datos
- Consistencia fuerte para estado de conciliación y excepciones
- Consistencia eventual para vistas de reportes
Multi-tenancy
Matcher aplica estricto aislamiento de tenants:- Con
AUTH_PROVIDER=plugin-auth, la identidad del tenant se extrae de los claims JWTtenant_idotenantId - Los despliegues con
workos, single-tenant o autenticación deshabilitada usan el tenant predeterminado configurado - Los identificadores de tenant nunca se aceptan a través de parámetros de solicitud
- El acceso a la base de datos se delimita mediante el pool de conexiones del tenant activo
- Todas las consultas se restringen automáticamente al tenant activo
Este modelo previene el acceso a datos entre tenants y soporta requisitos regulatorios y de auditoría.
Patrones de diseño
Arquitectura hexagonal
Cada contexto acotado sigue el patrón de puertos y adaptadores:CQRS-light
Los caminos de escritura y lectura se separan a nivel de servicio:*_commands.gopara mutaciones de estado*_queries.gopara operaciones de lectura
Patrón Outbox
Matcher usa políticas de entrega por evento. Los eventos respaldados por outbox persisten un registro outbox y se despachan de forma asíncrona; otros eventos pueden usar entrega directa con respaldo de outbox cuando el circuito está abierto.Próximos pasos
Inicio rápido
Explora la arquitectura a través de un ejemplo guiado.
Seguridad
Revisa los mecanismos de autenticación, autorización y aislamiento de tenants.

