Principal Atualização Validação de Time Obrigatório para Resolver Conversas - Nova Funcionalidade

Validação de Time Obrigatório para Resolver Conversas - Nova Funcionalidade

Última atualização em Nov 14, 2025

O CHAT - SPX agora exige que um time seja atribuído antes de permitir que uma conversa seja resolvida. Esta funcionalidade garante melhor organização e rastreabilidade das conversas, assegurando que todas as conversas resolvidas tenham um time responsável atribuído.


Como Funciona

Validação Automática ao Resolver

Quando um agente tenta resolver uma conversa, o sistema verifica automaticamente se há um time atribuído:

Com Time Atribuído ✅: A conversa é resolvida normalmente, sem interrupções

Sem Time Atribuído ⚠️: O sistema exibe um modal solicitando a seleção de um time antes de permitir a resolução

Exemplo Visual

Abaixo você pode ver como o sistema se comporta quando tenta resolver sem time:

Modal exibido quando tenta resolver conversa sem time atribuído

Fluxo de Resolução

Quando você tenta resolver uma conversa sem time atribuído:

  1. Clique em "Resolve" ou use qualquer método de resolução (botão, menu de contexto, atalho de teclado)

  2. Modal de Seleção Aparece: O sistema detecta a ausência de time e exibe um modal com a lista de times disponíveis

  3. Selecione um Time: Escolha o time apropriado da lista apresentada

  4. Confirmação: Após selecionar, o sistema automaticamente:

   - Atribui o time selecionado à conversa

   - Resolve a conversa imediatamente

   - Exibe mensagem de sucesso


Pontos de Resolução Cobertos

Esta validação funciona em todos os pontos onde uma conversa pode ser resolvida:

Interface Principal

🔘 Botão "Resolve": No cabeçalho da conversa

📋 Menu de Contexto: Ao clicar com botão direito na conversa e selecionar "Marcar como resolvida"

⌨️ Atalhos de Teclado:

  - Alt + E - Resolver conversa atual

  - Cmd/Ctrl + Alt + E - Resolver e avançar para próxima

🎯 Command Bar: Ao usar a barra de comandos (Cmd/Ctrl + K) e selecionar "Resolve Conversation"

Ações em Massa

📦 Bulk Actions: Ao selecionar múltiplas conversas e tentar resolver em massa

🔄 Validação Inteligente: Se algumas conversas têm time e outras não, o sistema solicita seleção de time apenas para as que não possuem


Modal de Seleção de Time

Características do Modal

O modal de seleção possui as seguintes características:

📝 Título Claro: "Selecionar Time"

💬 Mensagem Informativa: Explica que é necessário selecionar um time para resolver a conversa

📋 Lista de Times: Exibe todos os times disponíveis na conta

✅ Seleção Visual: Ao passar o mouse sobre um time, ele é destacado; ao clicar, fica selecionado com indicador visual

🔘 Botões de Ação:

  - "Cancelar" - Fecha o modal sem fazer alterações

  - "Confirmar" - Atribui o time e resolve a conversa (habilitado apenas após seleção)

Comportamento em Ações em Massa

Quando resolve múltiplas conversas:

🎯 Time Único: O time selecionado será atribuído a todas as conversas que não possuem time

⚡ Processamento Automático: Após selecionar, o sistema atribui o time e resolve todas as conversas automaticamente

✅ Feedback Visual: Mensagem de sucesso informando quantas conversas foram resolvidas


Validação de Segurança

Camadas de Proteção

O sistema possui validação em múltiplas camadas para garantir a segurança:

Frontend (Interface)

• Validação antes de enviar a requisição ao servidor

• Modal amigável para seleção de time quando necessário

• Prevenção de ações sem time atribuído

Backend (Servidor)

• Validação no endpoint da API antes de processar a resolução

• Retorno de erro apropriado se tentar resolver sem time

• Validação no modelo de dados para garantir integridade

Validação no Modelo

• O modelo Conversation possui validação que impede mudar status para "resolved" sem team_id

• Garante que mesmo chamadas diretas à API respeitem a regra


Mensagens e Feedback

Mensagens do Sistema

O sistema exibe mensagens claras em português brasileiro:

Modal de Seleção: "Selecione um time para resolver esta conversa"

Sucesso Individual: "Conversa resolvida com sucesso"

Sucesso em Massa: "Conversas atualizadas com sucesso"

Erro: "Um time deve ser atribuído antes de resolver esta conversa"

Sem Times Disponíveis: "Nenhum time disponível. Por favor, crie um time primeiro."

Tratamento de Erros

• Se não houver times disponíveis, o modal informa e orienta a criar um time primeiro

• Erros de rede ou servidor são tratados com mensagens apropriadas

• O modal pode ser cancelado a qualquer momento sem afetar a conversa


Benefícios

Melhor Organização

📊 Rastreabilidade: Todas as conversas resolvidas têm um time responsável identificado

📈 Relatórios Precisos: Relatórios por time ficam mais confiáveis

👥 Responsabilidade Clara: Facilita identificar qual time está lidando com cada conversa

Fluxo de Trabalho Aprimorado

⚡ Processo Automatizado: Atribuição e resolução acontecem em uma única ação

🎯 Prevenção de Erros: Evita esquecimento de atribuir time antes de resolver

✅ Consistência: Garante que todas as conversas resolvidas sigam o mesmo padrão

Experiência do Usuário

💡 Interface Intuitiva: Modal claro e fácil de usar

🚀 Ação Rápida: Processo completo em poucos cliques

🔄 Flexibilidade: Permite cancelar e escolher outro time se necessário


Casos de Uso

Cenário 1: Resolução Individual

  1. Agente trabalha em uma conversa

  2. Ao finalizar, clica em "Resolve"

  3. Sistema detecta ausência de time

  4. Modal aparece com lista de times

  5. Agente seleciona seu time

  6. Conversa é resolvida automaticamente

Cenário 2: Resolução em Massa

  1. Agente seleciona 10 conversas

  2. Clica em "Resolve" para todas

  3. Sistema verifica: 7 têm time, 3 não têm

  4. Modal aparece solicitando time para as 3 sem time

  5. Agente seleciona um time

  6. Time é atribuído às 3 conversas

  7. Todas as 10 conversas são resolvidas

Cenário 3: Via Menu de Contexto

  1. Agente clica com botão direito em uma conversa

  2. Seleciona "Marcar como resolvida"

  3. Sistema valida e detecta ausência de time

  4. Modal aparece

  5. Após seleção, conversa é resolvida


Compatibilidade

Esta funcionalidade está disponível em:

✅ Todas as formas de resolução de conversas (botão, menu, atalhos, command bar)

✅ Ações individuais e em massa

✅ Todos os navegadores desktop e mobile

✅ Interface em português brasileiro


Notas Técnicas

Para Administradores

• A validação é aplicada automaticamente, sem necessidade de configuração

• Funciona com todos os times existentes na conta

• Não afeta conversas já resolvidas antes da implementação

• A validação pode ser contornada apenas por processos automáticos do sistema (como auto-resolve por tempo)

Para Desenvolvedores

• Validação implementada no frontend (Vue.js) e backend (Ruby on Rails)

• Endpoint: POST /api/v1/accounts/:account_id/conversations/:id/toggle_status

• Validação no modelo: Conversation#team_required_for_resolution

• Mensagens de erro retornam status HTTP 422 (Unprocessable Entity)


Suporte

Se você tiver dúvidas sobre esta funcionalidade ou encontrar algum problema:

• Entre em contato com nossa equipe de suporte através da Central de Ajuda

• Abra um ticket de suporte descrevendo o problema encontrado

• Verifique se há times disponíveis na conta antes de tentar resolver conversas