intermediate
pontuacao-ciclista
safe-ride-check
teste-reacao

Safe Ride Check (Tempo de Reacao)

Como funciona o teste noturno de tempo de reacao - janela configuravel, criterios, cooldown e o enquadramento de privacidade.

Levy Fleets TeamMay 18, 20267 min read

Safe Ride Check (Tempo de Reacao)

O Safe Ride Check e um teste curto de tempo de reacao que o ciclista faz antes do desbloqueio durante uma janela noturna configuravel. E projetado para encorajar decisoes seguras - nao e um teste de sobriedade ou DUI.

Enquadramento de privacidade - importante

Este e um "Safe Ride Check", nao um teste medico ou legal de incapacitacao. O texto in-app e:

"Este nao e um teste medico ou legal de incapacitacao. Nos o usamos para encorajar decisoes seguras. Se voce nao se sente seguro para pilotar, por favor escolha outro modo de transporte."

Nunca compartilhamos resultados com autoridades exceto por mandado.

O que o ciclista faz

  1. Tentativa de desbloqueio noturno (janela padrao: 22:00 a 04:00 local).
  2. A app lanca um mini-jogo de 5 rodadas de toque-no-ponto.
  3. Cada rodada registra um tempo de reacao em milissegundos, ou "miss" se o ciclista nao tocar dentro de 3 segundos.
  4. Apos 5 rodadas a app calcula a mediana e a contagem de misses.
  5. Passa: mediana < 450ms, menos de 2 misses.
  6. Falha: cooldown de desbloqueio de 30 minutos mais "Voce esta seguro para pilotar?" com CTA "Ligar para amigo".

Limites de passagem

ConfiguracaoPadraoO que faz
reaction_median_threshold_ms450Mediana maxima
reaction_max_misses1Misses maximos
reaction_test_round_count5Numero de rodadas
reaction_test_timeout_ms3000Timeout por rodada

Todos editaveis em Configuracoes > Safe Ride Check.

Janela de gatilho

ConfiguracaoPadraoO que faz
reaction_window_start_local22:00Inicio
reaction_window_end_local04:00Fim (atravessa meia-noite)
reaction_window_enabledtrueDesativa se falso

O envolvimento de meia-noite e tratado em isWithinNightWindow() em src/lib/rider-score/reaction-test.ts e tem testes unitarios.

O que acontece em falha

Uma falha unica:

  • Cooldown de 30 minutos.
  • UI mostra tempo restante e "Tentar novamente".
  • Sem penalidade na pontuacao.
  • Sem entrada score_audit_log.

Tres falhas em 24 horas abrem um bloqueio temporario passo 6.

O que acontece em passagem

  • Ciclista desbloqueia normalmente.
  • Linha reaction_tests com passed=true.
  • Sem efeito em pontuacao ou preco.

Logica de cooldown

O kernel evaluateAttempts() tem testes unitarios.

reaction_tests row:
  median_reaction_ms  - mediana de todas as rodadas
  miss_count          - misses (timeout &gt;= 3s)
  passed              - bool dos criterios
  trigger             - 'nighttime' | 'appeal' | 'random'
  cooldown_until      - agora + 30 min em falha

Ciclista com cooldown_until no futuro e bloqueado pelo portao (reason='reaction_cooldown').

Quando o teste dispara

  • Gatilho noturno (padrao): cada tentativa na janela noturna.
  • Gatilho de recurso (opcional): operador pode requerer Safe Ride Check antes de aprovar recurso de passo 6.
  • Gatilho aleatorio (opcional): subset aleatorio de desbloqueios. Padrao 0%.

Privacidade e o que nao fazemos

  • Nao logamos com quem o ciclista estava falando.
  • Nao gravamos tela, camera ou microfone.
  • Nao compartilhamos resultados com seguradoras de forma identificavel.
  • Nao compartilhamos com autoridades exceto por mandado.

Controles do operador

  • Configuracoes > Safe Ride Check para configurar.
  • Trilha de Auditoria filtrada por action='reaction_test_fail_lockout'.
  • Perfil do ciclista > Testes de reacao mostra ultimos 30 dias.

Nota ADA e acessibilidade

Testes podem desvantajar ciclistas com certas deficiencias. Se um ciclista auto-divulga uma restricao, o operador deve configurar uma isencao em nivel de conta em Perfil > Isencoes.

Superficie de API

EndpointProposito
POST /api/mobile/rider/reaction-testSubmeter tentativas
GET /api/mobile/rider/reaction-testE necessario agora?

Proximo

Veja Escada de Intervencao para como 3 falhas em 24h se tornam um bloqueio passo 6.