Antes de falar da roteirização preciso dar um contexto de onde surgiu a necessidade dessa solução. Para as empresas garantirem que suas mercadorias estejam sendo posicionadas de forma correta nos pontos de vendas, se faz necessário fazer visitas periódicas(diárias, semanas, mensais) para validar essas informações nas lojas. Assim as empresas possuem gestores que controlam varias equipes de campo pelo pais que visitam todas essas lojas coletando dados sobre as mercadorias ou terceirizam para outras empresas. Em qualquer dos dois casos esses gestores levam semanas ou até meses para gerar um roteiro especifico par cada pessoa na equipe em todo pais. Em busca de resolver essa problemática foi iniciado o projeto de roteirização.
Esse projeto foi dividido em três partes. O front-end(React) era onde usuário final conseguia selecionar os pontos de venda(lojas) que queria visitar em um terminado range de tempo, horário, entre outras regras e ter um output desse roteiro com informações em relação a distância que seria necessário percorrer, custo médio em relação a transporte público, horas de trabalho e muito mais, além de consegui fazer alterações manuais nos roteiros criados a sua maneira. No Back-end(Ruby on rails) era onde possuía um dos algoritmos para gerar a saída final dos dados em relação a custo, distância, tempo, prioridade, além de armazena todas as informações em relação aos roteiros, cálculos, lojas, no banco de dados(Postgresql). O micro serviço(Python) era onde existia o algoritmo especifico para otimização de pontos, que recebia a geolocalização dos pontos e informava a melhor ordem a seguir.
Com essa solução o gestor conseguia ganhar uma velocidade tremenda na montagem das suas rotas, pois ele ja recebia o output com as rotas montadas ou caso ele quisesse gerar um roteiro especifico, ele poderia rodar a ferramenta para gerar um pré roteiro e depois fazer mudanças manuais de acordo com sua necessidade. A empresa não só economizava em tempo, mas também em custo, pois em vez de precisar de varias pessoas para dar suporte ao gestor na criação de rotas, seria necessário apenas uma pessoa utilizando a ferramenta e fazendo esse processo.