Somar todos os pontos do GPS conta quilômetro com a moto parada, e isso não serve para pagar comissão

[!NOTE] Resumo Executivo (DEV-2026-128): O km de cada monitor ia virar base de comissão, e o cálculo somava todos os pontos recebidos. A soma passou a descartar ruído, salto e falta de sinal, com os limites escritos e testados.


🚨 O Desafio Técnico / Contexto

A distância era a soma da fórmula de haversine entre pontos consecutivos. Parado, o GPS oscila alguns metros, e cada oscilação virava distância. O cálculo também usava só os pontos que cabiam no limite do mapa.


💡 Principais Lições Aprendidas & Descobertas

  • 💡 Meça a partir do último ponto aceito, e não do anterior. Um passo mínimo de 30 metros elimina a oscilação com a moto parada.
  • 💡 Ponto com precisão pior que 50 metros é descartado, e o ponto seguinte volta a medir do último bom.
  • 💡 Velocidade acima de 150 km/h entre dois pontos é erro de leitura. Mais de 15 minutos sem sinal também não soma, porque a linha reta não diz por onde a moto andou.
  • 💡 Número que vira dinheiro precisa de dia a dia para conferência. O total sozinho não permite contestar nem corrigir.
  • 💡 O filtro não cobre tudo: o celular pode parar de enviar com a tela bloqueada, o que tira km de quem trabalhou. Isso só se confere em ronda real, e ainda não foi testado.

🛠️ Especificação Técnica & Código-Chave

if ($km * 1000 < self::MIN_STEP_M) {        // parado: só atualiza o tempo
    $this->anchor['t'] = $timestamp;
    return 0.0;
}
if ($km / ($seconds / 3600) > self::MAX_SPEED_KMH) {
    return 0.0;                             // salto impossível
}

📈 Impacto no Ecossistema & Valor Prático

A rota do dia e o relatório mensal usam o mesmo cálculo, e a regra pode ser explicada a quem recebe por ele.

  • Projetos Relacionados: monitor-laravel
  • Registro de Origem: _data/daily.dev-20.yml

Publicado originalmente como parte do Diário de Desenvolvimento 2026 do ecossistema Artes do Sul & Araguaci.