Ao entrar no time de dados e analisar o cenário atual, identifiquei diversos problemas que comprometem tanto a qualidade do modelo quanto a manutenção e escalabilidade do projeto.
O código está centralizado em um único notebook .ipynb, sem funções organizadas, com uso excessivo de variáveis globais e nenhum tipo de teste automatizado. Isso torna o código difícil de entender, testar e reaproveitar. Além disso, o processo de deploy é totalmente manual, feito por e-mail com arquivos ZIP, o que aumenta as chances de erro e dificulta o rastreio de alterações.
Outro ponto crítico é a ausência de versionamento dos dados e dos modelos. Como não há controle sobre as versões utilizadas, é impossível saber o que mudou ao longo do tempo ou o que causou a piora recente nos resultados.
Para melhorar esse projeto, alguns princípios de engenharia de software podem ser aplicados, como:
Separação de responsabilidades: dividir o código em funções, módulos e classes.
Controle de versão: utilizar Git para rastrear mudanças no código e nos modelos.
Testes automatizados: incluir testes unitários e de integração para validar o comportamento do código.
Automação de deploy: usar pipelines de CI/CD para evitar processos manuais e garantir reprodutibilidade.
Também sugeriria ferramentas e práticas como:
Refatoração do notebook para scripts Python organizados em pacotes.
Uso de pytest para testes.
Versionamento de modelos e dados com ferramentas como DVC ou MLflow.
GitHub Actions para automatizar testes, treinamento e deploy.
Armazenamento dos modelos em repositórios próprios (como S3 ou o próprio DVC) com versionamento.
Documentação clara do pipeline de ponta a ponta.
Essas mudanças ajudariam a tornar o projeto mais confiável, fácil de manter e escalável, além de trazer mais controle sobre a performance do modelo ao longo do tempo.