SonaCORE

Só em ambiente local

Conciliação

O ledger e o extrato do patrocinador divergem de quatro formas diferentes, e a conciliação encontra cada uma.

O que é simulado
Todo o trilho, e mais um passo. Além do simulador de patrocinador que não está publicado, este roteiro escreve uma linha de identidade Pix diretamente no banco, porque não existe endpoint equivalente. Isso o torna impossível de seguir apenas pela API, e é por isso que ele é local e não do ambiente de avaliação.

O que este roteiro prova

  • A divergência é encontrada por uma rodada de conciliação, não por alguém olhando duas telas.
  • Cada tipo de divergência vira uma obrigação em exceção com o motivo classificado: lançamento ausente, tarifa não prevista, duplicado, valor diferente.
  • A prova do dia é reproduzível: rode de novo depois de corrigir e ela fecha.

Os passos

Os corpos abaixo estão abreviados nos identificadores, que você substitui pelos que as respostas anteriores devolvem. Cada escrita que cria valor precisa de um cabeçalho Idempotency-Key. Este roteiro roda contra um stack local, não contra o ambiente de avaliação.

  1. Subir o ambiente local e zerar o simulador

    A conciliação compara dois lados, então os dois precisam começar de um estado conhecido.

    ./scripts/devlocal.sh up, depois POST /sim/reset (simulador)
  2. Preparar a conta e a identidade

    Criar a parte e a conta pela API. A identidade Pix é escrita direto no banco: este é o passo sem equivalente em endpoint, e a razão pela qual o roteiro é local.

    POST /v1/parties, POST /v1/accounts, e uma escrita direta
  3. Movimentar dinheiro nos dois sentidos

    Um crédito recebido e um pagamento enviado, para que exista algo a conciliar.

    POST /sim/inbound-pix (simulador), POST /v1/obligations
  4. Comparar os dois lados

    A conta espelho do caixa externo no ledger contra o saldo do patrocinador. Em um dia sem divergência, os dois batem.

    GET /v1/gl/accounts/gl_external_cash, e o saldo do simulador
  5. Rodar um ciclo de conciliação

    Uma rodada compara e classifica. Sem divergência, ela fecha limpa.

    POST /v1/recon/runs
    corpo
    { "kind": "cycle" }
  6. Provocar as quatro divergências

    Um crédito sem aviso, uma tarifa que o ledger não previu, um lançamento duplicado no extrato e um valor diferente do combinado. Cada um deve aparecer como exceção classificada, e não como uma diferença total que alguém precisa investigar.

    quatro chamadas ao simulador, depois GET /v1/obligations?state=EXCEPTION
  7. Fechar a prova do dia

    Depois de corrigir, a prova do dia é gerada e consultada. É reproduzível: mesmos dados, mesmo resultado.

    POST /v1/recon/runs, depois GET /v1/recon/proofs/{business_day}
    corpo
    { "kind": "daily_proof" }

A versão executável

Este roteiro é a espinha de scripts/demo-recon.sh, no repositório do núcleo. Esse script roda na nossa integração contínua a cada mudança relevante, então uma divergência entre o que está escrito aqui e o que o sistema faz quebra o build antes de chegar a esta página.

local
./scripts/devlocal.sh up
./scripts/demo-recon.sh