Tema
Rotas e Páginas
Mapeamento completo de todas as rotas do frontend Next.js com componentes, funcionalidades e permissões.
Estrutura de roteamento
O frontend usa Next.js App Router com rotas baseadas em diretórios. Todas as rotas (exceto auth e legais) são protegidas pelo Clerk e filtradas pelo RBAC.
Autenticação
| Rota | Componente | Descrição |
|---|---|---|
/(auth)/sign-in/[[...sign-in]] | SignInPage | Login via Clerk (email/senha, OAuth) |
/(auth)/sign-up/[[...sign-up]] | SignUpPage | Cadastro via Clerk |
/auth/meta/callback | MetaCallbackPage | Callback OAuth do Meta para WhatsApp Cloud API |
Dashboard (/dashboard)
Componente: DashboardPage | Permission: app:dashboard
Funcionalidades:
- Cards de KPI do dia: receita total, mês YTD, receita influenciada, pedidos, taxa de recompra
- Gráfico de receita: mensal histórico + intraday (hoje vs. ontem por hora)
- Comparativo de lojas: hoje vs. ontem com variação %
- Top vendedores (tabela com rank, nome, loja, total, pedidos)
- Radar chart de distribuição RFM (6 segmentos)
- Alertas de ações prioritárias: queda de receita, alta performance, lojas estagnadas
- Feed de vendas recentes (últimas 4h, com nome do cliente)
- Badge de última sincronização + botão de sync manual
- Exportar PDF
Hook: useDashboard() — fetch em 2 fases: KPI crítico primeiro, depois 6 endpoints em paralelo.
Clientes
/clients — Lista de Clientes
Componente: ClientsPage | Permission: app:customers
Funcionalidades:
- Busca por nome, email, CPF/CNPJ ou ID externo (debounce 300ms)
- Filtros: Segmento RFM, Status (Ativo/Alerta/Inativo/Lead), Segmento CRM, Loja
- Tabela sortável: Nome, RFM, Campanhas, Compras, Última Compra, LTV, Cadastro
- Visão mobile em cards
- Paginação: 12 itens/página
- Coluna LTV requer
app:financials - Modal de tutorial (4 etapas)
/clients/[id] — Perfil do Cliente
Componente: ClientDetailPage | Permission: app:customers
Funcionalidades:
- Sidebar: foto, dados de contato, loja/vendedor preferido
- Gerenciamento de opt-out por canal (WhatsApp, Email, SMS) com confirmação
- Alertas de qualidade de dados (email inválido, tipo de telefone, data de nascimento)
- KPIs: LTV, ticket médio, compras, campanhas, dias desde última compra
- 3 abas: Visão Geral, Histórico, Extra
- Histórico de transações com paginação (10/25/50/100/Todos)
- Codificação de recência por cor (verde ≤30d, âmbar ≤90d, vermelho >90d)
Campanhas
/campaigns — Lista de Campanhas
Componente: CampaignListPage | Permission: app:campaigns
Funcionalidades:
- 2 abas: Lista + Tempo Real
- Lista: busca, sort por coluna, paginação (10/25/50/100/página)
- Badges de status: ENVIO REALIZADO, ENVIANDO, AGENDADO, RASCUNHO, ERRO
- Ícones de canal: WhatsApp, SMS, Email
- Ações: Enviar, Duplicar, Editar, Excluir, toggle Ativo/Pausado
- Tempo Real: métricas ao vivo com refresh a cada 5s (enviados/entregues/lidos/falhas)
- Modal de tutorial (4 etapas)
- Modal de aviso de rate limit antes do envio
/campaigns/new — Nova Campanha
Componente: CampaignModal
Criação de campanha com seleção de segmento, template, canal (WhatsApp, SMS, Email), scheduling.
/campaigns/[id] — Detalhe da Campanha
Componente: CampaignDetailPage | Permission: app:campaigns
Seções de métricas:
WhatsApp:
- Entrega: enviados, entregues, falhas, pulados
- Engajamento: lidos, respostas, cliques (redirect)
- Conversão: conversões, receita, ROI, custo por mensagem
Email:
Entrega: enviados, entregues, bounces hard/soft, falhas
Engajamento: aberturas, cliques, descadastros, spam reports
Conversão: conversões, receita, ROI
Ratios como progress bars
Modal de ajuda com glossário de 12+ termos
Modal de confirmação de reenvio com aviso LGPD
/campaigns/[id]/edit — Editar Campanha
Componente: CampaignModalEdit
WhatsApp
| Rota | Componente | Descrição |
|---|---|---|
/whatsapp/dashboard | WhatsappDashboardPage | Overview das instâncias e estatísticas |
/whatsapp/templates | WhatsappTemplatesPage | Gerenciamento de templates Meta aprovados |
/whatsapp/stores | WhatsappStoresPage | Mapeamento de instâncias por loja |
/whatsapp/rate-limit | RateLimitPage | Configuração de limites de envio |
Analytics e Resultados
| Rota | Componente | Permissão | Descrição |
|---|---|---|---|
/results/retail | RetailResultsPage | app:sales | Performance por loja |
/results/channels | ChannelResultsPage | app:sales | Análise por canal |
/results/quality | QualityPage | app:sales | Qualidade de dados (email, telefone) |
/results/schedule | AgendaPage | app:sales | Calendário de campanhas agendadas |
/results/post-sale-survey | PostSaleSurveyRedirect | — | Resultados de pesquisa pós-venda |
/rfm | RfmPage | app:segments | Análise RFM completa |
/rfm/sellers | SellerRfmPage | app:segments | RFM por vendedor |
Segmentação
| Rota | Componente | Descrição |
|---|---|---|
/segments/list | SegmentListPage | Lista de segmentos com trend dia-a-dia |
/segments/new | SegmentsPage | Criação de segmento com regras de comportamento |
/segments/edit/[id] | EditSegmentPage | Edição de segmento existente |
Email
| Rota | Componente | Descrição |
|---|---|---|
/email-templates | EmailTemplatesPage | Editor MJML com GrapesJS, prévia desktop/mobile |
Configurações (/settings)
Componente: SettingsPage | Permission: app:settings
Abas:
| Aba | Permissão | Conteúdo |
|---|---|---|
| Geral | app:settings | Logo, loja de fallback, importação de opt-out, janela de atribuição |
| Usuários | app:team | Criar/editar usuários, atribuição de roles e lojas |
| Perfis | app:roles | Criar/editar roles com permissões granulares |
| Canais | app:integrations | WhatsApp (Evolution + Meta Cloud), SMTP, SMS |
| Campanhas | app:settings | Janela de atribuição, opt-out, redirect, limites |
| Atendimento | app:settings | Mensagens de menu, handoff, saudação, resolução |
| Reatribuição | app:settings | Timeout de inatividade e reatribuição automática |
| Pesquisa Pós-Venda | app:settings | Configuração CSAT e NPS |
Sistema
| Rota | Componente | Permissão | Descrição |
|---|---|---|---|
/inbox | InboxPage | — | Caixa de entrada (legada; banner de redirect ao Chatwoot) |
/admin | AdminPage | Super Admin | Health check, métricas, filas, containers, logs |
/audit | AuditPage | app:audit | Trilha completa de ações por usuário |
/profile | ProfilePage | — | Perfil do usuário logado |
/admin — Painel de Administração
Seções:
| Seção | Dados | Refresh |
|---|---|---|
| Service Health | API, DB, Redis, WhatsApp, Email, ERP Sync | 10s |
| Métricas | Usuários ativos (2h), erros (24h), clientes, filas, DB size | 30s |
| Gerenciar Filas | Retry falhas, limpar concluídos, pausar/retomar | manual |
| Containers Docker | Estado, reinicialização por nome | 20s |
| Log de Auditoria | Últimas 80 requisições (método, endpoint, status, ação, usuário) | 15s |
| Links Externos | Grafana, Portainer, BullBoard | — |
Páginas legais (públicas)
| Rota | Componente |
|---|---|
/politica-de-privacidade | PoliticaDePrivacidadePage |
/termos-de-uso | TermosDeUsoPage |
/exclusao-de-dados | ExclusaoDeDadosPage |
Permissões por rota (resumo)
| Permission | Rotas que requerem |
|---|---|
app:dashboard | /dashboard |
app:customers | /clients, /clients/[id] |
app:financials | Colunas LTV em /clients, /clients/[id] |
app:sales | /results/*, /rfm/* |
app:segments | /segments/*, /rfm/* |
app:campaigns | /campaigns/* |
app:campaigns:send | Botão "Enviar" em campanhas |
app:integrations | /whatsapp/*, abas de canais em /settings |
app:settings | /settings/* |
app:team | Aba Usuários em /settings |
app:roles | Aba Perfis em /settings |
app:audit | /audit |
| Super Admin (level=0) | /admin |