Projeto 03
Atlas
Um sistema de planejamento de suprimentos que prevê a demanda por produto, projeta a data de ruptura e sugere o que comprar.
- Status
- Em produção
- Papel
- Desenvolvedor único: pipeline de dados, lógica de previsão e estoque, API e interface.
- Código
- Código privado
- ERP (Firebird)
- Importação em lote
- Modelos de previsão e estoque
- PostgreSQL
- Tela de planejamento
Problema
As decisões de compra dependiam de relatórios que rodavam direto no banco do ERP. Eles eram lentos, difíceis de comparar ao longo do tempo e não diziam nada sobre a confiabilidade de cada número. Cada produto precisava de três respostas: quanto vai vender, quando o estoque vai acabar e quanto comprar.
Solução
Um sistema separado que copia dados do ERP em lotes agendados para o seu próprio PostgreSQL, calcula previsões e projeções de estoque e entrega resultados pré-calculados para uma interface em Vue, de modo que nenhuma tela consulta o ERP. O motor de previsão foi portado de um módulo anterior do ERP e ampliado com seleção de modelo por backtest, correção de rupturas e acompanhamento de acurácia.
Destaques de engenharia
- Série diária de demanda com correção de rupturas: dias sem estoque são reestimados a partir dos dias com estoque do mesmo dia da semana e ficam fora da avaliação dos modelos.
- Sete modelos candidatos por produto: médias móveis ponderadas de 7, 28 e 90 dias, Holt com tendência amortecida, variantes com sazonalidade por dia da semana e Croston (SBA) para demanda intermitente.
- Seleção de modelo por backtest com origem móvel, ordenado por WMAPE. O MASE contra uma previsão ingênua do mesmo dia da semana sinaliza produtos em que nenhum modelo supera a referência simples.
- Estoque de segurança que considera a variabilidade da demanda e do lead time, ponto de reposição e sugestões de compra até o nível-alvo, priorizadas pela proximidade da ruptura.
- Snapshots versionados das previsões, para que o gráfico de previsto x realizado mostre o que foi realmente previsto na época, e não um passado recalculado.
- As telas respondem entre 10 e 40 ms a partir de tabelas pré-calculadas. A tela equivalente no ERP levava cerca de 1,5 segundo.