# Re-migração completa Autbank para o Core SCD, relatório final (2026-06-27)

Tudo abaixo foi medido no ambiente vivo de homologação (conta 990933657879, sa-east-1), sem inferência. A entidade SCD da Monetarie foi re-migrada a partir do backup novo do concorrente Autbank, que trouxe o razão completo com saldo corrido.

## O que mudou

O estado anterior (migração do backup antigo) tinha R$ 741.158,98 em 1.573 contas. A re-migração substituiu esse estado pelo backup novo, que é mais completo: trouxe o histórico real de 258.959 movimentos, mais 33 contas e mais titulares. A autoridade do saldo continua sendo `account_wallets.balance`, igual à primeira migração.

O reset destrutivo foi autorizado pelo dono. Antes dele rodamos um dry-run de reconciliação e provamos os números. Só depois apagamos o estado antigo e aplicamos o novo.

## Resultado, reconciliado ao centavo

| Item | Valor |
|---|---|
| Contas migradas | 1.604 |
| Titulares (clientes) | 1.540 |
| Cadastros KYC (membros) | 1.604 |
| Linhas de extrato (account_entries) | 259.022 |
| Saldo total das contas (extrato) | R$ 961.192,27 |
| Contas em quarentena | 2 (saldo negativo, somando -R$ 14,25) |

A porta de saída da migração comparou, conta a conta, a soma do extrato com o saldo no TigerBeetle e com a autoridade `account_wallets.balance`. Resultado: zero divergência, zero erro, batimento ao centavo (`to_the_cent: true`, `mismatch_count: 0`).

As 2 contas em quarentena têm saldo negativo (-R$ 6,23 e -R$ 8,02). O TigerBeetle não credita saldo negativo, então elas ficaram de fora, exatamente como os casos duros da primeira migração. Por isso o total migrado (R$ 961.192,27) é R$ 14,25 maior que a soma de todas as carteiras da origem (R$ 961.178,02).

## Contabilidade COSIF, balancete fechado

O razão foi reescriturado por dupla partida, agregado por família contábil e mês, na janela de julho de 2024 a junho de 2026 (24 snapshots mensais). A classificação dos 258.959 movimentos cobriu os 34 history_codes reais sem nenhum chute: o que não estivesse na lista viraria pendência contábil, não lançamento.

Posições COSIF (snapshot de junho de 2026):

| Conta | Código | Valor |
|---|---|---|
| Disponibilidades | 1.1.2.10.01.10.001 | R$ 1.272.953,86 |
| Obrigações por conta de pagamento | 4.9.8.10.01.10.002 | R$ 961.192,27 |
| Receita de tarifas | 7.1.7.10.01.10.001 | R$ 311.629,76 |
| IOF adicional a recolher | 4.9.1.10.02.10.002 | R$ 76,55 |
| IOF de operação de crédito a recolher | 4.9.1.10.02.10.001 | R$ 5,05 |
| Juros | 7.1.1.10.01.10.213 | R$ 50,23 |

Ativo igual a Passivo mais Resultado, ao centavo: 1.272.953,86 = (961.192,27 + 81,60) + (311.629,76 + 50,23). O balancete fecha mês a mês.

## Mapa de classificação contábil

A classificação saiu da descrição real de cada history_code no próprio legado:

- Toda entrada de dinheiro ao cliente (recebimento Pix, TED, estorno, migração de saldo): débito em Disponibilidades, crédito em Obrigações.
- Toda saída (Pix de pagamento, TED, transferência, devolução, título): débito em Obrigações, crédito em Disponibilidades.
- Tarifas (00903 Tarifa PIX, 00902 Tarifa TED, 00912 e 00906 Manutenção de Conta, 00736 Serviço Negociado, 00905 Atualização Cadastral): crédito em Receita de tarifas.
- IOF adicional (00813) e IOF de operação de crédito (00808): crédito nas contas próprias de IOF.
- Juros (00802): crédito em Juros.

O código 00725 (Título Próprio Banco, R$ 55,8 milhões em 3.812 débitos) entrou como saída de dinheiro do cliente, o que mantém o saldo correto. Se a contabilidade quiser tratá-lo como aplicação em ativo, é só ajustar o mapa, sem mexer no saldo dos clientes.

## Evidências de tela

Capturadas no coreadmin vivo, em `~/Desktop/monetarie-evidencias-etl-remigracao-2026-06-27`:

- `01-dashboard-961192.png`: painel com Conta de Pagamento R$ 961.192,27, Disponibilidades R$ 1.272.953,86, Resultado do Exercício R$ 311.679,99 e liquidez imediata de 132,4 por cento.
- `02-clientes-1540.png`: lista de clientes populada com os titulares reais migrados.
- `03-balancete-cosif.png`: balancete contábil com o plano de contas COSIF preenchido e fechando (Ativo igual a Passivo mais Resultado).
- `04-contas-correntes.png`: visão de contas correntes, 148 ativas com saldo total de R$ 845.895,19 (a parcela ativa do total).

O painel separa o saldo por situação: 148 contas ativas somam R$ 845.895,19, 7 contas bloqueadas somam R$ 115.296,96 e as demais somam R$ 0,12, fechando os R$ 961.192,27.

## Como foi feito

O ETL roda dentro da VPC, na própria task do core-api, porque as contas novas precisam de carteira no TigerBeetle (SQL puro não cria). O backup foi carregado num schema `autbank_src` dentro do mon_core e lido pela mesma conexão. O orquestrador `Monetarie.Etl.Autbank.Remigrate` faz: reset da entidade, criação de cliente, conta e carteira por titular, depósito do saldo no TigerBeetle, escrituração do extrato (abertura mais movimento), escrituração COSIF agregada e snapshots mensais, e por fim a reconciliação.

Dois ajustes foram necessários durante a execução, ambos provados antes de seguir:

1. A task tem 1 GB de memória. Carregar os 258.959 movimentos de uma vez estourava a memória. Passamos a percorrer o razão conta a conta, e o dry-run passou a usar um agregado leve.
2. A coluna de origem é do tipo uuid. O Postgrex exige o binário de 16 bytes, não a string, então passou a usar `Ecto.UUID.dump!`.

## Limpeza

O schema `autbank_src` foi apagado do mon_core e o bucket S3 `monetarie-etl-src-990933657879` foi removido, porque continham dado pessoal do concorrente. O backup original segue no Desktop do dono.

## Pendências honestas

- Capital social segue em R$ 0,00. O backup do Autbank não traz o capital da Monetarie. Cadastrar a integralização real quando houver.
- Indicadores de PIX, boletos, MED e Basileia no painel seguem em zero. São telas ainda não implementadas, fora do escopo do ETL.
- As 2 contas em quarentena (saldo negativo) podem ser tratadas à parte se o cliente quiser representá-las.
</content>
