Distribuição sequencial ChatFlow
Atualizado
Isto foi útil?
A Distribuição Sequencial (identificada como Método "S") é um sistema que distribui tickets em uma fila rotativa entre os usuários que estão online.
O objetivo é garantir que cada usuário receba tickets de forma sequencial e equilibrada, evitando a concentração de atendimentos em um único atendente.
O sistema segue um fluxo de 5 etapas para determinar quem receberá o próximo ticket:
O sistema identifica quem está disponível para receber o ticket:
Se queueId for fornecido: Busca usuários online associados àquela fila específica.
Se não encontrar (ou não houver fila): Busca todos os usuários online do tenant.
Exclusão: Em ambos os casos, usuários com perfil de Admins ou Superadmins são excluídos da distribuição.
Ordenação: A lista final é ordenada por ID (ASC) para manter uma ordem consistente.
O sistema verifica a lista gerada no passo anterior.
Se não houver usuários online, o processo é encerrado sem atribuir o ticket.
O sistema localiza as configurações do fluxo de conversa (ChatFlow) associado ao ticket:
Tenta identificar primeiro pelo ticket.chatFlowId.
Se não houver, tenta identificar pelo whatsapp.chatFlowId da conexão do WhatsApp associada.
Aqui ocorre a distribuição propriamente dita. O sistema obtém o lastUserId (o último usuário que recebeu atendimento) gravado no ChatFlow e encontra o próximo na lista:
Se houver lastUserId: O sistema avança para o próximo usuário da lista.
Rotação Circular: Se o lastUserId for o último da lista, o sistema volta ao primeiro usuário.
Se não houver lastUserId: O sistema começa distribuindo pelo primeiro usuário da lista (índice 0).
Uma vez definido o usuário, o sistema finaliza o processo:
Atualiza o campo lastUserId no ChatFlow com o ID do usuário selecionado (para que a rotação continue correta no próximo ticket).
Cria um log da atribuição via CreateLogTicketService.
Atribui efetivamente o ticket ao usuário selecionado.
Esta funcionalidade distribui tickets em ordem rotativa, garantindo que a carga de trabalho seja dividida sequencialmente entre os atendentes disponíveis, respeitando a fila e o status online.
Atualizado
Isto foi útil?
Isto foi útil?

