Skip to content

Expansão da Árvore de Tabulações #87

@barbara-beep

Description

@barbara-beep
  1. 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).

  1. 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

  2. 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';

  1. 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
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions