Funcionamento do Sistema e Chamadas - devbasetecnologia/devmobility GitHub Wiki
Funcionamento do Sistema
Primeiramente informamos que não é possível uma pessoa (prestador) se beneficiar do algoritmo do sistema para receber mais corridas que outras.
O sistema sempre tenta enviar a solicitação para o motorista mais próximo da origem (local do cliente), desde que esteja dentro do raio de atendimento E atenda a todas as informações da solicitação em questão (tipo de serviço, tipo de pagamento, etc.)
Em todo caso, para ajudar no entendimento, segue abaixo os motivos que fazem com que a solicitação não toque para determinado prestador.
- Fora do Raio de atendimento do serviço por região que o cliente escolheu.
- O prestador não tem marcado o tipo de serviço que o cliente selecionou no cadastro dele (prestador).
- Ou o tipo de pagamento que o passageiro escolheu não estava disponível no cadastro dele, ou até mesmo ele - (prestador) pode ter "desmarcado" por engano.
- Fora isso, pode ser que o GPS do prestador não estava ativo no momento, ou oscilando, ou até mesmo a INTERNET dele falhando (ou desligada) no momento.
- Além disso tem a Blacklist também, caso vcs utilizem, pode ser que o prestador (ou o passageiro) tenham se colocado na blacklist (um do outro).
- Prestador(a) estar com o "Filtro Feminino" Ativo, ou seja, ela ativou a opção na parte superior do aplicativo, "Apenas Mulheres", e dessa forma ela só receberá solicitações relacionadas ao serviço feminino, e não receberá dos serviços "tradicionais".
- Já o motivo de não receber corridas em dinheiro, pode ser por estarem com o Acerto em atraso, ou ultrapassaram o limite negativo que vocês definiram. Nesse caso ele terá uma mensagem na tela "em vermelho".
Esses são os motivos mais comuns.
O funcionamento de todo sistema, bem como comportamento do mesmo, é igual para TODOS os clientes DevBase.
O sistema parte do pressuposto que sempre irá tocar para o prestador mais próximo do passageiro, desde que atenda os requisitos mencionados acima.
É importante lembrar, que existe a funcionalidade de "Chamada Múltipla", onde pode ocorrer de tocar para mais de um prestador ao mesmo tempo, e assim possibilitando que a chamada seja atendida por um prestador que não seja exatamente o mais próximo, mas sim o mais rápido na hora de aceitar a solicitação que estiver em "disputa" com outros prestadores.
Clique aqui e veja a documentação sobre "Chamada Múltipla" para entender melhor sobre o funcionamento da função.
Além disso, também existe a função de "favoritar motoristas", onde também pode ocorrer essa situação, caso o cliente opte por chamar os prestadores por ele favoritados.
Clique aqui e veja a documentação sobre "Favoritar Motoristas".
Funcionamento das Chamadas
O sistema possui um serviço (WebJob) que roda em background que verifica as solicitações, os endereços e os prestadores disponíveis no raio, e que atendem aos requisitos das solicitações feitas pelos clientes. Este serviço é o responsável pela escolha dos prestadores que receberão as solicitações e pelo envio das mesmas. O aplicativo dos prestadores é responsável por receber essas solicitações, informar ao prestador através de um alarme sonoro e visual e também informar ao servidor do recebimento desta solicitação. A cada passo de comunicação ou falta de comunicação, o servidor (WebJob) em conjunto com as informações fornecidas pelo app do prestador e cliente podem alterar o status da solicitação e o status da chamada (uma solicitação pode gerar vários registros de chamada, pois pode ser enviada para um ou vários prestadores).
Para clarificar quais ações e quais status podem ser assumidos pelo sistema em conjunto com as decisões do prestador e cliente, abaixo segue uma lista de status possíveis e seus significados:
Status de Solicitações:
-
Pedido criado (Solicitação que acabou de ser criada e está aguardando que o sistema o envie para o prestador disponível, aprovado para o serviço solicitado, dentro do raio de atendimento configurado no serviço por região, mais próximo do endereço de origem da solicitação);
-
Aguardando Motorista (Solicitação já foi enviada para um ou vários prestadores, e o último a receber aceitou a solicitação e deve estar se locomovendo até o endereço de origem da solicitação);
-
Em Viagem (Prestador chegou ao local de origem da solicitação, o cliente entrou no veículo e o prestador iniciou a viagem);
-
Viagem Finalizada (Os 3 passos acima já foram executados e o prestador finaliza a solicitação);
-
Cancelado pelo Motorista (Ocorre caso o motorista cancele a solicitação depois de tê-la aceitado);
-
Cancelado pelo Cliente (Ocorre caso o cliente cancele a solicitação depois de um prestador tê-la aceitado);
-
Excedeu Tentativas
- Excedeu Raio de atendimento
-
Cancelado pelo Administrador (Quando um usuário com acesso ao painel admin cancela a solicitação);
-
Cancelado pelo Sistema (Trata-se de uma segurança no sistema. Ocorre quando uma solicitação é criada em "duplicidade" (mais comum em iOS). O sistema (webJob) verifica que houve a duplicidade e cancela a segunda. A cobrança também é cancelada.)
Status de Chamadas:
(Estes status são verificáveis através da tela de detalhe da solicitação, no quadro Histórico da Solicitação e no relatório de análise canceladas)
-
Solicitação enviada para o prestador (Ocorre quando a solicitação está no status "Pedido Criado" e o sistema já a enviou para um prestador);
-
Prestador recebeu solicitação (Ocorre quando o aplicativo do prestador recebe a solicitação. Ele envia a informação da data e hora em que foi recebida para o servidor automaticamente, para que o servidor aguarde o tempo de timeout e envie para outro prestador, caso este não aceite);
-
Prestador aceitou solicitação (Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu, informou o servidor sobre isso, alertou o prestador com o alarme sonoro e exibiu a tela com as informações necessárias para o prestador tomar a decisão de aceitar ou rejeitar, e o prestador pressionou o botão aceitar);
-
Prestador rejeitou solicitação (Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu, informou o servidor sobre isso, alertou o prestador com o alarme sonoro e exibiu a tela com as informações necessárias para o prestador tomar a decisão de aceitar ou rejeitar, e o prestador pressionou o botão recusar);
-
Timeout (Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu (ou não, ex.: falha internet após envio), informou o servidor sobre isso (ou não), e nenhuma ação foi tomada, ou seja, o prestador não aceitou nem recusou);
-
Prestador saiu da tela (Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu, informou o servidor sobre isso, e o prestador não aceitou nem recusou, mas saiu da tela de chamada sem executar qualquer ação);
-
Aceitou após cancelamento (Ocorre quando a solicitação foi enviada para o prestador, mas o aplicativo recebeu atrasado, por motivos de conexão ou lentidão. Nesse caso o cliente cancelou a solicitação, e só depois disso o prestador recebeu e tentou aceitar. Como a solicitação já foi cancelada pelo cliente, o prestador receberá a mensagem de que a solicitação já foi cancelada ao pressionar o aceitar);
-
Aceitou após timeout (Ocorre quando a solicitação foi enviada para o prestador, mas o aplicativo recebeu atrasado, por motivos de conexão ou lentidão. Nesse caso o servidor já enviou para outro motorista ou alterou o status da solicitação para Excedeu Raio de Atendimento ou Excedeu Tentativas, e só depois disso o prestador recebeu e tentou aceitar. Como a solicitação já não está mais disponível para este prestador, o prestador receberá a mensagem de que a solicitação já foi cancelada ao pressionar o aceitar);
Mensagens apresentadas no app:
- Solicitação já foi aceita por outro Motorista
Ocorre quando a solicitação foi enviada para o prestador, o aplicativo recebeu, informou o servidor sobre isso, alertou o prestador com o alarme sonoro e exibiu a tela com as informações necessárias para o prestador tomar a decisão de aceitar ou rejeitar, e após isso ocorrer uma lentidão ou oscilação na internet, "atrasando" o envio das informações para o sistema.
Isso faz com que a contagem de aceite ainda conste no app, mas no sistema essa contagem já acabou, e por isso o sistema enviou a solicitação para outro motorista, e ele já aceitou.
Essa situação é mais comum quando o motorista demora muito para aceitar a solicitação, por exemplo, tenta aceitar nos ultimos segundos.
Ocorre também quando a plataforma estiver utilizando a "Chamada Múltipla", em que o sistema envia as solicitações para "mais de um prestador", caso o prestador tente atender uma solicitação que já foi aceita por outro.
.