Skip to content

Peculium v0.9.2 — cofre antigo não migrava, e a importação falhava

Choose a tag to compare

@devtulio devtulio released this 04 Aug 02:03
· 7 commits to main since this release

Correção de uma regressão introduzida na v0.9.0, mais a auditoria completa do caminho de importação que a encontrou.

no such column: chave

Cofre criado por versão anterior não migrava, e a importação falhava na hora de gravar.

A atualização do esquema rodava o script antes da migração. Duas coisas se somam:

  • CREATE TABLE IF NOT EXISTS não altera tabela que já existe — a coluna nova não nascia;
  • a linha seguinte do script cria o índice único sobre essa coluna, e estourava com no such column.

A migração que acrescentaria a coluna nunca chegava a rodar. Como falha de migração é degradante e não fatal — decisão deliberada, porque cofre que não abre é muito pior que tela quebrada —, o cofre abria comprometido e só reclamava mais tarde.

Migração que muda a FORMA da tabela passou a rodar antes do script. A que só mexe em dado continua depois.

Por que a suíte não pegou

O teste montava um cofre antigo sem a tabela em questão: ali o CREATE TABLE rodava de verdade e a coluna nascia junto. Migração de esquema tem de ser testada contra um banco que já tem a tabela, não contra um vazio.

Auditoria do caminho de importação

Seis blocos, todos verificados contra um acervo real — dez notas de corretagem e os relatórios da B3 do ano inteiro:

Verificação Resultado
Cofre antigo abre e migra corretoras duplicadas fundidas, lançamentos repontados, CNPJ preservado
A migração fica gravada e é idempotente reabrir não refaz nem duplica
Importação completa sobre o cofre migrado fecha no total conferido, sem nenhuma nota criando negócio novo
Reimportar os mesmos arquivos tudo marcado como duplicado, carteira intacta
Colisão de nome de corretora barrada
Apagar tudo e reimportar devolve o cofre ao estado inicial

Zero achados de lógica. Dois de comunicação, corrigidos:

  • Cofre que não migrou avisava num toast de sete segundos dizendo que "telas novas podem falhar" — some antes de ser lido. Agora é alerta permanente no painel.
  • Renomear uma corretora para o nome de outra mostrava UNIQUE constraint failed. Agora explica que os dois nomes reduzem ao mesmo cadastro.

A migração também ficou à prova de tabela faltando: ela repontava lançamentos sem checar se a tabela existia, e migração que estoura no meio degrada o cofre inteiro — pior que a duplicata que ia corrigir.


5 testes novos, as cinco proteções verificadas por mutação. 392 unitários e 38 E2E.

O Windows pode barrar o executável (Smart App Control): use Peculium.cmd ou rode do código-fonte.