feat: migrate auth stack and admin portal
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
parent
ff674d5bb5
commit
7946b8d017
46 changed files with 2564 additions and 178 deletions
66
agents.md
66
agents.md
|
|
@ -41,20 +41,25 @@ Construir o nucleo de tickets compartilhado entre web e desktop (Tauri), garanti
|
|||
## Fase C - Servicos complementares (posterior)
|
||||
- SLAs (BullMQ + Redis), notificacoes, ingest de e-mail, portal cliente, etc.
|
||||
|
||||
## Backlog imediato
|
||||
- [x] Scaffold Next.js + Tailwind + shadcn/ui.
|
||||
- [x] Ajustar layout shell (dashboard + sidebar) com tema solicitado.
|
||||
- [x] Criar modulos base de dominio (schemas Prisma/Zod) ainda com dados mockados.
|
||||
- [x] Preparar estrutura de paginas: `/tickets`, `/tickets/[id]`, `/play`.
|
||||
- [x] Implementar Auth placeholder (cookie + middleware).
|
||||
- [x] Conectar APIs/mutations reais (Convex) e sincronizar tipos no frontend.
|
||||
## Backlog imediato
|
||||
- [ ] Expor portal do cliente com listagem de tickets filtrada por `viewerId` (Convex + UI)
|
||||
- [ ] Completar painel administrativo (gestão de agentes, filas, categorias) com RBAC server/client
|
||||
- [ ] Consolidar sincronização Better Auth ↔ Convex para fluxo de convites e resets de senha
|
||||
- [ ] Expandir suite de testes (UI + Convex) cobrindo guardas e mapeadores críticos
|
||||
|
||||
### Iniciativa atual — Autenticação real e personas
|
||||
- [x] Migrar placeholder para Better Auth + Prisma (handlers Next, cliente React e sync Convex).
|
||||
- [x] Expor roles (`admin`, `agent`, `customer`) e aplicar guardas (`requireUser/Staff/Admin/Customer`) no Convex.
|
||||
- [x] Ajustar middleware e componentes para usar `viewerId`/`actorId`, evitando vazamento de dados entre tenants.
|
||||
- [ ] Criar portal do cliente para abertura/consulta de chamados e comentários públicos.
|
||||
- [ ] Consolidar painel administrativo (agentes, filas, categorias) com fluxos completos de convite.
|
||||
|
||||
## Proximas entregas sugeridas
|
||||
1. Finalizar Auth placeholder e guardas de rota (Auth.js + middleware).
|
||||
2. Implementar camada de dados real (Prisma Client + server actions) para tickets.
|
||||
3. Adicionar formularios de criacao/edicao de ticket com validacao (React Hook Form + Zod).
|
||||
4. Conectar timeline/comentarios a mutations otimizadas (UI otimista + websockets futuro).
|
||||
5. Preparar testes basicos (unit + e2e mockados) e pipeline de CI inicial.
|
||||
## Proximas entregas sugeridas
|
||||
1. Entregar portal do cliente (listagem, detalhes e criação de ticket) consumindo RBAC e mapeadores atualizados.
|
||||
2. Evoluir painel administrativo com gerenciamento de filas/categorias e convites com Better Auth.
|
||||
3. Introduzir relatórios e métricas (workSummary, SLA) protegidos por `requireStaff/requireAdmin`.
|
||||
4. Automatizar pipeline CI (lint + vitest) integrando checagens obrigatórias.
|
||||
5. Revisar UX dos fluxos de atendimento (play next, comentários) com feedback otimista e trilha de auditoria.
|
||||
|
||||
## Acompanhamento
|
||||
Atualizar este arquivo a cada marco relevante (setup concluido, nucleo funcional, etc.).
|
||||
|
|
@ -72,10 +77,10 @@ Este repositório foi atualizado para usar Convex como backend em tempo real par
|
|||
- Upload de arquivos: `web/convex/files.ts` (Convex Storage).
|
||||
- Filas: `web/convex/queues.ts` (resumo por fila).
|
||||
- Seed/bootstrap: `web/convex/seed.ts`, `web/convex/bootstrap.ts`.
|
||||
- Auth placeholder: cookie + middleware
|
||||
- Login: `web/src/app/login/page.tsx`
|
||||
- Middleware: `web/middleware.ts`
|
||||
- Provider: `web/src/lib/auth-client.tsx` (garante usuário no Convex)
|
||||
- Autenticação: Better Auth + Prisma (SQLite) com roles (`admin`, `agent`, `customer`) sincronizadas com Convex
|
||||
- Login: `web/src/app/login/page.tsx` + `web/src/components/login/login-form.tsx`
|
||||
- Middleware e guards: `web/middleware.ts`, helpers em `web/src/lib/auth{,z, -server}.ts`
|
||||
- Cliente React: `web/src/lib/auth-client.tsx` (sincroniza sessão Better Auth ↔ Convex, expõe helpers de role)
|
||||
- Frontend (Next.js + shadcn/ui)
|
||||
- Páginas principais: `/tickets`, `/tickets/[id]`, `/tickets/new`, `/play`.
|
||||
- UI ligada ao Convex com `convex/react`.
|
||||
|
|
@ -210,6 +215,12 @@ Observações:
|
|||
|
||||
---
|
||||
|
||||
## Atualizações recentes (dez/2025)
|
||||
|
||||
- RBAC do Convex reforçado: `tickets.list`, `tickets.getById`, `workSummary` e mutações sensíveis (`changeQueue`, `updateCategories`, `startWork/pauseWork`, `updatePriority`) agora exigem `viewerId/actorId` e validam `requireStaff` com `tenantId`.
|
||||
- Componentes de tickets (tabela, painel de recentes, play next, cabeçalho/detalhe) passam a usar o contexto Better Auth para prover `viewerId`, com `useQuery` protegido por `"skip"` enquanto não há sessão.
|
||||
- Testes (`pnpm vitest run`) executados após as alterações para garantir regressão zero.
|
||||
|
||||
## Progresso recente (mar/2025)
|
||||
|
||||
Resumo do que foi implementado desde o último marco:
|
||||
|
|
@ -313,6 +324,16 @@ Observações de codificação
|
|||
- Linhas da tabela de tickets agora são totalmente clicáveis (mouse e teclado), reforçando acessibilidade e atalho de navegação.
|
||||
- Toasts e layouts refinados para manter consistência entre criação, listagem e detalhe dos tickets.
|
||||
|
||||
## Atualizações recentes (out/2025)
|
||||
- Tabela de tickets refinada com ícones de canal, prioridade ajustável inline e indicadores suavizados (fila/status/categoria) para reduzir ruído visual.
|
||||
- Definido plano de migração para Better Auth com RBAC (admin/agent/customer), portal do cliente e painel administrativo para filas/categorias/agentes.
|
||||
- Próximo passo: iniciar fase de implementação da autenticação real, substituindo middleware placeholder e alinhando Convex aos novos papéis.
|
||||
- Better Auth agora usa banco SQLite local (`db.sqlite`) e o schema Prisma foi migrado com sucesso via `pnpm exec prisma migrate dev --name init`.
|
||||
- Configuração do `postcss.config.mjs` corrigida para usar `@tailwindcss/postcss` como plugin executável, liberando a suíte do Vitest (`pnpm exec vitest run`).
|
||||
- Script `pnpm auth:seed` cria/atualiza o usuário inicial (`admin@sistema.dev` / `admin123`) usando `better-auth/crypto` para hash de senha.
|
||||
- Página de login refeita com layout em duas colunas (header + imagem lateral) e formulário integrado ao Better Auth (`LoginForm`).
|
||||
- Middleware atualizado aplica RBAC inicial (clientes direcionados ao portal, rotas `/admin` reservadas a administradores) e helpers de role expostos em `src/lib/authz.ts`; página `/portal` criada como placeholder do futuro autosserviço.
|
||||
|
||||
## Próximos passos estratégicos
|
||||
|
||||
### Produto / Experiência
|
||||
|
|
@ -335,3 +356,14 @@ Observações de codificação
|
|||
- [ ] Documentar fluxo de suporte interno (quem revisa PRs, janelas de deploy, rollback).
|
||||
|
||||
Manter este arquivo atualizado ao concluir cada item estratégico ou quando surgirem novas dependências administrativas.
|
||||
|
||||
## Atualizações recentes (mai/2026)
|
||||
|
||||
- Login corporativo refinado com instruções revisadas para primeiro acesso e mensagens de erro totalmente em PT-BR.
|
||||
- Script `pnpm auth:seed` executado para garantir o usuário administrador padrão (`admin@sistema.dev` / `admin123`).
|
||||
- Toast de autenticação inválida agora informa "E-mail ou senha inválidos", alinhando o feedback com o restante da interface.
|
||||
|
||||
### Próximos passos imediatos
|
||||
- [ ] Consolidar o painel administrativo com fluxo completo de convites (criação, exibição e revogação) utilizando Better Auth.
|
||||
- [ ] Iniciar o portal do cliente com listagem de tickets filtrada por `viewerId` e detalhamento básico.
|
||||
- [ ] Cobrir o fluxo de autenticação (login/convite/reset) com testes Vitest focados em regressões críticas.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue