-
Notifications
You must be signed in to change notification settings - Fork 891
Description
- Resumo Executivo
Expandir o sistema de tabulações de encerramento de atendimento, passando de 5 tabulações genéricas para 35+ tabulações estruturadas por área/motivo de contato, com busca em tempo real no dialog de encerramento.
Locais de uso:
Configuração: Admin → Tabulações
Operacional: Atendimento → Meus Atendimentos → Encerrar Atendimento
2. Problema
Apenas 5 tabulações genéricas (Positive, Neutral, Negative)
Baixa granularidade na categorização dos atendimentos
Dificuldade para identificar motivos reais de contato
Impacto direto na qualidade de relatórios e métricas
Perda de visibilidade sobre gargalos operacionais
Lista limitada e sem busca estruturada na tela de encerramento
3. Solução
3.1 Novas Tabulações (35 itens em 5 categorias)
Atendimento Geral (10):
Problema Resolvido
Informação Fornecida
Orientação de Uso (app/plataforma)
Dúvida Comercial Esclarecida
Treinamento / Onboarding
Problema Não Resolvido
Erro no Sistema
Reclamação do Seller
Falha Operacional ZAX
Falha de Comunicação
Logística (7):
Atraso Logístico
Atraso na Coleta
Atraso na Entrega
Problema com Código de Rastreio
Extravio
Falha na Atualização de Status
Problema com Frete
Financeiro (6):
Dúvida de Repasse
Cobrança Indevida
Divergência de Valores
Estorno
Taxas / Comissão
Problema Financeiro (geral)
Pedidos (6):
Divergência de Pedido
Pedido Cancelado
Pedido com Problema
Alteração de Pedido
Pedido Não Integrado
Cancelamento Indevido
Loja / Sistema (6):
Bloqueio / Penalização de Loja
Bug no App
Lentidão
Erro de Cadastro
Problema de Login
Produto Não Publicado
3.2 Busca no Dialog de Encerramento
Substituir o Select simples por um Combobox com busca (cmdk):
Filtragem em tempo real por nome e categoria
Lista agrupada por categoria
Mostra "Categoria / Nome" quando selecionado
Placeholder: "Buscar por nome ou categoria..."
3.3 Botão "Popular Tabulações" no Admin
Botão na tela Admin → Tabulações para criar todas as 35 tabulações de uma vez. Ignora duplicatas automaticamente (seguro para rodar múltiplas vezes).
-
Implementação (código já pronto na branch)
4.1 Arquivos Criados
src/components/ui/command.tsx — Componente Command (cmdk) do shadcn/ui para busca em dropdown
src/app/api/support/tabulations/seed/route.ts — API POST para popular as 35 tabulações
4.2 Arquivos Modificados
package.json — Adicionada dependência cmdk@1.0.4
src/modules/support/components/atendimento/close-ticket-dialog.tsx — Substituído Select por Combobox com busca
src/modules/support/components/tabulations/tabulation-list.tsx — Adicionado botão "Popular Tabulações"
src/modules/support/hooks/use-tabulations.ts — Adicionado hook useSeedTabulations()
src/modules/support/services/tabulations.service.ts — Adicionada função seedTabulations()
src/modules/support/repositories/tabulation-repository.ts — Adicionado método createMany()
4.3 Dependência nova
npm install cmdk@1.0.4 -
PRÉ-REQUISITO: Permissão no Banco de Dados
⚠️ EXECUTAR ANTES DE TESTAR
O usuário do banco (zaxreadonly) não tem permissão de escrita na tabela support_tabulations. Sem isso, nenhuma operação de escrita funciona (criar, editar, excluir, popular).
Rodar no PostgreSQL com usuário admin:
GRANT INSERT, UPDATE, DELETE ON TABLE support_tabulations TO zaxreadonly;
GRANT USAGE, SELECT ON SEQUENCE support_tabulations_id_seq TO zaxreadonly;
Verificar se outras tabelas de suporte também precisam:
SELECT grantee, table_name, privilege_type
FROM information_schema.table_privileges
WHERE table_name LIKE 'support_%'
AND grantee = 'zaxreadonly';
- Fluxo de Teste
6.1 Preparação
Rodar os comandos GRANT no banco (seção 5)
npm install (para instalar cmdk)
npm run dev
6.2 Admin — Popular Tabulações
Acessar Admin → Tabulações
Clicar no botão "Popular Tabulações"
Verificar que 35 tabulações aparecem organizadas em 5 categorias
Toast de sucesso: "35 tabulações criadas (0 já existiam)"
Clicar novamente — deve mostrar "0 tabulações criadas (35 já existiam)"
6.3 Admin — CRUD Individual
Criar uma tabulação manual via "Nova Tabulação"
Editar uma tabulação existente
Ativar/desativar toggle
Excluir uma tabulação
6.4 Encerrar Atendimento — Busca
Ir em Atendimento → Meus Atendimentos
Abrir uma conversa ativa
Clicar em "Encerrar Atendimento"
No combobox: digitar "atraso" → deve filtrar tabulações de Logística
Digitar "financeiro" → deve filtrar por categoria
Digitar "bug" → deve mostrar "Bug no App"
Selecionar uma tabulação
Adicionar nota de encerramento (opcional)
Clicar "Encerrar Atendimento"
6.5 Dashboard
Acessar Dashboard
Verificar que o gráfico de tabulações reflete as novas categorias - Notas Técnicas
Multi-tenant: Todas as tabulações são criadas por accountId. Cada conta tem suas próprias tabulações.
Unique constraint: [accountId, name] — não permite duplicatas por conta.
Soft delete: Exclusão marca is_active = false, não deleta do banco.
Seed idempotente: O endpoint /api/support/tabulations/seed pode ser chamado múltiplas vezes sem duplicar dados.
Build: npm run build passa sem erros.
Sem migração: Não há alteração no schema do Prisma. A tabela support_tabulations já existe com todos os campos necessários.