Peculium v0.9.2 — cofre antigo não migrava, e a importação falhava
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 EXISTSnã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.