Autimit — Documento Funcional do Fluxo do Usuário

Versão: 1.0 Data: Maio de 2026 Escopo: MVP B2C — usuário final em estações públicas Autimit Modelo de início de sessão: App-initiated


1. Visão geral

A Autimit oferece carregamento de veículos elétricos em estações próprias e parceiras espalhadas em locais estratégicos. O usuário descobre estações pelo aplicativo móvel, opcionalmente reserva uma vaga, autoriza a sessão pelo app, conecta o cabo, carrega e tem o valor cobrado automaticamente no cartão cadastrado.

A primeira versão atende exclusivamente o usuário final pessoa física carregando em estações públicas. Modelos para condomínios, frotas corporativas e parceiros fabricantes serão incorporados em fases posteriores sem alterações estruturais no produto atual.


2. Atores do sistema

2.1 Usuário final

Pessoa física com veículo elétrico que utiliza o aplicativo Autimit para localizar, reservar e iniciar sessões de carregamento. Possui conta única vinculada a email, senha e método de pagamento.

2.2 Aplicativo móvel

Interface principal de interação do usuário com a plataforma. Disponível para iOS e Android. Conecta-se ao backend Autimit via API REST autenticada por JWT.

2.3 Estação de carregamento (Charge Point)

Equipamento físico instalado em locais públicos. Comunica-se com o backend Autimit por WebSocket usando o protocolo OCPP 1.6. Cada estação possui um ou mais conectores e tarifa configurada por kWh.

2.4 Backend Autimit (CSMS)

Sistema central que gerencia usuários, estações, reservas, sessões e pagamentos. Coordena todas as interações entre o aplicativo e as estações físicas.

2.5 Gateway de pagamento

Provedor externo responsável pelo processamento de cartões de crédito. Tokenização do cartão acontece no dispositivo do usuário; o backend nunca vê dados sensíveis do cartão.


3. Cadastro de usuário

3.1 Objetivo

Permitir que um novo usuário crie sua conta na plataforma e adicione um método de pagamento válido antes de poder utilizar qualquer estação.

3.2 Pré-condições

  • Usuário possui um endereço de email válido
  • Usuário possui um cartão de crédito ativo

3.3 Fluxo principal

Tela 1 — Conta O usuário informa email, nome completo e senha. O sistema valida que o email não está registrado e que a senha atende aos critérios mínimos de segurança. Após confirmação, o backend cria o registro do usuário e retorna um token de autenticação válido por 24 horas.

Tela 2 — Pagamento O usuário insere os dados do cartão de crédito. O SDK do gateway de pagamento, executando localmente no dispositivo, tokeniza os dados e retorna um token opaco. O aplicativo envia ao backend apenas o token, a bandeira, os últimos quatro dígitos e a data de validade. Em nenhum momento o backend Autimit vê o número completo do cartão.

Tela 3 — Pronto A conta está completa. O aplicativo direciona o usuário para a tela do mapa de estações.

3.4 Regras de negócio

  • Email é único na plataforma
  • Senha deve ter no mínimo 8 caracteres com letras, números e ao menos um caractere especial
  • Apenas um método de pagamento ativo por usuário no MVP
  • O método de pagamento pode ser substituído a qualquer momento
  • CPF é opcional no cadastro inicial; obrigatório apenas se o usuário solicitar emissão de NF-e

3.5 Pós-condições

  • Conta de usuário ativa no sistema
  • Método de pagamento ativo vinculado à conta
  • Token de autenticação JWT válido para uso nas próximas requisições

3.6 Fluxos alternativos

  • Email já cadastrado: o sistema retorna mensagem indicando que o email está em uso e oferece a opção de recuperação de senha
  • Cartão recusado pelo gateway: o aplicativo exibe a razão da recusa e mantém o usuário na tela de pagamento
  • Falha de conexão durante tokenização: o aplicativo permite nova tentativa sem perder os dados já preenchidos

4. Descoberta de estações

4.1 Objetivo

Permitir que o usuário visualize estações Autimit próximas à sua localização atual, com informação suficiente para escolher uma estação para usar.

4.2 Pré-condições

  • Usuário autenticado no aplicativo
  • Aplicativo possui permissão de localização concedida

4.3 Fluxo principal

O aplicativo solicita a localização atual do dispositivo e consulta o backend pelas estações dentro de um raio configurável. O backend retorna uma lista contendo, para cada estação:

  • Identificação e nome do local
  • Endereço e coordenadas geográficas
  • Status atual de cada conector (disponível, em uso, indisponível)
  • Tarifa por kWh
  • Tipo de conectores e potência máxima
  • Distância em relação à posição do usuário

O aplicativo exibe as estações em um mapa interativo. Ao tocar em uma estação, o usuário acessa a tela de detalhes com todas as informações.

4.4 Regras de negócio

  • Apenas estações ativas e marcadas como públicas aparecem no mapa
  • O status de cada estação é atualizado em tempo real conforme as estações reportam mudanças via OCPP
  • Estações com problema reportado pelo hardware aparecem como indisponíveis
  • O raio padrão de busca é de 10 km, configurável pelo usuário entre 1 e 50 km

4.5 Pós-condições

  • Usuário tem visibilidade das estações disponíveis para uso
  • Usuário pode tomar decisão informada sobre qual estação utilizar

5. Reserva de estação

5.1 Objetivo

Garantir ao usuário que uma estação específica estará disponível quando ele chegar, evitando que outro usuário ocupe o conector durante o deslocamento.

5.2 Pré-condições

  • Usuário autenticado e com método de pagamento ativo
  • Estação selecionada está disponível
  • Usuário não possui reserva ativa em outra estação

5.3 Fluxo principal

Na tela de detalhes da estação, o usuário toca em "Reservar". O aplicativo confirma a ação e envia a solicitação ao backend. O backend valida a disponibilidade, cria o registro de reserva com janela de validade padrão de 15 minutos e atualiza o status da estação para "reservada".

O aplicativo exibe um cronômetro regressivo mostrando o tempo restante para o usuário chegar à estação. Ao chegar e iniciar a sessão, a reserva é consumida automaticamente e o cronômetro desaparece.

5.4 Regras de negócio

  • Janela padrão de reserva: 15 minutos
  • O usuário pode ter no máximo uma reserva ativa por vez
  • Se a reserva expirar sem ser consumida, a estação volta automaticamente ao status disponível
  • Reservas expiradas no MVP não geram cobrança ao usuário; uma política de no-show pode ser introduzida em fase posterior
  • O usuário pode cancelar a reserva a qualquer momento antes de expirar
  • Apenas o próprio usuário que reservou pode iniciar sessão naquela estação durante a janela de reserva

5.5 Pós-condições

  • Estação fica reservada para o usuário até o início da sessão ou até o fim da janela
  • Outros usuários veem a estação como indisponível durante a reserva

5.6 Fluxos alternativos

  • Estação foi ocupada antes da confirmação da reserva: o backend retorna conflito e o aplicativo informa que a estação ficou indisponível, oferecendo alternativas próximas
  • Reserva expira durante o trajeto: o aplicativo notifica o usuário 5 minutos antes da expiração; se expirar, o usuário pode tentar nova reserva caso a estação ainda esteja livre

6. Início de sessão de carregamento

6.1 Objetivo

Autorizar o usuário a utilizar a estação e liberar o conector para receber o cabo do veículo.

6.2 Pré-condições

  • Usuário autenticado e com método de pagamento ativo
  • Estação selecionada está disponível ou reservada para este usuário
  • Estação está online e respondendo aos comandos OCPP

6.3 Fluxo principal

O usuário, presente fisicamente na estação, abre o aplicativo e seleciona a estação no mapa ou escaneia o QR Code afixado no equipamento. A tela de início de sessão exibe a tarifa por kWh e o método de pagamento que será cobrado. O usuário toca em "Iniciar carregamento".

O aplicativo envia a solicitação ao backend. O backend executa a seguinte sequência:

  1. Valida que o usuário tem método de pagamento ativo
  2. Verifica que a estação está disponível ou reservada para este usuário
  3. Gera um token de sessão único (idTag) válido por 5 minutos
  4. Persiste o token associado ao usuário e à estação
  5. Envia comando RemoteStartTransaction à estação via OCPP

A estação recebe o comando e destrava o conector. O aplicativo exibe a mensagem "Conecte o cabo ao veículo".

O usuário conecta o cabo. A estação detecta a conexão e envia ao backend:

  • Mudança de status do conector
  • Mensagem Authorize com o token de sessão
  • Mensagem StartTransaction confirmando o início real da sessão e o valor inicial do medidor

O backend marca o token como consumido, cria o registro da sessão de carregamento e retorna um identificador de transação. A partir deste momento, o aplicativo passa a exibir os dados da sessão em tempo real.

6.4 Regras de negócio

  • A tarifa exibida no momento do início é a que será aplicada na cobrança final
  • Tarifa pode variar entre estações; a cobrança usa sempre a tarifa da estação utilizada
  • O token de sessão tem validade de 5 minutos; se o usuário não conectar o cabo neste prazo, a estação volta a destravar e o token expira
  • Apenas uma sessão ativa por usuário por vez
  • O backend rejeita o início se a estação estiver indisponível, em manutenção ou ocupada por outro usuário
  • O snapshot da tarifa é gravado na sessão para garantir que mudanças posteriores na estação não afetem cobranças já em andamento

6.5 Pós-condições

  • Sessão de carregamento ativa
  • Energia fluindo do equipamento para o veículo
  • Aplicativo monitorando o progresso em tempo real

6.6 Fluxos alternativos

  • Cartão expirado descoberto no momento do início: o backend rejeita a solicitação e o aplicativo solicita atualização do método de pagamento
  • Estação não responde ao comando OCPP em 30 segundos: o aplicativo informa falha de comunicação e oferece nova tentativa
  • Cabo não é conectado em 5 minutos: a sessão é descartada, o token expira e a estação volta ao status disponível
  • Falha do hardware durante a conexão: a estação reporta o erro e o backend cancela o token; o usuário é informado e pode tentar outra estação

7. Carregamento em andamento

7.1 Objetivo

Manter o usuário informado sobre o progresso da sessão e permitir o monitoramento remoto.

7.2 Pré-condições

  • Sessão ativa em andamento
  • Estação enviando dados de medição periodicamente

7.3 Fluxo principal

A estação envia mensagens MeterValues ao backend a cada 30 segundos contendo:

  • Energia acumulada na sessão (Wh)
  • Potência atual (kW)
  • Tensão e corrente
  • Estado de carga da bateria do veículo (quando disponível)
  • Temperatura do conector

O backend persiste os dados em uma base otimizada para séries temporais. O aplicativo consulta esses dados periodicamente e atualiza a interface, exibindo:

  • Energia carregada até o momento
  • Potência instantânea
  • Custo acumulado calculado dinamicamente
  • Tempo decorrido desde o início
  • Estimativa de tempo restante (quando o estado de carga estiver disponível)

7.4 Regras de negócio

  • Frequência mínima de atualização: 30 segundos
  • O usuário pode fechar o aplicativo durante a sessão sem afetar o carregamento
  • O usuário recebe notificação push quando a bateria atinge 80%, 90% e 100% (quando o dado estiver disponível)
  • Sessão sem atualização de medidor por mais de 5 minutos é marcada como suspeita e gera alerta interno

7.5 Pós-condições

  • Histórico completo de medição armazenado para auditoria e análise

8. Encerramento de sessão

8.1 Objetivo

Finalizar a sessão de carregamento e calcular o valor final a ser cobrado.

8.2 Pré-condições

  • Sessão ativa em andamento

8.3 Fluxo principal

A sessão pode ser encerrada por três caminhos distintos.

Caminho 1 — Usuário desconecta o cabo do veículo A estação detecta a desconexão e envia StopTransaction ao backend com o valor final do medidor e o motivo "EVDisconnected". Esse é o caminho mais comum e natural.

Caminho 2 — Usuário toca em "Parar" no aplicativo O aplicativo envia ao backend uma solicitação de parada. O backend envia RemoteStopTransaction à estação. A estação interrompe a transferência de energia e envia StopTransaction com motivo "Remote".

Caminho 3 — Veículo atinge carga completa Alguns veículos sinalizam à estação que estão totalmente carregados. A estação encerra a sessão automaticamente e envia StopTransaction com motivo apropriado.

Em todos os caminhos, o backend executa a mesma sequência ao receber o StopTransaction:

  1. Atualiza o registro da sessão com o valor final do medidor
  2. Calcula a energia consumida (medidor final menos medidor inicial)
  3. Calcula o custo total (energia consumida multiplicada pela tarifa snapshot)
  4. Marca a sessão como concluída
  5. Dispara o processo de cobrança no método de pagamento do usuário
  6. Envia notificação push ao usuário com resumo da sessão

8.4 Regras de negócio

  • A energia cobrada é exatamente o registrado pelo medidor da estação, em kWh com três casas decimais
  • O custo total é calculado em reais com duas casas decimais, arredondado matematicamente
  • Sessões com energia consumida abaixo de 0,1 kWh não geram cobrança e são marcadas como inválidas
  • O motivo de parada é sempre registrado para análise operacional e suporte
  • A duração da sessão é calculada do StartTransaction ao StopTransaction, em segundos

8.5 Pós-condições

  • Sessão concluída
  • Cobrança disparada
  • Estação volta ao status disponível
  • Usuário recebe notificação com o resumo

9. Cobrança

9.1 Objetivo

Realizar a cobrança no cartão do usuário pelo valor da sessão concluída.

9.2 Pré-condições

  • Sessão concluída com valor calculado
  • Método de pagamento ativo do usuário

9.3 Fluxo principal

Imediatamente após o encerramento da sessão, o backend cria um registro de pagamento associado à sessão e ao método de pagamento, com status inicial "pendente". Em seguida, envia ao gateway uma solicitação de cobrança contendo o token do cartão e o valor.

O gateway processa e retorna um dos dois resultados.

Resultado 1 — Aprovado O backend marca o pagamento como capturado, registra o identificador da cobrança no gateway e armazena a resposta completa para auditoria. O usuário recebe notificação push e email com o recibo da sessão.

Resultado 2 — Recusado O backend marca o pagamento como falhado, registra o motivo da recusa e dispara o processo de tentativas. A política padrão é tentar novamente em 1 hora, 6 horas e 24 horas. O usuário recebe notificação informando que o pagamento falhou e solicitando atualização do método de pagamento.

9.4 Regras de negócio

  • A cobrança ocorre em até 5 minutos após o encerramento da sessão
  • Falhas de cobrança não impedem o usuário de iniciar novas sessões enquanto houver tentativas em andamento
  • Se todas as tentativas falharem em 24 horas, a conta do usuário é bloqueada para novas sessões até a regularização
  • O recibo enviado contém: data, estação, tarifa, energia, custo total, identificador da transação no gateway
  • A solicitação de NF-e, quando aplicável, é processada após a confirmação do pagamento e enviada por email
  • Estornos podem ser solicitados em até 7 dias e processados manualmente pela equipe de suporte na fase MVP

9.5 Pós-condições

  • Pagamento capturado ou em ciclo de tentativas
  • Receita registrada no sistema financeiro
  • Usuário com histórico atualizado

9.6 Fluxos alternativos

  • Gateway indisponível no momento da cobrança: o pagamento permanece pendente e é tentado novamente quando o gateway voltar
  • Cartão cancelado pelo banco entre o cadastro e a cobrança: o gateway retorna recusa específica e o usuário é orientado a cadastrar novo cartão
  • Sessão com cobrança em disputa: o status do pagamento muda para disputado e o suporte é acionado

10. Histórico de sessões

10.1 Objetivo

Permitir que o usuário consulte todas as suas sessões anteriores e baixe recibos.

10.2 Pré-condições

  • Usuário autenticado

10.3 Fluxo principal

Na seção "Histórico" do aplicativo, o usuário visualiza a lista paginada de todas as suas sessões em ordem decrescente de data. Cada item exibe data, estação, energia consumida e valor cobrado.

Ao tocar em uma sessão, o usuário acessa o detalhe completo: gráfico de potência ao longo do tempo, dados do medidor, status do pagamento e recibo em PDF para download.

10.4 Regras de negócio

  • Histórico mantido indefinidamente para o usuário
  • Recibos disponíveis a qualquer momento
  • Filtros disponíveis por intervalo de datas, estação e status do pagamento

11. Gestão da conta

11.1 Atualização de dados pessoais

O usuário pode atualizar nome, telefone e CPF a qualquer momento. Email é considerado identificador e exige fluxo separado de verificação para alteração.

11.2 Troca de senha

O usuário pode trocar a senha autenticando-se com a senha atual ou através do fluxo de recuperação por email.

11.3 Substituição do método de pagamento

O usuário pode adicionar novo cartão e definir como padrão. O cartão antigo é desativado mas mantido em histórico. Pagamentos em andamento continuam usando o método original.

11.4 Exclusão da conta

O usuário pode solicitar exclusão da conta. A exclusão é processada após confirmação por email. Sessões e pagamentos passados são preservados conforme exigências fiscais e contábeis, com dados pessoais anonimizados.


12. Estados e transições

12.1 Estados da estação

  • Available — disponível para uso
  • Preparing — comando recebido, aguardando conexão do cabo
  • Charging — sessão ativa em andamento
  • SuspendedEV — pausado pelo veículo (bateria cheia, etc.)
  • SuspendedEVSE — pausado pela estação
  • Finishing — desconexão em curso
  • Reserved — reservada por um usuário específico
  • Unavailable — indisponível para uso (manutenção)
  • Faulted — falha técnica reportada
  • Offline — sem comunicação com o backend

12.2 Estados da sessão

  • Pending — token gerado, aguardando StartTransaction
  • Active — sessão em andamento
  • Completed — sessão concluída com sucesso
  • Invalid — sessão descartada (energia abaixo do mínimo)
  • Faulted — sessão interrompida por falha

12.3 Estados da reserva

  • Active — reserva válida e dentro da janela
  • Consumed — reserva utilizada para iniciar sessão
  • Cancelled — cancelada pelo usuário
  • Expired — janela esgotada sem uso

12.4 Estados do pagamento

  • Pending — criado, aguardando processamento
  • Authorized — pré-autorização aprovada
  • Captured — valor capturado com sucesso
  • Failed — recusado pelo gateway
  • Refunded — estornado total ou parcialmente

13. Premissas e limitações do MVP

13.1 Escopo incluído

  • Cadastro e autenticação de usuário pessoa física
  • Cartão de crédito como único método de pagamento
  • Tarifa única por estação, definida administrativamente
  • Reserva com janela fixa de 15 minutos
  • Sessão iniciada exclusivamente pelo aplicativo
  • Cobrança automática ao final da sessão
  • Histórico individual de sessões e recibos

13.2 Escopo excluído (fases futuras)

  • Contas de condomínio com gestão por síndico
  • Contas de frota corporativa com múltiplos motoristas
  • White-label para fabricantes parceiros
  • Pagamento por PIX, débito ou outros meios
  • Tarifação por horário (peak/off-peak)
  • Tarifação por tempo conectado
  • Cartões RFID físicos vinculados à conta
  • Sessões simultâneas em estações diferentes
  • Plug and Charge ISO 15118
  • Roaming com outras redes via OCPI
  • Programas de fidelidade ou descontos

13.3 Decisões arquiteturais relevantes

  • Modelo de início de sessão: app-initiated com RemoteStartTransaction OCPP
  • Token de sessão efêmero com TTL de 5 minutos como mecanismo de autorização
  • Tokenização do cartão no dispositivo via SDK do gateway, sem PAN no backend
  • Snapshot da tarifa gravado na sessão para garantir consistência da cobrança
  • Estados síncronos atualizados via OCPP em tempo real
  • Cobrança assíncrona disparada após o StopTransaction

14. Indicadores de sucesso do MVP

14.1 Indicadores operacionais

  • Tempo médio do toque em "Iniciar" até o início efetivo do carregamento
  • Taxa de sucesso de sessões iniciadas vs. tentativas
  • Taxa de cobranças aprovadas na primeira tentativa
  • Tempo médio entre fim da sessão e cobrança capturada

14.2 Indicadores de produto

  • Sessões por usuário ativo por mês
  • Taxa de retenção 30 dias após primeira sessão
  • Tempo médio entre cadastro e primeira sessão
  • Avaliação média do aplicativo nas lojas

14.3 Indicadores de negócio

  • Receita por sessão
  • Receita por usuário ativo
  • Custo de aquisição por usuário ativado
  • Margem bruta por sessão (receita menos custo de energia menos taxa do gateway)

15. Próximos passos após MVP

A plataforma foi arquitetada para permitir a evolução incremental sem reescrita estrutural. Os próximos módulos previstos, em ordem de prioridade:

  1. Painel administrativo Autimit para gestão de estações, tarifas, usuários e visualização operacional
  2. Conta tipo condomínio permitindo síndicos gerenciarem moradores e cobrança coletiva
  3. Conta tipo frota permitindo empresas gerenciarem motoristas com cobrança consolidada
  4. Tarifação avançada com peak/off-peak e descontos contextuais
  5. White-label para fabricantes de carregadores
  6. Aplicativo motorista para frotas corporativas
  7. Roaming OCPI com outras redes nacionais e internacionais

Cada novo módulo será documentado em adendo funcional próprio.