Resumen de la arquitectura
Resumen de la arquitectura de Matcher
Contextos delimitados
Matcher tiene siete módulos. Cada uno es dueño de sus datos y expone interfaces limpias a los demás.
- Configuración: qué concilias (contextos, fuentes, mapas de campos, reglas)
- Discovery: conexiones a fuentes de datos externas, detección de esquemas y orquestación de extracciones con el motor de extracción embebido de Matcher
- Ingesta: entrada de los datos (parseo, validación, normalización)
- Coincidencia: el motor (ejecución de reglas, puntuación de confianza)
- Excepción: manejo de los ítems no conciliados (workflow, enrutamiento, resolución)
- Gobernanza: registros de auditoría (logs inmutables para cumplimiento)
- Informes: visibilidad (informes, exportaciones, dashboards)
Configuración
Define qué concilias y cómo. Maneja:- Contextos (qué concilias)
- Fuentes (de dónde vienen los datos)
- Mapas de campos (traducción de los campos externos)
- Reglas (cómo hacer coincidir)
ReconciliationContext: el ámbito de la conciliaciónReconciliationSource: configuración de la fuenteFieldMap: reglas de traducción de camposMatchRule: lógica de coincidencia
Discovery
El contexto delimitado Discovery gestiona la conectividad con fuentes de datos externas, la detección de esquemas y la orquestación de extracciones con el motor de extracción. Discovery se ejecuta dentro de Matcher. No hay un servicio de extracción separado que desplegar. Responsabilidades:- Gestionar las conexiones a fuentes de datos externas
- Detectar y cachear los esquemas de las fuentes
- Ejecutar extracciones en el mismo proceso y entregar los resultados directamente a Ingesta
- Seguir los ciclos de vida de las conexiones y de las extracciones
FetcherConnection: conexión a una fuente externa gestionada localmente por el motor de extracciónExtractionRequest: sigue el ciclo de vida de una extracción que ejecuta el motor embebido
Consulta Discovery para ver cómo Discovery se conecta a bases de datos externas con el motor de extracción.
Ingesta
El contexto delimitado Ingesta maneja la entrada y la normalización de los datos. Responsabilidades:- Parsear los archivos subidos (CSV, JSON, XML)
- Validar los datos entrantes contra los esquemas configurados
- Normalizar los datos externos a una representación canónica
- Detectar y manejar los registros duplicados
- Emitir eventos de dominio cuando termina la ingesta
IngestionJob: sigue el ciclo de vida y el estado de la ingestaTransaction: registro canónico normalizado de una transacción
ingestion.completed: indica que los datos están listos para la coincidencia
Coincidencia
El contexto delimitado Coincidencia contiene el motor de conciliación. Responsabilidades:- Cargar las reglas aplicables a un contexto de conciliación
- Ejecutar las estrategias de coincidencia (exacta, por tolerancia, difusa, por fecha)
- Calcular las puntuaciones de confianza
- Crear grupos de coincidencia y asignar transacciones
- Identificar las transacciones no conciliadas
MatchRun: ejecución de un trabajo de coincidenciaMatchGroup: grupo de transacciones conciliadasMatchItem: asignación individual de una transacción
match_group.confirmed: un grupo de coincidencia quedó finalizadomatch_group.unmatched: una coincidencia confirmada antes fue revertidatransaction.pending_review: un candidato no automático necesita revisión
Gestión de excepciones
El contexto delimitado Excepción gestiona las transacciones sin resolver. Responsabilidades:- Clasificar las excepciones por severidad
- Enrutar las excepciones a equipos internos o a sistemas externos
- Admitir anulaciones y ajustes manuales
- Seguir el estado de resolución y los SLA
- Integrarse con herramientas externas de workflow
Exception: una transacción sin resolverResolution: resultado del manejo de una excepciónRoutingRule: lógica de enrutamiento y de escalamiento
- JIRA para el seguimiento de incidencias
- ServiceNow para incidentes de la Table API
- Webhooks para workflows personalizados
Gobernanza
El contexto delimitado Gobernanza preserva la trazabilidad de la conciliación. Responsabilidades:- Registrar en logs de auditoría inmutables los workflows de mutación auditables instrumentados
- Proveer un historial de auditoría consultable
- Admitir los informes regulatorios y de cumplimiento
AuditLog: registro solo por adición de los workflows de mutación auditables instrumentados
Informes
El contexto delimitado Informes provee visibilidad operativa. Responsabilidades:- Generar informes de conciliación
- Exponer métricas de dashboard
- Exportar los datos de conciliación en varios formatos
Report: resumen de la conciliaciónDashboard: métricas operativas agregadasExportJob: ejecución asíncrona de una exportación
Flujo de datos
La conciliación sigue un pipeline determinista a través de los contextos delimitados:
1
Configuración
Defines los contextos de conciliación, las fuentes, los mapeos de campos y las reglas a través de la API.
2
Discovery
Discovery se conecta a las fuentes externas, detecta sus esquemas y ejecuta extracciones en el mismo proceso con el motor de extracción. Discovery entrega los resultados extraídos directamente a Ingesta.
3
Ingesta
Ingesta parsea, valida, normaliza y deduplica los archivos subidos y los datos que extrae Discovery. Ingesta emite un evento
ingestion.completed.4
Coincidencia
Coincidencia aplica las reglas a las transacciones elegibles y produce grupos de coincidencia con puntuaciones 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 autoconfirmarse. Los grupos FUZZY y DATE_LAG siempre requieren revisión manual. Los ítems no conciliados se convierten en excepciones.
5
Manejo de excepciones
El contexto Excepción clasifica y enruta las excepciones. La resolución ocurre de forma manual o a través de sistemas externos. Las actualizaciones de resolución vuelven a Matcher.
6
Gobernanza
Gobernanza registra en logs de auditoría inmutables los workflows de mutación auditables instrumentados a lo largo del pipeline.
7
Informes
Los usuarios acceden a informes y dashboards que muestran el estado de la conciliación, las tasas de coincidencia y la antigüedad de las excepciones.
Componentes de infraestructura
Matcher depende de los siguientes servicios de infraestructura:
Arquitectura de la base de datos
- Resolución de pool por tenant en los despliegues multi-tenant configurados, para separar los datos
- Consistencia fuerte para el estado de coincidencia y de excepciones
- Consistencia eventual para las vistas de informes
Multi-tenancy
Matcher aplica un aislamiento estricto entre tenants:- En los despliegues multi-tenant con
AUTH_PROVIDER=plugin-auth, Matcher toma la identidad del tenant de los claims JWTtenant_idotenantId - Los despliegues single-tenant y los que tienen la autenticación deshabilitada usan el tenant predeterminado configurado
- Matcher nunca acepta identificadores de tenant desde los parámetros de la solicitud
- Todo el acceso a la base de datos pasa por el pool de conexiones del tenant activo
- Matcher restringe de forma automática cada consulta al tenant activo
Este modelo evita el acceso a datos entre tenants y cubre los requisitos regulatorios y de auditoría.
Patrones de diseño
Arquitectura hexagonal
Cada contexto delimitado sigue el patrón de puertos y adaptadores:Cqrs-light
Matcher separa los caminos de escritura y de lectura en el nivel del servicio:*_commands.gopara las mutaciones de estado*_queries.gopara las operaciones de lectura
Patrón outbox
Matcher usa políticas de entrega por evento. Matcher persiste un registro de outbox para los eventos respaldados por outbox y los despacha de forma asíncrona. Otros eventos pueden usar entrega directa con un respaldo en outbox cuando el circuito está abierto.Próximos pasos
Inicio rápido
Explora la arquitectura con un ejemplo guiado.
Seguridad
Revisa los mecanismos de autenticación, autorización y aislamiento entre tenants.

