# Mapa dos backups SQL Server AB/GX/MGI para ETL Monetarie

Data: 2026-07-01  
Escopo: 16 backups em `/Users/luizpenha/Downloads/exportdbs/*.bak`  
Ambiente usado: Docker/OrbStack, SQL Server 2022 Developer emulado `linux/amd64`, container local `monetarie-bak-mssql`.

> Regra de segurança: este relatório contém apenas metadados, contagens e agregados. Não inclui linhas de dados, documentos, chaves PIX, XMLs, certificados, endpoints ou credenciais.

## Evidência de restauração

Todos os backups foram restaurados com sucesso em SQL Server 2022. Os cabeçalhos são `FULL`, `compatibility_level=160`, `DatabaseVersion=957`, backup finalizado em 2026-06-30 entre 20:18 e 20:26. O maior backup é `AB_PAGAMENTO_INSTANTANEO.bak` (~4,3 GiB); o volume restaurado local ficou em ~6,2 GiB.

Artefatos locais não versionados:

- `.scratch/mssql-bak-analysis/analyze_sqlserver_backups.py`
- `.scratch/mssql-bak-analysis/out/backup_inventory.json`
- `.scratch/mssql-bak-analysis/out/all_databases_analysis.json`
- `.scratch/mssql-bak-analysis/out/SUMMARY.md`

Artefato versionado complementar:

- `docs/reports/2026-07-01-pix-spb-cabine-etl-manifest.md`
- `docs/reports/2026-07-01-pix-spb-etl-load-result.md`
- `etl/legacy_pix_spb/load_legacy_pix_spb.py`

Status de carga local:

- SPB: carga executada em `cc_spb`, usando staging `legacy_ab_spb` e projeções em `spb_operations`, `bacen_messages`, `message_type_config` e `message_tag_definitions`.
- PIX: carga executada em `cc_pix`. Neste ambiente local, os schemas reais usam prefixo `cecresa_*` (`cecresa_spi`, `cecresa_dict`, `cecresa_spi_msg` etc.), então o ETL mapeou o contrato lógico da cabine PIX para esses schemas.
- Resultado consolidado: `legacy_ab_pix.source_rows` com 2.083.978 linhas, `legacy_ab_spb.source_rows` com 1.999.426 linhas, além das projeções oficiais registradas no relatório de carga.

## Alvo correto da carga: cabines PIX e SPB

Este mapeamento não direciona carga para o Core. O backup do Core é outro. Estes backups são fontes legadas para subir histórico e referência nas cabines correspondentes:

- Cabine PIX (`mon_pix`): `AB_PAGAMENTO_INSTANTANEO*`, `AB_GI_INFO*` e bases `AB_GX*`/`GX*`. Destinos naturais: `monetarie_spi`, `monetarie_spi_msg`, `monetarie_dict`, `monetarie_settlement` e `monetarie_audit`.
- Cabine SPB (`bacen_gateway`): `AB_MGI*`. Destinos naturais: `spb_operations`, `bacen_messages`, `message_tracking`, `operation_events`, `legacy_status_mapping` e tabelas de referência/configuração SPB.
- Core: fora do escopo desta carga. Se algum reflexo for necessário depois, deve nascer de eventos/status definitivos já reconciliados pelas cabines, não de carga SQL direta desses backups.

Ponto importante da cabine PIX atual: `monetarie_spi.messages` é o dado produtivo canônico. `monetarie_spi.transactions` existe em outro contexto e não deve ser o alvo primário da migração sem uma decisão explícita de produto/engenharia.

## Mapa executivo por backup

| Backup | Sistema inferido | Conteúdo real restaurado | Decisão ETL |
|---|---|---:|---|
| `AB_PAGAMENTO_INSTANTANEO.bak` | Cabine PIX Autbank / Pagamento Instantâneo | 435 tabelas, 178 com linhas, ~3,48M linhas. Operacional PIX: pacs/pibr, ordens, crédito/débito, MED/infração, devolução, mensagens BACEN/PSP, saldo SPI, reconciliação. | Carregar seletivamente na cabine PIX: `monetarie_spi.messages`/`payments`, `monetarie_spi_msg`, `monetarie_audit`, `bacen_inbound`/`bacen_outbound`, MED/devolução/DICT conforme tipo. Não subir no Core. |
| `AB_PAGAMENTO_INSTANTANEO_EXTRATO.bak` | Projeção de extrato GI/PIX | 11 tabelas; `EXTRATO_MOVIMENTO_GI` com 13.250 linhas. | Melhor fonte para histórico de extrato na cabine PIX: `monetarie_spi.statements`/`statement_entries` ou staging histórico equivalente, com dedupe por `SEQUENCIAL` e filtro de status. |
| `AB_GI_INFO_MOVIMENTOS_INTERNOS.bak` | GI / movimentos internos reportados | 5 tabelas; 49 lotes/operações aprovadas, R$ 3.580.073,14. | Carregar na cabine PIX como trilha de liquidação/reporte GI, preferencialmente em `monetarie_settlement`/auditoria, não como razão financeiro principal. |
| `AB_GI_INFO_MOVIMENTOS_INTERNOS_ANTIGA.bak` | GI antigo | Mesmas 5 tabelas, só 2 linhas de controle. | Não migrar; manter só como evidência histórica. |
| `AB_PAGAMENTO_INSTANTANEO_METRICAS.bak` | Métricas PIX/DICT | 15 tabelas, 51.995 linhas. DICT, pagamento/recebimento, latência/status. | Opcional para observabilidade histórica da cabine PIX; não entra em saldo ou extrato financeiro de cliente. |
| `AB_PAGAMENTO_INSTANTANEO_BALDES_DICT.bak` | Configuração de baldes/rate limit DICT | 44 tabelas, só 40 linhas; `PARAMETROS_BALDE_DICT` tem 36. | Migrar como configuração se ainda aplicável; preferir config-as-code/env. Não migrar como dado transacional. |
| `AB_PAGAMENTO_INSTANTANEO_CTAESPECIAL.bak` | Conta especial / bloqueio / limite | 9 tabelas, só 1 linha de controle. | Sem carga operacional. Para dados futuros, tratar como domínio PIX/conta especial da cabine, com decisão separada antes de qualquer reflexo contábil. |
| `AB_PAGAMENTO_INSTANTANEO_EXPURGO.bak` | Expurgo/extração/retenção | 21 tabelas, 57 linhas de controle. | Não migrar para runtime; usar como referência de retenção e auditoria do legado. |
| `AB_MGI.bak` | MGI, mensageria/interfacing SPB/MQ e catálogos | 77 tabelas, 37 com linhas, ~1,41M linhas. Grande parte é catálogo de mensagens/domínios; há 10.461 `TRANS_INTERF_PASS`. | Carregar na cabine SPB: `spb_operations`, `bacen_messages`, `message_tracking`/`operation_events` e seeds de referência. Não carregar credenciais/certificados; reconfigurar via Secrets Manager/HSM. |
| `AB_MGI_DDAMSG.bak` | Catálogo MGI/DDA mensagens | 72 tabelas, 26 com linhas, ~590k linhas. Predomina `DOMINIOS`, `COLUNAS`, `MENSAGENS_COL`, `TIPODADO`. | Seed/reference para DDA/SPB: tipos de mensagem, tags, domínios, eventos e mapeamentos legados. Não é razão financeiro. |
| `AB_GX_GESTAO.bak` | GeneXus Gestão/configuração PIX | 4 tabelas, 12 linhas de parâmetros/log. | Migrar manualmente apenas parâmetros aprovados; não ETL transacional. |
| `AB_GX_TRIAGEM.bak` | GeneXus Triagem/agendamento PIX | 4 tabelas, 0 linhas. | Sem ETL. Serve como schema legado para entender contratos. |
| `AB_GX_AGENDAMENTO_UNICO.bak` | GeneXus Agendamento único PIX | 8 tabelas, 0 linhas. | Sem ETL. Se o produto exigir agendamentos legados, fonte está vazia. |
| `AB_GX_NOTIFICACAO.bak` | GeneXus notificação/outbox | 2 tabelas, 0 linhas. | Sem ETL; usar NATS/webhooks atuais. |
| `AB_GX_PIX_AGENDAMENTO.bak` | GeneXus idempotência de agendamento PIX | 1 tabela, 0 linhas. | Sem ETL. |
| `GX_PIX_AGENDAMENTO.bak` | Banco GX PIX agendamento antigo/vazio | 0 tabelas. | Ignorar. |

## Detalhe dos domínios migráveis

### 1. Cabine PIX operacional (`AB_PAGAMENTO_INSTANTANEO`)

Principais tabelas com linhas:

- Mensagens/auditoria BACEN/PSP: `MENSAGEM_BACEN_PSP` (21.808), `MENSAGEM_BACEN_PSP_MENSAGEM` (21.808), `MENSAGEM_RESPOSTA_BACEN_PSP` (8.761), `MENSAGEM_RESPOSTA_BACEN_PSP_MENSAGEM` (8.761).
- Pagamentos e recebimentos: `ANOTACAO_CREDITO` (8.761), `ORDEM_PAGAMENTO` (4.445), `BLOQUEIO_ORDEM_PAGAMENTO` (4.392).
- Contabilidade cliente: `MOVIMENTOS_CONTABEIS_CLIENTE_CREDITO_EXTERNO` (7.995, R$ 137.725.773,24) e `MOVIMENTOS_CONTABEIS_CLIENTE_DEBITO_EXTERNO` (4.239, R$ 162.123.883,61).
- SPI/saldo: `BALANCO_SALDO_SPI` (1.382; `SADP/CRDT` soma R$ 1.180.960.730,38 e `SABK/CRDT` soma zero), `MOVIMENTOS_CONTA_PI` (1.112).
- MED/devolução/infração: `MSG_SOLICITACAO_DEVOLUCAO_*` (~1,2M somadas), `MSG_RELATO_DE_INFRACAO_*` (~603k somadas), além de tabelas de bloqueio/devolução especial.
- Conectividade e monitoramento: `TESTE_CONECTIVIDADE` (122.245), `PIBR001_REGISTRO_ENVIO` (60.412), `THUMBPRINT_SITE_HISTORICO` (53.183).

Agregados seguros:

- `ANOTACAO_CREDITO`: 8.761 `AUTORIZADO`, R$ 159.722.913,42; `END_TO_END` é único nessa tabela.
- `BLOQUEIO_ORDEM_PAGAMENTO`: 4.392 `BLOQUEADO`, R$ 168.935.505,42; `END_TO_END` é único nessa tabela.
- `ORDEM_PAGAMENTO`: 4.445 `ENVIADA`; `END_TO_END` é único nessa tabela.
- Janela operacional principal: 2025-11-27 até 2026-06-30.

ETL necessário:

1. Restaurar em staging SQL Server ou extrair para staging PostgreSQL isolado da cabine PIX, por exemplo `legacy_ab_pix`. A carga final em `mon_pix` deve ser controlada por scripts idempotentes, não por import direto em tabelas vivas.
2. Criar uma camada normalizada com chave idempotente por `{source_db, source_table, primary_key}`. E2E pode ser chave natural dentro de algumas tabelas, mas não deve ser a única chave global.
3. Mapear `COD_MSG`/tabela de origem para `message_code`/`msg_def_idr`, `ID_MSG` para `message_id`, `END_TO_END` para `end_to_end_id`, datas de operação para `operation_time`/`message_time`, e status legado para `status_id` em `monetarie_spi.messages`.
4. Derivar `monetarie_spi.payments` a partir de `ANOTACAO_CREDITO`, `ORDEM_PAGAMENTO`, `BLOQUEIO_ORDEM_PAGAMENTO` e `MOVIMENTOS_CONTABEIS_CLIENTE_*`, preservando valor com `Decimal`, ISPB, agência, conta, documento mascarável, participante/contraparte e referência interna.
5. Carregar `MENSAGEM_*`/`MSG_*` como mensageria e auditoria PIX: `monetarie_spi.bacen_inbound`, `monetarie_spi.bacen_outbound`, `monetarie_spi_msg` e/ou `monetarie_audit`, conforme direção e tipo. Payload XML/varbinary deve ir como hash/referência de storage quando não couber no banco transacional.
6. Carregar MED, devolução e infração nas tabelas PIX próprias (`monetarie_dict`/MED/devolução, conforme schema atual). Onde não houver tabela final, manter em staging auditável até criação do destino.
7. Reconciliar contra `EXTRATO_MOVIMENTO_GI`, `BALANCO_SALDO_SPI` e GI antes de liberar qualquer evento downstream. Este passo valida a cabine PIX; não é carga no Core.

### 2. Extrato PIX/GI (`AB_PAGAMENTO_INSTANTANEO_EXTRATO`)

`EXTRATO_MOVIMENTO_GI` é a melhor fonte tabular para extrato de cliente:

- 13.250 linhas entre 2025-12-02 e 2026-06-30.
- Colunas relevantes: `SEQUENCIAL`, `END_TO_END`, `END_TO_END_ORIGINAL`, `NATUREZA`, `STATUS`, `VALOR`, `VALOR_DEVOLUCAO`, `ORIGEMMOVIMENTO`, dados de parte/contraparte, `CHAVE`, `REFERENCIAINTERNA`, `MOTIVOMED`.
- `SEQUENCIAL` é único nas 13.250 linhas; `END_TO_END` tem 13.197 distintos, então não é chave idempotente suficiente.
- Agregado por natureza/status:
  - `C/SUCESSO/INDDEVOLUCAO=0`: 8.044 linhas, R$ 141.305.846,38.
  - `D/SUCESSO/INDDEVOLUCAO=0`: 4.288 linhas, R$ 165.703.956,75.
  - Há linhas `ERRO` e devoluções; devem ficar no audit trail, não necessariamente no extrato financeiro confirmado.

ETL necessário:

1. Usar `SEQUENCIAL` como idempotência primária, preservando E2E e E2E original como correlação.
2. Carregar como histórico de extrato da cabine PIX em `monetarie_spi.statements`/`monetarie_spi.statement_entries`, ou em staging histórico equivalente se o schema final exigir adaptação.
3. Converter `VALOR`, `VALOR_DEVOLUCAO` e campos monetários com `Decimal`, sem `float`, mantendo escala compatível com as colunas PIX.
4. `NATUREZA='C'` vira lançamento de crédito; `NATUREZA='D'` vira lançamento de débito dentro da cabine PIX.
5. Iniciar o extrato financeiro com `STATUS='SUCESSO'`; manter `ERRO` e inconsistências em staging/auditoria até regra de produto para tela, comprovante e conciliação.
6. Normalizar documentos/contas sem expor PII: `CPFCNPJ`, `NRO_CONTA`, agência e ISPB devem resolver participante/conta na cabine e depois gravar apenas referências mínimas necessárias.
7. Reconciliar por conta/dia/E2E: soma de `statement_entries` vs eventos do PIX principal, movimentos GI e saldo SPI quando houver saldo final aplicável.

### 3. GI movimentos internos (`AB_GI_INFO_MOVIMENTOS_INTERNOS`)

Conteúdo:

- `LOTE`, `OPERACAO_LOTE`, `MENSAGEM_ENVIADA`, `MENSAGEM_RECEBIDA`: 49 linhas cada.
- Todos os lotes `PROCESSADO_APROVADO`; todas as operações `APROVADO`, tipo `BOK1`, R$ 3.580.073,14.
- `END_TO_END` é único nas 49 operações.
- Janela: 2025-12-03 a 2026-05-28.

ETL necessário:

1. Carregar na cabine PIX como trilha de liquidação/reporte GI, preferencialmente em `monetarie_settlement` e/ou `monetarie_audit`, não como fonte primária do extrato.
2. Preservar XML compactado em storage/auditoria se houver requisito regulatório.
3. Reconciliar com `EXTRATO_MOVIMENTO_GI` por E2E antes de marcar a carga PIX como validada.
4. `AB_GI_INFO_MOVIMENTOS_INTERNOS_ANTIGA` não precisa de carga: só tem controle antigo.

### 4. MGI e DDA (`AB_MGI`, `AB_MGI_DDAMSG`)

`AB_MGI` é o banco de mensageria/interfacing:

- 77 tabelas, 11 procedures, 9 views, 38 FKs.
- Predominam catálogos: `MENSAGENS_COL`, `DOMINIOS`, `CONFIG_TAGS`, `COLUNAS`, `MENSAGENS`, `EVENTOS`, `TIPODADO`.
- Trilha operacional principal: `TRANS_INTERF_PASS` e `CORPO_TRANS_INTERF_PASS`, 10.461 linhas entre 2025-12-02 e 2026-06-24.
- Tem tabelas sensíveis de configuração/certificado/MQ: `PARAMETROS`, `PARAMETROS_MQ`, `CERTIFICADOS`.

`AB_MGI_DDAMSG` é um recorte/catálogo DDA/mensagens:

- 72 tabelas, 7 views, sem procedures.
- 590k linhas, quase tudo em domínios/colunas/tipos/mensagens.
- Não apareceu como razão de cliente.

ETL necessário:

1. Não migrar `PARAMETROS_MQ`, certificados ou chaves para banco destino. O padrão Monetarie é Secrets Manager/HSM, com endpoint e credenciais reconfigurados.
2. Transformar `MENSAGENS`, `EVENTOS`, `DOMINIOS`, `COLUNAS`, `TIPODADO`, `CONFIG_TAGS` e correlatas em seeds/versionamento de referência SPB, deduplicado por versão/manual, datas ativa/desativa e código de evento.
3. Carregar `TRANS_INTERF_PASS`/`TRANS_SISTEMAS` como operações SPB quando houver identificador operacional suficiente: destino `spb_operations`, com status legado traduzido via `legacy_status_mapping`.
4. Carregar `CORPO_TRANS_INTERF_PASS`, `CORPO_TRANS_INTERF_USMSG_PASS` e payloads correlatos como mensagens SPB: destino `bacen_messages`, com rastreio em `message_tracking` e histórico em `operation_events`.
5. Movimentação financeira derivada de MGI só entra na cabine SPB se houver mapa por `CODEVENTO`/mensagem/tipo de liquidação. Sem esse mapa, o dado fica como mensagem/operação auditável, não como lançamento financeiro.

### 5. Métricas, baldes, expurgo e conta especial

- `AB_PAGAMENTO_INSTANTANEO_METRICAS`: usar só para observabilidade histórica. DICT consulta: 10.880 HTTP 200, 78 HTTP 404, 66 HTTP 412. Pagamento final: 4.302 aprovadas, 118 rejeitadas. Recebimento final: 8.000 aprovadas, 291 rejeitadas.
- `AB_PAGAMENTO_INSTANTANEO_BALDES_DICT`: 36 parâmetros de balde DICT. Migrar manualmente se ainda compatíveis com rate limit atual.
- `AB_PAGAMENTO_INSTANTANEO_EXPURGO`: controle de expurgo/extração, sem dado financeiro relevante. Usar só para política de retenção.
- `AB_PAGAMENTO_INSTANTANEO_CTAESPECIAL`: schema de bloqueio/crédito/débito de conta especial, mas vazio no backup. Para cargas futuras, definir primeiro o destino na cabine PIX e só depois avaliar reflexos contábeis externos.

### 6. Bases GX

As bases GeneXus são praticamente vazias:

- `AB_GX_GESTAO`: 12 linhas de parâmetros/log. Pode alimentar checklist manual de configuração.
- `AB_GX_TRIAGEM`, `AB_GX_AGENDAMENTO_UNICO`, `AB_GX_NOTIFICACAO`, `AB_GX_PIX_AGENDAMENTO`: schemas sem linhas.
- `GX_PIX_AGENDAMENTO`: sem tabelas.

ETL necessário: nenhum ETL transacional. No máximo, comparar campos de schema com o que a cabine PIX atual já implementa para confirmar que não há agendamentos/notificações legadas pendentes.

## Ordem recomendada de execução

1. Congelar staging: manter os `.bak` restaurados em SQL Server 2022 local ou exportar para staging PostgreSQL isolado por schema (`legacy_ab_pix`, `legacy_ab_spb` etc.).
2. Construir validação dry-run: contagens por tabela, somas por natureza/status, chaves idempotentes e janela temporal. O dry-run deve falhar se surgir status/código sem mapa.
3. PIX primeiro: carregar referências/configurações aprovadas, depois `AB_PAGAMENTO_INSTANTANEO` em `monetarie_spi`/`monetarie_spi_msg`/`monetarie_audit`, e então `AB_PAGAMENTO_INSTANTANEO_EXTRATO` em `statements`/`statement_entries`.
4. PIX complementar: carregar GI em `monetarie_settlement`/auditoria, métricas em observabilidade histórica e baldes DICT apenas como configuração validada.
5. SPB depois: carregar `AB_MGI`/`AB_MGI_DDAMSG` como seeds de referência, `spb_operations`, `bacen_messages`, `message_tracking` e `operation_events`.
6. Reconciliar ao final de cada cabine:
   - `count` de linhas geradas por fonte.
   - somas C/D por conta e por dia.
   - idempotência (`SEQUENCIAL`, E2E por tabela, IDs originais).
   - status legado vs status destino.
   - mensagens/payloads por direção, tipo e data.

## Decisões em aberto

1. Confirmar o endpoint/banco de homologação das cabines PIX e SPB antes de qualquer carga fora do staging local.
2. Para `EXTRATO_MOVIMENTO_GI`, linhas `ERRO` entram em extrato operacional/auditoria, mas não em saldo. Confirmar regra de tela e comprovante na cabine PIX.
3. Definir tabela oficial de status legado -> status destino para `AUTORIZADO`, `BLOQUEADO`, `ENVIADA`, `SUCESSO`, `ERRO`, `aprovada`, `rejeitada`.
4. Confirmar se DDA/MGI será ativo na cabine SPB atual ou se ficará só como acervo técnico/reference seed.
5. Confirmar obrigação regulatória de retenção dos XMLs compactados/varbinary e o storage correto fora do banco transacional.
