## Sistema de Chamados Aplicação **Next.js 16 (App Router)** com **React 19**, **Convex** e **Better Auth** para gestão de tickets da Rever. A stack ainda inclui **Prisma 6** (SQLite padrão para DEV), **Tailwind** e **Turbopack** como bundler padrão. Todo o código-fonte fica na raiz do monorepo seguindo as convenções do App Router. ## Requisitos - Node.js >= 20 - pnpm >= 9 (habilite via `corepack prepare pnpm@9 --activate`) - CLI do Convex (`pnpm dlx convex dev` instalará automaticamente no primeiro uso) ## Configuração rápida 1. Instale as dependências: ```bash pnpm install ``` 2. Ajuste o arquivo `.env` (ou crie a partir de `.env.example`) e confirme os valores de: - `NEXT_PUBLIC_CONVEX_URL` (gerado pelo Convex Dev) - `BETTER_AUTH_SECRET`, `BETTER_AUTH_URL`, `DATABASE_URL` 3. Aplique as migrações e gere o client Prisma: ```bash pnpm prisma migrate deploy pnpm prisma:generate ``` 4. Popule usuários padrão do Better Auth: ```bash pnpm auth:seed ``` 5. (Opcional) Para re-sincronizar manualmente as filas padrão, execute: ```bash pnpm queues:ensure ``` 6. Em um terminal, execute o backend em tempo real do Convex: ```bash pnpm convex:dev ``` 7. Em outro terminal, suba o frontend Next.js (Turbopack): ```bash pnpm dev ``` 8. Com o Convex ativo, acesse `http://localhost:3000/dev/seed` uma vez para popular dados de demonstração (tickets, usuários, comentários) diretamente no banco do Convex. > Se o CLI perguntar sobre configuração do projeto Convex, escolha criar um novo deployment local (opção padrão) e confirme. As credenciais são armazenadas em `.convex/` automaticamente. ### Documentação - Índice de docs: `docs/README.md` - Operações (produção): `docs/OPERATIONS.md` (versão EN) e `docs/OPERACAO-PRODUCAO.md` (PT-BR) - Guia de DEV: `docs/DEV.md` - Testes automatizados (Vitest/Playwright): `docs/testes-vitest.md` - Stack Swarm: `stack.yml` (roteado por Traefik, rede `traefik_public`). ### Variáveis de ambiente - Exemplo na raiz: `.env.example` — copie para `.env` e preencha segredos. - App Desktop: `apps/desktop/.env.example` — copie para `apps/desktop/.env` e ajuste `VITE_APP_URL`. - Nunca faça commit de arquivos `.env` com valores reais (já ignorados em `.gitignore`). ### Guia de DEV (Prisma, Auth e Desktop/Tauri) Para fluxos detalhados de desenvolvimento — banco de dados local (SQLite/Prisma), seed do Better Auth, ajustes do Prisma CLI no DEV e build do Desktop (Tauri) — consulte `docs/DEV.md`. ## Scripts úteis - `pnpm lint` — ESLint com as regras do projeto. - `pnpm test` — suíte de testes unitários (Vitest) em modo não interativo. - `pnpm build` — `next build --turbopack` com otimizações para produção. - `pnpm auth:seed` — atualiza/cria contas padrão do Better Auth (credenciais em `agents.md`). - `pnpm prisma migrate deploy` — aplica migrações ao banco SQLite local. - `pnpm convex:dev` — roda o Convex em modo desenvolvimento, gerando tipos em `convex/_generated`. ## Transferir máquina entre colaboradores Quando uma máquina trocar de responsável: 1. Abra `Admin > Máquinas`, selecione o equipamento e clique em **Resetar agente**. 2. No equipamento, execute o reset local do agente (`rever-agent reset` ou reinstale o serviço) e reprovisione com o código da empresa. 3. Após o agente gerar um novo token, associe a máquina ao novo colaborador no painel. Sem o reset de agente, o Convex reaproveita o token anterior e o inventário continua vinculado ao usuário antigo. ## Estrutura principal - `app/` dentro de `src/` — rotas e layouts do Next.js (App Router). - `components/` — componentes reutilizáveis (UI, formulários, layouts). - `convex/` — queries, mutations e seeds do Convex. - `prisma/` — schema, migrações e banco SQLite (`prisma/db.sqlite`). - `scripts/` — utilitários em Node para sincronização e seeds adicionais. - `agents.md` — guia operacional e contexto funcional (em PT-BR). - `PROXIMOS_PASSOS.md` — backlog de melhorias futuras. ## Credenciais de demonstração Após executar `pnpm auth:seed`, as credenciais padrão ficam disponíveis conforme descrito em `agents.md` (seção “Credenciais padrão”). Ajuste variáveis `SEED_USER_*` se precisar sobrepor usuários ou senhas durante o seed. ## Próximos passos Consulte `PROXIMOS_PASSOS.md` para acompanhar o backlog funcional e o progresso das iniciativas planejadas. ## Diagnóstico de sessão da máquina (Desktop) - Quando o portal for aberto via app desktop, use a página `https://seu-app/portal/debug` para validar cookies e contexto: - `/api/auth/get-session` deve idealmente mostrar `user.role = "machine"` (em alguns ambientes WebView pode retornar `null`, o que não é bloqueante). - `/api/machines/session` deve retornar `200` com `assignedUserId/assignedUserEmail`. - O frontend agora preenche `machineContext` mesmo que `get-session` retorne `null`, e deriva o papel efetivo a partir desse contexto. - Se `machines/session` retornar `401/403`, revise CORS/credenciais e o fluxo de handshake documentados em `docs/OPERACAO-PRODUCAO.md`.