94 lines
4.2 KiB
Markdown
94 lines
4.2 KiB
Markdown
## Sistema de Chamados
|
||
|
||
Aplicação Next.js 15 com Convex e Better Auth para gestão de tickets da Rever. Todo o código-fonte está organizado diretamente na raiz do repositório, conforme convenções do Next.js.
|
||
|
||
## Requisitos
|
||
|
||
- Node.js >= 20
|
||
- pnpm >= 8
|
||
- 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:
|
||
```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.
|
||
|
||
### Deploy em produção (Traefik + Convex self‑hosted)
|
||
- Guia completo: `docs/OPERACAO-PRODUCAO.md:1`.
|
||
- Histórico de setup/decisões: `docs/SETUP-HISTORICO.md:1`.
|
||
- Stack Swarm: `stack.yml:1` (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 exec vitest run` — suíte de testes unitários.
|
||
- `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`.
|
||
|
||
## 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.
|
||
|
||
<!-- ci: smoke test 3 -->
|
||
|
||
## 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`.
|