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:
-
Clique em "Resolve" ou use qualquer método de resolução (botão, menu de contexto, atalho de teclado)
-
Modal de Seleção Aparece: O sistema detecta a ausência de time e exibe um modal com a lista de times disponíveis
-
Selecione um Time: Escolha o time apropriado da lista apresentada
-
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
-
Agente trabalha em uma conversa
-
Ao finalizar, clica em "Resolve"
-
Sistema detecta ausência de time
-
Modal aparece com lista de times
-
Agente seleciona seu time
-
Conversa é resolvida automaticamente
Cenário 2: Resolução em Massa
-
Agente seleciona 10 conversas
-
Clica em "Resolve" para todas
-
Sistema verifica: 7 têm time, 3 não têm
-
Modal aparece solicitando time para as 3 sem time
-
Agente seleciona um time
-
Time é atribuído às 3 conversas
-
Todas as 10 conversas são resolvidas
Cenário 3: Via Menu de Contexto
-
Agente clica com botão direito em uma conversa
-
Seleciona "Marcar como resolvida"
-
Sistema valida e detecta ausência de time
-
Modal aparece
-
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