Pular para o conteúdo principal

Transparência

Roadmap

Entrar
Moto Track

Roadmap

Este é o resumo público do estado do produto: o que já funciona, o que está em construção e os problemas que reconhecemos. Atualizado manualmente pela equipe.

Estado atual

Operacional
  • Garagem — cadastro de motos, odômetro, perfil de uso e templates de fábrica com especificações pré-preenchidas.
  • Abastecimento — registro de litros, preço, tipo de combustível, estatísticas de consumo e alertas de anomalia.
  • Manutenção — registro de revisões, trocas de óleo, planos de manutenção baseados em km ou data, e peças cadastradas.
  • Pneus — cadastro de dianteiro e traseiro, desgaste percentual, calibragem e estimativa de troca.
  • Documentos — anexos de CRLV, seguro, manual e notas fiscais com validade.
  • Lembretes e alertas — notificações por km, data ou intervalo; health score consolidado no painel.
  • Relatórios e linha do tempo — resumo de custos, tendência de consumo, distribuição de gastos e eventos históricos.
  • API v1 (leitura) — endpoints REST para abastecimentos, manutenções, pneus, lembretes, documentos e despesas via token.

Funcionalidades planejadas

Backlog
  • Fila offline com sincronização em background — usar o service worker para armazenar POSTs (abastecimento, manutenção, odômetro) em IndexedDB e sincronizar quando a conexão voltar.
  • API v1 (escrita) — endpoints POST e PUT/PATCH para criar e atualizar registros de abastecimento, manutenção, pneus e lembretes via token.
  • Geolocalização do posto — capturar lat/lng no registro de abastecimento e sugerir postos próximos do histórico do usuário.
  • OCR de cupom fiscal — extrair litros, valor total e nome do posto automaticamente a partir da foto do comprovante.
  • Visão multi-moto no painel — pagina de garagem com health score, odômetro e alertas de todas as motos ativas em um único quadro.
  • Fotos na manutenção — anexar imagens antes/depois a cada registro de manutenção.
  • Relatório de venda imprimivel/PDF — exportar consolidado de custos, manutenções, pneus e documentos em pagina pronta para impressão.
  • Alertas de anomalia no contexto — exibir badge de aviso diretamente na lista de abastecimentos quando consumo ou preço estiverem fora da faixa.
  • Importação em lote via CSV — importar abastecimentos de planilha com validação e preview antes do commit.

Melhorias planejadas

Refactoring
  • Hash de API keys — armazenar apenas o hash no banco e devolver a chave em texto puro apenas no momento da criação.
  • Criptografia de chaves push — criptografar `p256dh` e `auth` do VAPID no banco de dados.
  • Parsing DST-safe de datas — tratar `AmbiguousTimeError` e `NonExistentTimeError` no utilitario de undo.
  • Extrair HTML inline para templates — mover o HTML gerado em Python (`onboarding_template_preview_view`) para um template parcial.
  • Reduzir complexidade da view de onboarding — extrair a lógica de criação de `Motorcycle`, `FuelRecord`, `MaintenanceRecord` e `TireRecord` para um service dedicado.
  • Mover imports locais para o topo — eliminar late imports dentro de views quando não houver dependência circular real.
  • Separar testes monolíticos — dividir `test_core.py` (~740 linhas) em arquivos por domínio: views, onboarding, dashboard services, sitemap.
  • Usar reverse() em URLs de teste — substituir strings literais como `"/robots.txt"` e `"/sitemap.xml"` por `reverse("...")` para evitar quebras silenciosas.
  • Asserções mais fortes no sitemap — verificar que `sitemap.location()` retorna uma URL resolvida válida, não apenas truthy.

Correções planejadas

Pendente
  • Colisão de API keys — gerar com retry automatico em caso de `IntegrityError` na criação do token (collision astronômica, mas possivel).
  • Asserção fraca de sitemap — `test_sitemap_uses_existing_url_names` so verifica truthiness de `location()`; deve validar formato de URL.

Problemas conhecidos

Abertos
  • API keys em texto plano — o campo `key` de `ApiToken` armazena a chave inteira no banco. Em caso de vazamento de banco, todos os tokens são comprometidos.
  • Chaves push sem criptografia — `p256dh` e `auth` de `PushSubscription` estão armazenados em texto claro no banco.
  • HTML inline em Python — `onboarding_template_preview_view` monta um article inteiro via f-string, dificultando manutenção de markup e escapamento manual.

Adicionar à tela inicial

Acesse o Moto Track como um app nativo direto da sua tela inicial.