Documentação Completa do Sistema

Minerita Trip Control | Atualizado em 06/03/2026

1) Visão Geral

O sistema possui 3 partes integradas:

App Android: operacao de viagens, QR scan, presenca, chamadas.
Web: cadastro, relatórios, faturamento, dashboard e usuários online.
Funções: automação de chamadas, push e suporte a WhatsApp.

2) Instalação Rápida

  1. Configurar Android Studio + JDK 17.
  2. Configurar Firebase (google-services.json).
  3. Compilar com:
.\gradlew.bat clean assembleDebug

APK gerado em app/build/outputs/apk/debug/app-debug.apk.

3) Passo a Passo das Funções

Operador

  1. Entrar com perfil OPERATOR.
  2. Selecionar tipo de viagem.
  3. Conferir prefixo ativo.
  4. Escanear QR e registrar viagem.

Motorista

  1. Entrar com perfil DRIVER.
  2. Atualizar presença/disponibilidade.
  3. Aceitar ou recusar chamadas recebidas.

Admin

  1. Entrar com perfil ADMIN.
  2. Gerenciar prefixos, cadastros, viagens e chamadas.
  3. Acompanhar dashboards e logs operacionais.

4) Geração e Instalação de APK

Depuração

.\gradlew.bat assembleDebug

Lançamento

.\gradlew.bat assembleRelease

Instalar no telefone por ADB

adb devices
adb install -r app\build\outputs\apk\debug\app-debug.apk

Aba de Backend / Banco de Dados Firebase

Esta aba detalha tudo que o sistema precisa no Firebase: plano, serviços, estrutura das coleções, índices, regras, custos e lista de verificação de produção.

Recomendado para produção: Blaze Firestore + Functions + FCM
Para empresa em produção, use o plano Blaze.
Você só paga quando ultrapassar a cota gratuita, e paga somente pelo que usar.

1) Qual plano deve estar ativo

Plano Quando usar Situacao para este projeto
Spark (gratuito) Estudo, prototipo e testes pequenos Uso temporario apenas
Blaze (pague conforme o uso) Operação real com funções na nuvem e escala variável Plano recomendado/necessário em produção

Para este sistema completo (chamadas, push, automações e integracao externa), manter projeto com billing ativo no plano Blaze.

2) Servicos Firebase usados

  • Firebase Authentication (autenticação)
  • Cloud Firestore (banco em nuvem)
  • Cloud Functions (funções na nuvem)
  • Firebase Cloud Messaging (FCM - mensagens em nuvem)
  • Firebase Hosting (hospedagem opcional para paineis web)
  • Firebase Storage (quando aplicavel)

3) Estrutura de banco (coleções)

Coleção Finalidade Campos principais
users Usuários e perfis email, name, role, truckPlate, barcode, driverStatus, isSuplente, suplenteGroup, fcmToken, isActive
trucks Cadastro de caminhões plate, barcode, driverName, company, isActive, totalTrips
trips Viagens registradas truckId, truckPlate, tripType, prefix, dateTime, operatorName, isDuplicate
prefixes Prefixos ativos/histórico prefix, prefixBase, client, isActive, createdAt, transferValue
calls Chamadas por grupo group, status, startTime, confirmed, rejected, maxConfirmations
fcm_tokens Tokens de dispositivos token e metadados de dispositivo/usuário
notifications, onlineUsers, accessLogs, qr_code_error_logs, app_updates Suporte operacional, auditoria e atualização remota Campos variam por modulo

4) Índices compostos recomendados

  • trips: truckPlate (ASC) + dateTime (DESC)
  • trips: truckId (ASC) + dateTime (DESC)
  • trips: tripType (ASC) + dateTime (DESC)
  • prefixes: isActive (ASC) + createdAt (DESC)
  • qr_code_error_logs: errorType (ASC) + timestamp (DESC)
  • qr_code_error_logs: operatorEmail (ASC) + timestamp (DESC)

Sem esses índices, consultas com where + orderBy podem falhar em produção.

5) Regras de seguranca Firestore

O arquivo atual de regras esta permissivo para desenvolvimento (allow read, write: if true), o que não e seguro para produção.

Recomendacao de endurecimento

  1. Exigir autenticação (request.auth != null).
  2. Restringir escrita por papel (admin/operator/driver).
  3. Liberar calls apenas para admin.
  4. Liberar trips para operator/admin.
  5. Validar campos e tipos no write.

6) Funções na nuvem e variáveis de ambiente

Funções principais em functions/index.js:

  • sendCallNotification
  • notifySuplentes

Variáveis opcionais para WhatsApp/Twilio:

  • twilio.account_sid
  • twilio.auth_token
  • twilio.whatsapp_number
firebase functions:config:set twilio.account_sid="..." twilio.auth_token="..." twilio.whatsapp_number="+14155238886"
firebase deploy --only functions

Se Twilio não estiver configurado, o sistema usa alternativa por link wa.me.

7) Custos, monitoramento e produção

  • Ativar orcamento e alertas no Google Cloud Billing.
  • Monitorar leituras/escritas no Firestore.
  • Acompanhar logs de erro das funcoes.
  • Revisar consultas para reduzir custo por leitura.

Lista de verificação final

  • [ ] Blaze ativo com billing
  • [ ] Regras seguras publicadas
  • [ ] Índices compostos criados
  • [ ] Funções implantadas sem erro
  • [ ] Fluxo de chamada validado (aceite/recusa/suplente)

Segurança e robustez do servidor da aplicação

Esta aba descreve apenas o ambiente onde sua página esta hospedada: https://lvatech.com/. O foco aqui e mostrar o que ja esta ativo no servidor e o que reforca a seguranca da página em produção.

1) Sistema hospedado em produção

Item Status identificado Impacto
Dominio principal https://lvatech.com/ Ponto oficial de acesso ao sistema web.
Plataforma de hospedagem platform: hostinger / panel: hpanel Indica gerenciamento da aplicação em ambiente Hostinger.
Servidor web Server: LiteSpeed Entrega de páginas com bom desempenho e suporte moderno de protocolo.

2) Protocolos e recursos de seguranca ativos na página

Protocolo / recurso Objetivo técnico Status no domínio
HTTPS (TLS 1.2+) Criptografia de ponta a ponta entre navegador e servidor. Ativo em https://lvatech.com/.
HTTP/3 (alt-svc h3) Comunicao mais eficiente e resiliente em rede instavel. alt-svc anunciando h3 na porta 443.
Content-Security-Policy Diretriz de seguranca para carregamento de conteúdo. Ativo com upgrade-insecure-requests.
Redirecionamento para HTTPS Evita permanencia do usuário em versão insegura por HTTP. Requisicao iniciada em HTTP chega no domínio HTTPS.
ETag e Last-Modified Controle de cache com validação de recurso. Ativos; ajudam estabilidade de entrega e reduzem carga.

Observacao: os dados acima foram levantados diretamente das respostas HTTP do domínio em 06/03/2026.

3) Beneficios de seguranca e robustez para a sua página

Camada de protecao Beneficio direto Resultado pratico
Canal seguro por TLS Protege dados em trânsito entre usuário e servidor. Maior confiabilidade para login, sessão e navegação.
Politica CSP ativa Forca conteúdo seguro e reduz carregamento inseguro. Página mais consistente e com melhor postura de seguranca.
Suporte a HTTP/3 Melhora performance em redes móveis e conexões variáveis. Experiencia mais estavel para usuários em campo.
Redirecionamento para HTTPS Padroniza acesso seguro ao domínio oficial. Reduz erros de acesso e fortalece a confianca do usuário.
Cache inteligente de recursos Acelera carregamento e reduz consumo de banda. Maior disponibilidade e menor custo operacional de entrega.

4) Resultado geral para o sistema hospedado

  • Comunicacao protegida para os usuários que acessam o sistema.
  • Entrega web moderna, com melhor desempenho e estabilidade.
  • Maior consistência no carregamento de recursos da página.
  • Base sólida para operação contínua e crescimento do projeto.
  • Experiencia de acesso mais confiavel para equipe e clientes.

Migração para outro servidor

Esta aba resume o que precisa para migrar o sistema web para outro ambiente de hospedagem, incluindo servidor próprio de empresa.

1) Itens obrigatórios para migrar

Item O que preparar Observacao
Codigo web Arquivos HTML, CSS, JS e imagens atuais do projeto. Garantir mesma estrutura de pastas da versão em produção.
Dominio e DNS Apontamento de A, AAAA e/ou CNAME. Planejar janela de troca para reduzir indisponibilidade.
Certificado SSL Certificado valido para HTTPS (ex.: Let's Encrypt). Ativar renovacao automatica do certificado.
Servidor HTTP Nginx, Apache ou LiteSpeed configurado para site estático. Habilitar compressão e cache para melhor desempenho.
Integrações Firebase Manter credenciais e endpoints do Firebase no frontend. google-services.json e chaves devem permanecer validas.

2) Passo a passo de migracao

  1. Gerar backup completo da hospedagem atual.
  2. Subir o conteúdo do site no novo servidor.
  3. Configurar virtual host e HTTPS no novo ambiente.
  4. Aplicar cabeçalhos de seguranca e regras de cache.
  5. Validar login, dashboards, leituras e integrações Firebase.
  6. Trocar DNS do domínio para o novo IP.
  7. Monitorar erros e desempenho nas primeiras 24 a 72 horas.

3) Exemplo: migrar para servidor próprio da empresa

Camada Requisito mínimo Boas práticas
Infraestrutura VM ou servidor Linux com acesso público controlado. Separar ambientes: homologação e produção.
Rede Firewall liberando apenas portas 80/443. Whitelist de administração via VPN ou IP fixo.
Aplicação web Deploy automatizado via Git ou pipeline CI/CD. Versionamento e rollback rápido em caso de incidente.
Segurança TLS ativo, logs centralizados e monitoramento. Rotina de patch do sistema operacional e servidor web.
Operação Backup diario do conteúdo e configurações. Teste periódico de restauracao e plano de continuidade.

4) Checklist final de aprovação da migracao

  • [ ] Dominio respondendo no novo servidor com HTTPS valido.
  • [ ] Login e navegação das abas funcionando sem erro.
  • [ ] Integracao com Firebase funcionando em produção.
  • [ ] Tempo de carregamento dentro do esperado.
  • [ ] Backups e monitoramento ativos.
  • [ ] Procedimento de rollback documentado e testado.

Guia de Telas do Sistema

Aqui voce encontra todas as telas, para que servem, quem usa e como funciona cada uma.

1) Telas Web

Tela Quem usa Como funciona
index.html Todos os perfis Entrada principal, autenticação e acesso aos módulos.
menu.html Admin/Operador Menu central para navegar entre cadastro, relatórios e dashboards.
operador.html Operador Seleciona tipo de viagem, carrega prefixo ativo, escaneia QR e registra viagem.
cadastro.html Admin Cadastro de motorista/caminhão com dados operacionais.
cadastroinicial.html Admin Cria e ativa prefixo inicial do período.
gerenciar_motoristas.html Admin Edita motoristas, corrige cadastro e mantem base atualizada.
prefixo.html Admin/Faturamento Relatório por prefixo e caminhão com filtros e análise.
contabil.html Admin/Faturamento Painel financeiro e consolidacao por tipo de viagem e prefixo.
dashboard_trucks.html Admin Gráficos de desempenho por caminhão e prefixo.
online.html Admin Monitoramento de usuários online em tempo real e contexto da sessão.
presenca.html Admin/Motorista Controle de presença/disponibilidade e fluxo de chamadas.

2) Telas do App Android (rotas)

Tela Rota Como funciona
LoginScreen login Autenticação e redirecionamento por perfil.
RegisterScreen register Cadastro de usuário e definição de papel.
AdminDashboardScreen admin_dashboard Painel central de administração e acesso a módulos.
DriverDashboardScreen driver_dashboard Painel do motorista com acesso a presença e status.
OperatorDashboardScreen operator_dashboard Controle de leitura, prefixo e progresso de viagens.
QRScannerScreen qr_scanner Leitura de QR e registro da viagem.
PrefixScreen prefix_screen Gerenciamento de prefixos do período.
DriverRegisterScreen driver_register_screen Cadastro de motorista no app.
TrucksListScreen trucks_list_screen Lista de caminhões e motoristas ativos.
TrucksWithTripsScreen trucks_with_trips_screen Cruza caminhões com viagens registradas.
ReadingHistoryScreen reading_history_screen Histórico de leituras para conferência e auditoria.
TripsByDriverScreen trips_by_driver_screen Análise de viagens por motorista.
AllTripsScreen all_trips_screen Visão completa de todas as viagens (admin).
DriverPresenceScreen driver_presence_screen Gestão de presença e resposta de chamadas.
CallTrucksScreen call_trucks_screen Criação e acompanhamento de chamadas por grupo.

3) Fluxo resumido de uso

  1. Usuário entra no sistema e autentica (web ou app).
  2. Sistema identifica perfil e libera telas permitidas.
  3. Operador registra viagens por QR com prefixo ativo.
  4. Admin acompanha indicadores, relatórios e chamadas.
  5. Motorista atualiza presença e responde chamadas recebidas.

4) Prints de tela

Prints reais do projeto com as três telas principais: Login, Admin e Operador.

5) Informações sobre as funcoes

Tela do Operador (visão do print enviado)

Bloco da tela Funcao operacional
Cabecalho (Descargas) Mostra operador logado, prefixo atual e atalhos rápidos de operacao.
Card de progresso Exibe viagens realizadas no prefixo, total esperado e calculo de vagões preenchidos.
Linha de identificacao Mostra operador, prefixo e cliente para conferência antes da leitura.
Última atualização Indica o horário mais recente de sincronizacao dos dados na tela.
Card da viagem Apresenta status, motorista, data/hora, modalidade, placa, prefixo, vagões e usuário que registrou.
Botoes flutuantes Permitem alternar modo de viagem e iniciar leitura QR com rapidez.

Funções da Tela de Login

Funcao O que faz
Autenticação de usuário Valida e-mail e senha no Firebase Authentication.
Validacao de campos Habilita tentativa de acesso somente com dados obrigatórios preenchidos (e-mail e senha).
Controle de acesso por perfil Direciona para a tela correta de acordo com o papel do usuário (Admin, Operador ou Motorista).
Acesso ao cadastro Disponibiliza o caminho "Nao tem uma conta? Cadastre-se aqui" para criar novo usuário.
Mensagens de erro Exibe feedback quando login falha (credenciais invalidas ou sem permissão).

Funções da Tela do Admin

Funcao O que faz
Painel central de operacao Exibe resumo operacional com última atualização, prefixo ativo e volume de viagens por período.
Gestao de prefixos Permite visualizar e atualizar prefixo ativo, cliente e dados de período.
Navegacao para módulos Acessa cadastro, relatórios, lista de caminhões, chamadas e auditoria.
Controle de sessão Permite atualizar dados em tempo real e encerrar sessão com seguranca.

Funções principais da tela web do Operador (operador.html)

Funcao O que faz
showLogin() / showDashboard() Controla exibicao entre tela de login e painel do operador.
selectTripType(type) Seleciona tipo de viagem (carregamento, transferência, complemento).
updatePrefixDisplay() Atualiza prefixo visivel conforme tipo de viagem e disponibilidade de prefixo TRA.
loadPrefixes() Carrega prefixo ativo de carregamento em tempo real no Firestore.
loadTransferPrefix() Carrega prefixo de transferência (TRA) em tempo real.
loadTrips() Escuta e carrega viagens recentes para lista e estatisticas.
renderTrips(trips) Renderiza lista de viagens na interface do operador.
updateStats(trips) Calcula total do dia, últimas 24h e total geral (ignorando duplicatas).
Card de progresso de viagens Exibe progresso no formato realizadas / limite e calcula vagões preenchidos automaticamente.
openScanner() / closeScanner() Abre/fecha scanner QR com biblioteca html5-qrcode.
handleQRCodeScanned(qrCodeText) Processa leitura, valida duplicata, define prefixo correto e grava viagem no Firestore.

Funções principais de backend (functions/index.js)

Funcao O que faz
sendCallNotification Ao criar chamada em calls, envia notificações push para motoristas disponíveis.
notifySuplentes Quando necessário, aciona suplentes com base em recusas/indisponibilidade.
sendWhatsAppMessage Envia WhatsApp via Twilio ou gera link wa.me como alternativa.
extractTruckNumber / getTruckGroup Identifica numero e grupo do caminhao para regras de chamada.

I.T Instrução de Trabalho para Operadores

Esta aba foi criada para orientar operadores no uso correto do app em rotina normal e em situação de falha. O objetivo é padronizar ação rápida no local, reduzir tempo parado e manter registro das ocorrências.

Uso diário no campo Resposta rápida a falhas Operação offline-first
O app funciona em modo offline: é possível registrar viagens sem internet. Quando a conexão retornar, os dados são sincronizados automaticamente.

1) Procedimento padrão de uso do app

  1. Confirmar bateria acima de 30% e GPS/rede disponíveis quando possível.
  2. Abrir o app e entrar com usuário e senha corretos.
  3. Verificar se o perfil exibido está correto (Operador).
  4. Conferir tipo de viagem e prefixo antes de iniciar leitura QR.
  5. Escanear QR e validar dados da viagem na tela antes de confirmar.
  6. Conferir se a viagem apareceu no histórico local após o registro.
Regra de ouro: nunca repetir leitura no impulso. Sempre conferir no histórico para evitar duplicata.

2) Processo em caso de falhas do sistema

Sintoma Ação imediata do operador Validação antes de escalar
Erro ao fazer login Confirmar e-mail/senha, checar internet e tentar novamente. Testar login em outro aparelho autorizado.
QR não lê ou leitura falha Limpar câmera, ajustar iluminação e distância, tentar de novo. Verificar se outro QR é lido no mesmo aparelho.
Viagem não aparece no histórico Atualizar tela e aguardar sincronização por até 60 segundos. Conferir conexão e consultar painel web/admin.
Tela congelada ou app sem resposta Fechar app, abrir novamente e repetir operação com calma. Confirmar se houve registro parcial da viagem.
Sem conexão com rede Continuar operação normalmente e registrar as viagens no app. Quando a rede voltar, confirmar sincronização no histórico/painel.

3) Como resolver falhas no app (passo a passo técnico local)

  1. Registrar horário da falha e qual operação estava em andamento.
  2. Fechar totalmente o app (remover da lista de recentes).
  3. Abrir o app novamente e repetir a operação uma única vez.
  4. Se persistir, limpar cache do app em Configurações do Android.
  5. Reiniciar o aparelho e testar novamente.
  6. Confirmar se existe atualização mais recente do app instalada.
  7. Se não resolver, abrir chamado com print e descrição objetiva.
Checklist rápido do chamado:
- Nome do operador
- Aparelho (marca/modelo)
- Horário exato da falha
- Tela/função com problema
- Print ou vídeo curto do erro
- Situação da internet no momento

4) Procedimento quando o app travar

  1. Não clicar repetidamente na tela para evitar ações duplicadas.
  2. Fechar o app e reabrir após 10 segundos.
  3. Conferir no histórico se a última operação foi salva.
  4. Se travar novamente, reiniciar o celular.
  5. Persistindo o travamento, trocar para aparelho reserva quando disponível.
  6. Informar equipe técnica para análise de logs e versão do app.

Importante: em caso de dúvida sobre duplicidade, validar sempre com o painel administrativo antes de repetir leitura QR.

5) Procedimento quando o app não conectar à rede

  1. Manter a operação no app: os registros são salvos localmente (offline).
  2. Evitar reinstalar ou limpar dados durante período sem rede.
  3. Quando houver sinal, abrir o app e aguardar sincronização automática.
  4. Atualizar a tela e confirmar envio das viagens no histórico.
  5. Conferir no painel web/admin se os dados chegaram ao Firebase.
  6. Se algo não sincronizar, registrar evidências e acionar suporte.

Sem internet, o foco é manter produção e preservar dados locais. A ação principal é garantir sincronização assim que a rede retornar.

6) Fluxo de reparo no local (resumo operacional)

Passo 1: identificar sintoma (login, leitura, travamento, rede).
Passo 2: aplicar tentativa rápida (fechar e abrir, reconectar rede).
Passo 3: validar histórico para evitar duplicata.
Passo 4: reiniciar aparelho e testar novamente.
Passo 5: escalar com evidência (print, horário, aparelho, operador).
Passo 6: registrar solução aplicada para consulta futura da equipe.

7) Instrução técnica para desenvolvedor em caso de falhas

Este procedimento deve ser executado pela equipe de desenvolvimento quando houver falha recorrente, perda de sincronização, travamento crítico ou divergência entre app e painel.

Etapa técnica Ação do desenvolvedor Resultado esperado
Triagem inicial Conferir chamado com horário, usuário, aparelho, versão do app e evidências. Falha reproduzível e contexto fechado.
Validação de ambiente Checar status do Firebase (Auth, Firestore, Functions) e conectividade da região. Descartar indisponibilidade externa.
Análise de logs Revisar logs do app, Crashlytics/logcat e funções em nuvem no período do incidente. Identificação da causa raiz.
Fluxo offline/sync Validar fila local, regra de deduplicação e reconciliação na volta da rede. Garantia de consistência sem perda/duplicidade.
Correção Aplicar hotfix, adicionar tratamento de erro e mensagem clara para operador. Falha controlada e melhor UX em campo.
Validação final Testar cenário online, offline e reconexão; publicar versão e atualizar esta I.T. Correção estável documentada.

Checklist mínimo do desenvolvedor

  • [ ] Reproduziu a falha em ambiente de teste.
  • [ ] Confirmou comportamento offline-first sem perda de registro.
  • [ ] Validou sincronização após reconexão de rede.
  • [ ] Revisou possíveis duplicatas e consistência de dados.
  • [ ] Publicou correção com versão e changelog.
  • [ ] Informou equipe de operação sobre procedimento atualizado.