O problema
Numa frota com vários veículos, cada um gera dado de manutenção o tempo todo: sulco de pneu, calibragem, alinhamento, óleo, lubrificação. Sem um sistema, isso vira uma de duas coisas — decisão na intuição de um mecânico experiente (que erra, esquece, ou não está lá no dia daquela decisão), ou uma planilha manual que ninguém olha até o pneu estourar na estrada. Nos dois casos, quem decide "qual veículo eu vejo primeiro hoje" está adivinhando, não sabendo.
Isso é um problema real que estruturei para uma empresa de transporte rodofluvial de passageiros com garagem em Barcarena-PA (Brasil). Sem nome da empresa, placa ou qualquer dado identificável — o que compartilho aqui é a lógica de decisão, generalizada.
Um adendo importante: meu dia a dia é low-code, não Python
Antes de entrar no código: a versão que roda em produção não é Python. É uma automação em Google Sheets + Apps Script — leitura de sulco dispara um desenho automático de resumo visual pro mecânico (onEdit), e o dashboard de priorização da frota inteira é 100% fórmula nativa (QUERY, sem script rodando por trás).
Isso não é modéstia nem desculpa — é a ferramenta certa pro contexto: numa operação de frota pequena/média, quem mantém isso no dia a dia é quem já usa planilha, não quem sabe rodar pip install. Baixo custo de manutenção, zero servidor, qualquer um da operação abre e entende.
O repositório e este artigo reescrevem essa mesma lógica de decisão em Python puro, testado e isolado — como exercício de portfólio, pra mostrar o raciocínio de forma que rode em qualquer lugar e sirva de referência técnica. É tradução, não é como o sistema roda na vida real.
A solução
O sistema faz duas coisas, em sequência:
1. Olha os 4 pontos de sulco de cada roda e já diz o que fazer: o pneu está gasto porque está desalinhado, ou porque a calibragem está errada? São ações diferentes (alinhar vs. calibrar), e o padrão de desgaste denuncia qual — isso é física de pneu, não é chute:
- Pneu desalinhado desgasta mais de UM lado → diferença grande entre as duas bordas (externa vs. interna)
- Pneu com pressão errada desgasta o centro OU as bordas de forma simétrica → murcho gasta mais as bordas, cheio demais gasta mais o centro
2. Cruza essa leitura com as outras categorias de manutenção de toda a frota — calibragem, sulco, alinhamento, óleo/filtros, lubrificação, nem todas pesam igual — e devolve um ranking: comece por aqui.
Modelagem: pesos e limiares
A parte que importa não é o código, é a decisão de negócio por trás dele.
Limiares do diagnóstico de roda (regra fixa, em milímetros de diferença de sulco):
DIFERENCA_ALINHAMENTO_MM = 3.0 # diferença entre bordas externa/interna
DIFERENCA_CALIBRAGEM_MM = 2.0 # diferença entre média do centro e média das bordas
Pesos por categoria (referência: material educativo de segurança de pneus tipo NHTSA TireWise sobre o impacto de calibragem/sulco na frenagem e estabilidade — não é arbitrário, mas também não é uma constante universal):
CATEGORY_WEIGHTS = {
"calibragem": 5, # degrada rápido, barata de checar, ignorar é caro
"sulco": 4,
"alinhamento": 3,
"oleo_filtros": 2,
"lubrificacao": 1, # tem mais folga de prazo
}
A lógica: calibragem errada não é tratada igual a lubrificação atrasada, porque na vida real elas não têm a mesma urgência nem o mesmo custo de ignorar. O score de cada veículo é a soma de peso × severidade de cada categoria (severidade de 0.0 a 1.0, saturando em 1.0 conforme os dias de atraso passam do prazo máximo daquela categoria).
Exemplo real de saída
Frota de 7 veículos, situação bagunçada — cada um com um problema diferente, ninguém sabe por onde começar:
$ python scripts/priority_report.py --input sample_data/frota_severidade.json --top 5
TOP 5 — veículos que precisam de atenção agora:
1. VEICULO-07 — score 15.0 (pior categoria: calibragem)
2. VEICULO-03 — score 6.4 (pior categoria: sulco)
3. VEICULO-01 — score 6.4 (pior categoria: calibragem)
4. VEICULO-05 — score 6.0 (pior categoria: calibragem)
5. VEICULO-02 — score 1.9 (pior categoria: sulco)
Uma lista de "todo mundo precisa de alguma coisa" virou uma ordem de prioridade com o motivo ao lado — sem ninguém abrir aba por aba da planilha.
Por que isso importa
- Menos pneu estourando na estrada — o problema é sinalizado antes de virar parada não planejada, não depois.
- A decisão para de depender de UMA pessoa — hoje, "qual veículo eu olho primeiro" muitas vezes só um mecânico experiente sabe responder de cabeça. Isso vira algo que qualquer pessoa da operação consegue rodar.
- Cada categoria pesa o que realmente pesa — porque na vida real elas não têm a mesma urgência.
Limitações honestas
Nenhum sistema de regra fixa é perfeito, e eu prefiro deixar isso explícito em vez de vender como mágica:
- O diagnóstico de roda confia na leitura de sulco como verdadeira — não valida se os 4 números fazem sentido físico (valor negativo, fora da faixa de um pneu novo/gasto). Garbage in, garbage out.
- Os limiares (3mm alinhamento, 2mm calibragem) são constantes fixas, não calibradas por modelo/marca de pneu ou por eixo (dianteiro e traseiro desgastam diferente) — funcionam como regra geral, não como valor validado estatisticamente pra cada operação.
- Só cobre 2 eixos de desgaste (borda-a-borda e centro-vs-bordas). Um padrão de desgaste diagonal (problema de rolamento/suspensão, por exemplo) cai em "desgaste irregular" sem indicar a causa real.
- O score de prioridade não considera custo, disponibilidade de peça/oficina ou criticidade da rota — é um score de severidade de inspeção, não uma otimização operacional completa.
- Categoria com nome digitado errado é ignorada em silêncio — um typo na severidade de entrada derruba a pontuação daquele veículo sem nenhum aviso. Isso é um risco real de qualquer sistema baseado em texto livre, incluindo o de planilha.
Stack
-
Em produção: Google Sheets + Apps Script (
onEdit,QUERY) - Neste repositório (tradução pra portfólio): Python (stdlib, sem dependência externa) + pytest, 14 testes cobrindo os 6 vereditos de roda e o motor de score
Repositório completo, com código e testes: fleet-maintenance-priority-engine
Sou engenheiro (Produção/Materiais) com MBA em Inteligência Artificial, estruturando automação de processos com IA e dados pra operações reais. Se você lida com frota, manutenção preventiva ou só curte ver regra de negócio de verdade virar código, comenta aí — troco ideia.
Top comments (0)