Visão geral
O Matcher suporta quatro padrões de correspondência:
| Padrão | Descrição | Exemplo |
|---|---|---|
| 1:1 | Uma origem para um destino | Pagamento de fatura única |
| 1:N | Uma origem para vários destinos | Pagamento em lote cobrindo faturas |
| N:1 | Várias origens para um destino | Depósitos consolidados no banco |
| N:M | Várias origens para vários destinos | Compensação complexa |
Como funciona
O comportamento de divisão e agregação é controlado por dois mecanismos:
- Tipo de contexto — determina a cardinalidade da correspondência (
1:1,1:NouN:M). - Flags de alocação da regra — controlam como os valores são distribuídos dentro de um grupo de correspondência.
Mapeamento de tipo de contexto
| Tipo de contexto | Padrões permitidos |
|---|---|
1:1 | Apenas uma origem para um destino |
1:N | Uma origem para vários destinos (split), ou várias origens para um destino (aggregate) |
N:M | Qualquer combinação de origens e destinos |
Configurações de alocação da regra
Todos os tipos de regra aceitam flags de alocação noconfig:
| Campo | Tipo | Descrição |
|---|---|---|
allowPartial | Boolean | Permitir alocação parcial dos valores das transações |
allocationDirection | String | Ordem de alocação: LEFT_TO_RIGHT ou RIGHT_TO_LEFT |
allocationToleranceMode | String | Como a tolerância é medida: ABS (absoluta) ou PERCENT |
allocationToleranceValue | Decimal | Limite de tolerância para residuais de alocação |
allocationUseBaseAmount | Boolean | Usar valor base (convertido) para alocação |
Exemplo: regra tolerance com alocação
cURL
Criando um contexto 1:N
Para habilitar correspondência dividida ou agregada, crie um contexto com tipo
1:N:
cURL
Correspondência dividida 1:N
Uma transação de origem corresponde a múltiplas transações de destino.
Casos de uso comuns
- Pagamento em lote: Uma única transferência cobrindo múltiplas faturas
- Folha de pagamento: Um débito bancário para múltiplos pagamentos de salário
- Liquidação: Um pagamento de gateway para múltiplos pedidos
Exemplo: pagamento de faturas em lote
Origem (Extrato Bancário):| ID | Valor | Referência |
|---|---|---|
| bank_001 | $15.000,00 | BULK-PAY-2024-001 |
| ID | Valor | Fatura |
|---|---|---|
| inv_001 | $5.000,00 | INV-2024-001 |
| inv_002 | $7.500,00 | INV-2024-002 |
| inv_003 | $2.500,00 | INV-2024-003 |
Correspondência agregada N:1
Múltiplas transações de origem correspondem a uma transação de destino.
Casos de uso comuns
- Depósitos bancários: Múltiplos cheques depositados como um único crédito
- Liquidações de cartão: Lote diário de transações como um único depósito
- Consolidação de caixa: Múltiplos recebimentos de caixa registradora para um depósito
Exemplo: depósito consolidado
Origens (Ponto de Venda):| ID | Valor | Caixa |
|---|---|---|
| pos_001 | $1.250,00 | REG-01 |
| pos_002 | $980,00 | REG-02 |
| pos_003 | $1.770,00 | REG-03 |
| ID | Valor | Referência |
|---|---|---|
| bank_002 | $4.000,00 | DEPOSIT-20240120 |
Correspondência N:M muitos-para-muitos
Múltiplas transações de origem correspondem a múltiplas transações de destino. Este é o padrão mais complexo.
Casos de uso comuns
- Compensação intercompany: Múltiplas faturas compensadas contra múltiplos pagamentos
- Liquidações de negociação: Compensação complexa com preenchimentos parciais
- Reconhecimento de receita: Múltiplas entregas contra múltiplos adiantamentos
Exemplo: compensação intercompany
Origens (Contas a Pagar da Empresa A):| ID | Valor | Referência |
|---|---|---|
| pay_001 | $10.000,00 | IC-PAY-001 |
| pay_002 | $8.000,00 | IC-PAY-002 |
| ID | Valor | Referência |
|---|---|---|
| rec_001 | $12.000,00 | IC-REC-001 |
| rec_002 | $6.000,00 | IC-REC-002 |
N:M:
cURL
Executando e revisando matches
Após configurar o contexto e as regras, dispare uma execução de correspondência e revise os grupos resultantes.
Executar correspondência
cURL
Visualizar histórico de execuções
cURL
Visualizar grupos de correspondência
cURL
Visualizar detalhes do grupo
cURL
Confirmar um grupo de correspondência
cURL
Rejeitar um grupo de correspondência
cURL
Revogar um grupo de correspondência confirmado
cURL
Algoritmo de correspondência
Para cenários N:M, o Matcher usa alocação sequencial determinística para parear transações.
Como funciona
- Ordenar: As transações são ordenadas deterministicamente para garantir resultados reproduzíveis entre execuções.
- Iterar: O motor percorre os candidatos em ordem de prioridade.
- Alocar: Os valores são distribuídos de acordo com a configuração
allocationDirection(LEFT_TO_RIGHTouRIGHT_TO_LEFT). - Rastrear residuais: Quaisquer valores não alocados restantes são rastreados. Se
allowPartialfortrue, correspondências parciais são criadas; caso contrário, transações não alocadas se tornam exceções.
Melhores práticas
Comece com 1:N antes de N:M
Comece com 1:N antes de N:M
A correspondência muitos-para-muitos é complexa. Comece com padrões mais simples e habilite N:M apenas quando necessário.
Use tolerância de alocação para arredondamento
Use tolerância de alocação para arredondamento
Pequenas diferenças de arredondamento são comuns em pagamentos divididos. Defina allocationToleranceValue em alguns centavos para evitar exceções falsas.
Habilite alocação parcial deliberadamente
Habilite alocação parcial deliberadamente
Defina allowPartial como true apenas quando correspondências parciais são esperadas. Isso evita correspondências falsas de dados incompletos.
Faça dry-run antes de confirmar
Faça dry-run antes de confirmar
Sempre teste correspondência dividida e agregada no modo DRY_RUN primeiro para verificar os resultados de alocação.
Monitore residuais
Monitore residuais
Acompanhe os valores residuais ao longo do tempo. Residuais crescentes podem indicar problemas sistemáticos de correspondência.
Próximos passos
Regras de Correspondência
Configure regras e configurações de alocação.
Segurança
Segurança e controle de acesso.

