sistema-de-chamados/agents.md

5.9 KiB

Plano de Desenvolvimento — Sistema de Chamados

Diretriz máxima: todas as respostas, comunicações e documentações devem ser redigidas em português brasileiro.

Contato principal

Credenciais padrão (Better Auth)

  • Administrador: admin@sistema.dev / admin123
  • Agente Demo: agente.demo@sistema.dev / agent123
  • Cliente Demo: cliente.demo@sistema.dev / cliente123

Execute pnpm auth:seed após configurar .env. O script atualiza as contas acima ou cria novas conforme variáveis SEED_USER_*.

Sincronização com Convex

  • Usuários e tickets demo são garantidos via convex/seed.ts.
  • Após iniciar pnpm convex:dev, acesse /dev/seed uma vez por ambiente local para carregar dados reais de demonstração no banco do Convex.

Setup local rápido

  1. pnpm install
  2. Ajuste .env (ou crie a partir do exemplo) e confirme NEXT_PUBLIC_CONVEX_URL apontando para o Convex local.
  3. pnpm auth:seed
  4. (Opcional) pnpm queues:ensure
  5. pnpm convex:dev
  6. Em outro terminal: pnpm dev

Checklist para novo computador

  1. Instale Node.js 20+ e habilite o Corepack (corepack enable) para usar o pnpm.
  2. Garanta o pnpm atualizado (corepack prepare pnpm@latest --activate) antes de clonar o repositório.
  3. Clone o projeto: git clone git@github.com:esdrasrenan/sistema-de-chamados.git e entre na pasta.
  4. Copie o arquivo .env já configurado do computador atual para a raiz do repositório (nunca faça commit desse arquivo).
  5. Instale as dependências com pnpm install.
  6. Gere os clientes locais necessários: pnpm prisma:generate.
  7. Semeie as credenciais Better Auth: pnpm auth:seed.
  8. Se for trabalhar com filas padrão, execute pnpm queues:ensure.
  9. Inicie o backend Convex em um terminal (pnpm convex:dev) e, em outro, suba a aplicação Next.js (pnpm dev).
  10. Acesse http://localhost:3000 e teste login com os usuários padrão listados acima antes de continuar o desenvolvimento.

Estado atual

  • Autenticação Better Auth com guardas client-side (AuthGuard) bloqueando rotas protegidas.
  • Menu de usuário no rodapé da sidebar com link para /settings e logout confiável.
  • Formulários de novo ticket (dialog, página e portal) com seleção de responsável, placeholders claros e validação obrigatória de assunto/descrição/categorias.
  • Relatórios e dashboards utilizam AppShell, garantindo header/sidebar consistentes.

Entregas recentes

  • Exportações CSV (Backlog, Canais, CSAT, SLA e Horas por cliente) com parâmetros de período.
  • PDF do ticket (via pdfkit standalone), com espaçamento e traduções PT-BR.
  • Play interno/externo com somatório por tipo por ticket e relatório por cliente.
  • Admin > Empresas & clientes: cadastro/edição, Cliente avulso? e Horas contratadas/mês.
  • Admin > Usuários: vincular colaborador à empresa.
  • Dashboard: cards de filas (Chamados/Laboratório/Visitas) e indicadores principais.
  • Lista de tickets: filtro por Empresa, coluna Empresa, alinhamento vertical e melhor espaçamento entre colunas.

Entregas recentes relevantes

  • Correção do redirecionamento após logout evitando retorno imediato ao dashboard.
  • Validações manuais dos formulários de rich text para eliminar ZodError durante edição.
  • Dropdown de responsáveis na criação de tickets com preenchimento automático pelo autor e evento inicial de comentário.
  • Indicadores visuais de campos obrigatórios e botão "Novo ticket" funcional no cabeçalho do detalhe.
  • Seeds (Better Auth e Convex) ampliados para incluir agente e cliente de teste.

Fluxos suportados

Equipe interna (admin/agent/collaborator)

  • Criar tickets com categorias, responsável inicial e anexos.
  • Abrir novos tickets diretamente a partir do detalhe via dialog reutilizável.
  • Acessar /settings para ajustes pessoais e efetuar logout pelo menu.

Papéis

  • Papéis válidos: admin, manager, agent, collaborator (papel customer removido).
  • Gestores veem os tickets da própria empresa e só podem registrar comentários públicos.

Próximos passos sugeridos

  1. Disparo de e-mails automáticos quando uso de horas ≥ 90% do contratado.
  2. Ações rápidas (status/fila) diretamente na listagem de tickets.
  3. Limites e monitoramento para anexos por tenant.
  4. PDF do ticket com layout idêntico ao app (logo/cores/fontes).

Referências de endpoints úteis

  • Backlog CSV: /api/reports/backlog.csv?range=7d|30d|90d[&companyId=...]
  • Canais CSV: /api/reports/tickets-by-channel.csv?range=7d|30d|90d[&companyId=...]
  • CSAT CSV: /api/reports/csat.csv?range=7d|30d|90d
  • SLA CSV: /api/reports/sla.csv
  • Horas por cliente CSV: /api/reports/hours-by-client.csv?range=7d|30d|90d

Rotina antes de abrir PR

  • pnpm lint
  • pnpm build --turbopack
  • pnpm exec vitest run
  • Revisar toasts/labels em PT-BR e ausência de segredos no diff.

Convenções

  • Convex deve retornar apenas tipos primitivos; converta datas via mappers em src/lib/mappers.
  • Manter textos em PT-BR e evitar comentários supérfluos no código.
  • Reutilizar componentes shadcn existentes e seguir o estilo do arquivo editado.
  • Validações client-side críticas devem sinalizar erros inline e exibir toast.

Estrutura útil

  • convex/ — queries e mutations (ex.: tickets.ts, users.ts).
  • src/components/tickets/ — UI interna (dialog, listas, header, timeline).
  • src/components/portal/ — formulários e fluxos do portal do cliente.
  • scripts/ — seeds Better Auth e utilidades.
  • src/components/auth/auth-guard.tsx — proteção de rotas client-side.

Histórico resumido

  • Scaffold Next.js + Turbopack configurado com Better Auth e Convex.
  • Portal do cliente entregue com isolamento por viewerId.
  • Fluxo de convites e painel administrativo operacionais.
  • Iteração atual focada em UX de criação de tickets, consistência de layout e guardas de sessão.