Erros que cometi criando meu sistema de estoque
De saldo negativo a duplicação de movimentação, os bugs reais que me ensinaram mais do que qualquer curso de arquitetura.
Post sem filtro. Os bugs que eu coloquei em produção construindo o StockPro.
1. Saldo como campo, não como projeção
Primeiro design: product.stock: number atualizado a cada movimentação.
Resultado: 3 semanas depois, relatórios divergiam do banco. Toda vez.
Correção: saldo é sempre derivado de movements. Cache é invalidado por evento.
2. Falta de idempotência no POST
Usuário com internet ruim clicava em "dar baixa" duas vezes. Duas saídas.
// Antes: ingenuidade pura
POST /movements { productId, qty: 5 }
// Depois: cliente manda um idempotencyKey
POST /movements
Headers: { "Idempotency-Key": "a4f9-..." }
3. Não validar estoque antes da saída
Resultado: saldo -3 camisas. Contabilmente impossível.
Hoje há uma beginStockTransaction() que trava o SKU, checa saldo e só então grava.
4. Relatórios batendo no banco de produção
Dashboard pesado derrubando o ERP na hora do fechamento. Hoje: read replica + materialização de agregados a cada 5 minutos.
Todo bug de produção vira uma regra de arquitetura. Quem não anotou, vai repetir.
Gostou do post?
Compartilha com alguém que tá resolvendo o mesmo problema.