Pular para conteúdo

Runbook — Correção histórica de landigitado / laninformado (MOV-01.5)

Issue: #29 · PLANID: MOV-01.5
Script SQL: ../../scripts/sql/fix_landigitado_logical_count.sql

Objetivo

Documentos/lotes importados antes do fix de contagem lógica podem ter laninformado / landigitado inflados (contagem física D/C). Este runbook recalcula para COUNT(DISTINCT lancamento).

Pré-requisitos

  1. Backup do banco (ou snapshot) do ambiente alvo.
  2. Aprovação explícita do Tech Lead para QAS/prod (não executar cego em produção).
  3. Janela sem import IPL / consolidação concorrente no escopo.
  4. Cliente psql (ou DBeaver) com acesso de escrita a ct_documentos / ct_lote.

Procedimento

A — Diagnóstico (somente leitura)

Execute o bloco SELECT de diagnóstico no início do SQL (descomentado).
Aceite parcial: listar documentos com landigitado <> logical_cnt.

B — Correção

  1. Revise o script; confirme política do passo 2 (laninformado = landigitado).
  2. Em QAS primeiro:
psql "$DATABASE_URL" -v ON_ERROR_STOP=1 \
  -f scripts/sql/fix_landigitado_logical_count.sql
  1. Reexecute o diagnóstico: docs_ainda_divergentes deve ser 0.
  2. Na UI: lote/documento com tipo 2 — “Informados/Digitados” = N lógico; grade detalhada = 2N linhas D/C.
  3. Confirme que alerta LanDigitado <> LanInformado não dispara em falso.

C — Alternativa: reimport

Se a política permitir apagar o lote importado e reprocessar o IPL com Lambda já corrigida (MOV-01.1–01.3):

  1. Identificar arquivo_ipl / texto Import:….IPL.
  2. Remover lote conforme procedimento operacional do ambiente (não documentado aqui por risco).
  3. Reupload via scripts/watch-import-pipeline.sh upload ….
  4. Validar totais lógicos no BD e na UI.

Preferir o SQL quando houver muitos lotes históricos ou política de retenção impedir delete.

Riscos

  • Relatórios que esperavam count físico de linhas (inventar impacto antes de prod).
  • laninformado alinhado a landigitado altera o valor “informado” original do arquivo — documentar decisão no ticket.

Rollback

Restaurar backup/snapshot. O script não grava tabela de auditoria própria.

Critério de aceite

  • Ambiente afetado corrigido ou procedimento aprovado pelo Tech Lead sem execução em prod.
  • Evidência (prints/SQL) anexada à Issue #29.