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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions