Visão geral da arquitetura
Visão geral da arquitetura do Matcher
Contextos delimitados
O Matcher é dividido em módulos. Cada um é dono dos seus dados e expõe interfaces limpas para os outros.
- Configuração: o que você concilia (contextos, fontes, mapas de campos, regras)
- Discovery: conexões com fontes de dados externas, detecção de schema e orquestração de extração com o motor de extração embutido do Matcher
- Ingestão: entrada dos dados (parsing, validação, normalização)
- Correspondência: o motor (execução de regras, pontuação de confiança)
- Exceção: tratamento de itens não conciliados (workflow, atribuição, resolução)
- Governança: trilhas de auditoria (logs append-only para conformidade)
- Relatórios: visibilidade (relatórios, exportações, dashboards)
Configuração
Define o que você concilia e como. Trata:- Contextos (o que você concilia)
- Fontes (de onde os dados vêm)
- Mapas de campos (tradução de campos externos)
- Regras (como corresponder)
ReconciliationContext: o escopo da conciliaçãoReconciliationSource: configuração da fonteFieldMap: regras de tradução de camposMatchRule: lógica de correspondência
Discovery
O contexto delimitado Discovery gerencia a conectividade com fontes de dados externas, a detecção de schema e a orquestração de extração com o motor de extração. O Discovery roda dentro do Matcher. Responsabilidades:- Gerenciar conexões com fontes de dados externas
- Detectar e guardar em cache os schemas das fontes
- Rodar extrações no próprio processo e entregar os resultados direto para a Ingestão
- Acompanhar os ciclos de vida de conexão e de extração
- Gerenciar conexões com APIs REST e guardar o histórico de schema de cada conexão
ExtractionRequest: acompanha um ciclo de vida de extração rodado pelo motor embutido
Veja Discovery para saber como o Discovery conecta a bancos de dados externos com o motor de extração.
Ingestão
O contexto delimitado de Ingestão trata a entrada e a normalização dos dados. Responsabilidades:- Fazer o parse dos arquivos enviados
- Validar os dados recebidos contra os schemas configurados
- Normalizar dados externos em uma representação canônica
- Detectar e tratar registros duplicados
- Emitir eventos de domínio quando a ingestão termina
IngestionJob: acompanha o ciclo de vida e o status da ingestãoTransaction: registro canônico e normalizado de transação
ingestion.completed: indica que os dados estão prontos para a correspondência
Correspondência
O contexto delimitado de Correspondência contém o motor de conciliação. Responsabilidades:- Carregar as regras aplicáveis a um contexto de conciliação
- Executar estratégias de correspondência (exata, por tolerância, difusa, por data)
- Calcular pontuações de confiança
- Criar grupos de correspondência e alocar transações
- Identificar transações não conciliadas
MatchRun: execução de um job de correspondênciaMatchGroup: grupo de transações conciliadasMatchItem: alocação de uma transação individual
match_group.confirmed: um grupo de correspondência foi finalizadomatch_group.unmatched: uma correspondência confirmada antes foi revertidatransaction.pending_review: um candidato não automático precisa de revisão
Gestão de exceções
O contexto delimitado de Exceção gerencia transações não resolvidas. Responsabilidades:- Classificar exceções por severidade
- Atribuir exceções ao seu time
- Oferecer suporte a substituições, ajustes e disputas manuais
- Acompanhar o status de resolução
- Receber callbacks de resolução de sistemas externos
Exception: uma transação não resolvida
Governança
O contexto delimitado de Governança preserva a rastreabilidade da conciliação. Responsabilidades:- Registrar em logs de auditoria append-only as mudanças de configuração e as resoluções de exceções
- Fornecer histórico de auditoria consultável
- Oferecer suporte a relatórios regulatórios e de conformidade
AuditLog: registro append-only dos workflows de mutação auditáveis e instrumentados
Relatórios
O contexto delimitado de Relatórios fornece visibilidade operacional. Responsabilidades:- Gerar relatórios de conciliação
- Expor métricas de dashboard
- Exportar dados de conciliação em vários formatos
Report: resumo da conciliaçãoDashboard: métricas operacionais agregadasExportJob: execução assíncrona de exportação
Fluxo de dados
A conciliação segue um pipeline determinístico entre os contextos delimitados:
1
Configuração
Você define contextos de conciliação, fontes, mapeamentos de campos e regras pela API.
2
Discovery
O Discovery conecta a fontes externas, detecta os schemas delas e roda extrações no próprio processo com o motor de extração. O Discovery entrega os resultados extraídos direto para a Ingestão.
3
Ingestão
A Ingestão faz o parse, valida, normaliza e deduplica os arquivos enviados e os dados que o Discovery extrai. A Ingestão emite um evento
ingestion.completed.4
Correspondência
A Correspondência aplica regras às transações elegíveis e produz grupos de correspondência com pontuações de confiança em uma escala inteira de 0 a 100. Grupos de regras
EXACT e TOLERANCE com confiança de pelo menos 90 em 100 se autoconfirmam. Grupos de regras FUZZY e DATE_LAG sempre exigem revisão manual. Itens não conciliados viram exceções.5
Tratamento de exceções
O contexto de Exceção classifica as exceções, e o seu time as atribui e resolve. Sistemas externos podem informar resoluções por callbacks. As atualizações de resolução voltam para o Matcher.
6
Governança
A Governança registra em logs de auditoria append-only as mudanças de configuração e as resoluções de exceções.
7
Relatórios
Os usuários acessam relatórios e dashboards que mostram o status da conciliação, as taxas de correspondência e o envelhecimento das exceções.
Componentes de infraestrutura
O Matcher depende dos seguintes serviços de infraestrutura:
Arquitetura de banco de dados
- Consistência eventual para as visões de relatório
Resolução de tenant
O Matcher resolve o tenant assim:- O Matcher nunca aceita identificadores de tenant vindos dos parâmetros da requisição
Para detalhes, veja Segurança.
Padrões de design
Padrão outbox
O Matcher usa políticas de entrega por evento. O Matcher persiste um registro de outbox para os eventos apoiados em outbox e os despacha de forma assíncrona. Outros eventos podem usar entrega direta com fallback para o outbox quando o circuito está aberto.Próximos passos
Início rápido
Conheça a arquitetura por um exemplo guiado.
Segurança
Revise os mecanismos de autenticação, autorização e isolamento de tenant.

