Visão geral da arquitetura
Visão geral da arquitetura do Matcher
Contextos delimitados
O Matcher tem sete 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, roteamento, resolução)
- Governança: trilhas de auditoria (logs imutáveis 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. Não existe um serviço de extração separado para fazer deploy. 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
FetcherConnection: conexão com fonte externa gerenciada localmente pelo motor de extraçãoExtractionRequest: 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 (CSV, JSON, XML)
- 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
- Rotear exceções para times internos ou sistemas externos
- Oferecer suporte a substituições e ajustes manuais
- Acompanhar o status de resolução e os SLAs
- Integrar com ferramentas externas de workflow
Exception: uma transação não resolvidaResolution: resultado do tratamento da exceçãoRoutingRule: lógica de roteamento e escalonamento
- JIRA para acompanhamento de chamados
- ServiceNow para incidentes da Table API
- Webhooks para workflows personalizados
Governança
O contexto delimitado de Governança preserva a rastreabilidade da conciliação. Responsabilidades:- Registrar em logs de auditoria imutáveis os workflows de mutação auditáveis e instrumentados
- 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 EXACT e TOLERANCE com confiança de pelo menos 90 em 100 podem se autoconfirmar. Grupos 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 e roteia as exceções. A resolução acontece manualmente ou por sistemas externos. As atualizações de resolução voltam para o Matcher.
6
Governança
A Governança registra em logs de auditoria imutáveis os workflows de mutação auditáveis e instrumentados de todo o pipeline.
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
- Resolução de pool por tenant em deploys multi-tenant configurados, para separação de dados
- Consistência forte para o estado de correspondência e de exceção
- Consistência eventual para as visões de relatório
Multi-tenancy
O Matcher aplica isolamento estrito de tenant:- Em deploys multi-tenant com
AUTH_PROVIDER=plugin-auth, o Matcher tira a identidade do tenant das claimstenant_idoutenantIddo JWT - Deploys single-tenant e com autenticação desabilitada usam o tenant padrão configurado
- O Matcher nunca aceita identificadores de tenant vindos dos parâmetros da requisição
- Todo acesso ao banco passa pelo pool de conexões do tenant ativo
- O Matcher restringe automaticamente cada consulta ao tenant ativo
Esse modelo evita acesso a dados entre tenants e atende requisitos regulatórios e de auditoria.
Padrões de design
Arquitetura hexagonal
Cada contexto delimitado segue o padrão de portas e adaptadores:Cqrs-light
O Matcher separa os caminhos de escrita e de leitura no nível do serviço:*_commands.gopara mutações de estado*_queries.gopara operações de leitura
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.

