chore: update docs and configs
This commit is contained in:
parent
7718f77d4c
commit
1079111de2
23 changed files with 102 additions and 10467 deletions
20
docs/DEV.md
20
docs/DEV.md
|
|
@ -5,7 +5,7 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
|
|||
## Resumo rápido
|
||||
|
||||
- **Bun (runtime padrão)**: 1.3+ já instalado no runner e VPS (`bun --version`). Após instalar localmente, exporte `PATH="$HOME/.bun/bin:$PATH"` para tornar o binário disponível. Use `bun install`, `bun run dev:bun`, `bun run convex:dev:bun`, `bun run build:bun` e `bun test` como fluxo principal (scripts Node continuam disponíveis como fallback).
|
||||
- **Node/pnpm**: Node 20.9+ permanece obrigatório para ferramentas CLI; pnpm 10 está disponível como alternativa apenas para fluxos do desktop/Tauri.
|
||||
- **Node.js**: mantenha a versão 20.9+ instalada para ferramentas auxiliares (Prisma CLI, scripts legados em Node) quando não estiver usando o runtime do Bun.
|
||||
- **Next.js 15.5.5**: Projeto voltou para a versão estável (`next@15.5.5`) com Turbopack como bundler padrão e whitelist de domínios garantida pelo middleware.
|
||||
- **Lint/Test/Build**: `bun run lint`, `bun test`, `bun run build:bun`. O test runner do Bun já roda em modo não interativo; utilize `bunx vitest --watch` apenas quando precisar do modo watch manualmente.
|
||||
- **Banco DEV**: SQLite em `prisma/prisma/db.dev.sqlite`. Defina `DATABASE_URL="file:./prisma/db.dev.sqlite"` ao chamar CLI do Prisma.
|
||||
|
|
@ -28,7 +28,7 @@ Este documento consolida o estado atual do ambiente de desenvolvimento, descreve
|
|||
```bash
|
||||
bun run dev:bun
|
||||
```
|
||||
> Alternativas: `pnpm dev` (Node) ou `bun run dev:webpack` se precisar do fallback oficial.
|
||||
> Alternativas: `bun run dev` (Node) ou `bun run dev:webpack` se precisar do fallback oficial.
|
||||
|
||||
3. Credenciais padrão (seed): `admin@sistema.dev / admin123`.
|
||||
4. Herdou dados antigos? Execute `node scripts/remove-legacy-demo-users.mjs` para limpar contas demo legadas.
|
||||
|
|
@ -74,7 +74,7 @@ O workflow dispara em todo `push`/`pull_request` para `main` e fornece feedback
|
|||
|
||||
## Testes rápidos via curl (Convites & acessos)
|
||||
|
||||
1. Rode `bun run dev:bun` (ou `pnpm dev` se preferir Node) e autentique-se em `http://localhost:3000/login` usando `admin@sistema.dev / admin123`.
|
||||
1. Rode `bun run dev:bun` (ou `bun run dev` se preferir Node) e autentique-se em `http://localhost:3000/login` usando `admin@sistema.dev / admin123`.
|
||||
2. Copie o valor do cookie `BETTER_AUTH_SESSION` e exporte no shell: `export COOKIE="BETTER_AUTH_SESSION=<valor>"`.
|
||||
|
||||
### Usuários
|
||||
|
|
@ -140,11 +140,11 @@ curl -i -X PATCH http://localhost:3000/api/admin/invites/$INVITE_ID \
|
|||
### Build local
|
||||
|
||||
```bash
|
||||
corepack enable && corepack prepare pnpm@10.20.0 --activate
|
||||
pnpm -C apps/desktop install
|
||||
bun install
|
||||
bun install --cwd apps/desktop
|
||||
VITE_APP_URL=http://localhost:3000 \
|
||||
VITE_API_BASE_URL=http://localhost:3000 \
|
||||
pnpm -C apps/desktop tauri build
|
||||
bun run --cwd apps/desktop tauri build
|
||||
```
|
||||
|
||||
Artefatos: `apps/desktop/src-tauri/target/release/bundle/`.
|
||||
|
|
@ -163,11 +163,11 @@ img.save("icons/icon.ico", sizes=[(16,16),(24,24),(32,32),(48,48),(64,64),(128,1
|
|||
PY
|
||||
```
|
||||
|
||||
- Depois de regerar `icon.ico`, faça o commit e rode novamente `pnpm -C apps/desktop tauri build` para empacotar o instalador com o ícone correto.
|
||||
- Depois de regerar `icon.ico`, faça o commit e rode novamente `bun run --cwd apps/desktop tauri build` para empacotar o instalador com o ícone correto.
|
||||
|
||||
### Atualizações OTA
|
||||
|
||||
1. Gere chaves (`pnpm tauri signer generate`).
|
||||
1. Gere chaves (`bun run --cwd apps/desktop tauri signer generate`).
|
||||
2. Defina `TAURI_SIGNING_PRIVATE_KEY` (+ password) no ambiente de build.
|
||||
3. Publique os pacotes e um `latest.json` em release GitHub.
|
||||
4. O app verifica ao iniciar e pelo botão “Verificar atualizações”.
|
||||
|
|
@ -176,9 +176,9 @@ PY
|
|||
|
||||
| Sintoma | Causa | Correção |
|
||||
| --- | --- | --- |
|
||||
| `ERR_PNPM_OUTDATED_LOCKFILE` no pipeline | Dependências do desktop alteradas sem atualizar `pnpm-lock.yaml` | Rodar `pnpm install` na raiz e commitar o lockfile. |
|
||||
| `ERR_BUN_LOCKFILE_OUTDATED` no pipeline | Dependências do desktop alteradas sem atualizar o `bun.lock` | Rodar `bun install` (raiz e `apps/desktop`) e commitar o lockfile. |
|
||||
| Prisma falha com `P2021` / tabelas Better Auth inexistentes | CLI leu `.env` da raiz (produção) | Usar `DATABASE_URL="file:./prisma/db.dev.sqlite"` nos comandos. |
|
||||
| Vitest trava em modo watch | Script `pnpm test` sem `--run` e CI detecta TTY | Ajustado para `vitest --run --passWithNoTests`. Localmente, use `pnpm test -- --watch` se quiser. |
|
||||
| Vitest trava em modo watch | Script `bun test` sem `--run` e CI detecta TTY | Ajustado para `vitest --run --passWithNoTests`. Localmente, use `bun test -- --watch` se quiser. |
|
||||
| Desktop não encontra updater | Falta `latest.json` ou assinatura inválida | Publicar release com `*.sig` e `latest.json` apontando para os pacotes corretos. |
|
||||
|
||||
## Cronômetro dos tickets
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ Observação: o CI já força `docker service update --force` após `stack deplo
|
|||
|
||||
## App Desktop (Tauri)
|
||||
- Build local por SO:
|
||||
- Linux: `pnpm -C apps/desktop tauri build`
|
||||
- Linux: `bun run --cwd apps/desktop tauri build`
|
||||
- Windows/macOS: executar o mesmo comando no respectivo sistema (o Tauri gera .msi/.dmg/.app).
|
||||
- Por padrão, o executável em modo release usa `https://tickets.esdrasrenan.com.br` como `APP_URL` e `API_BASE_URL`.
|
||||
- Para customizar, crie `apps/desktop/.env` com `VITE_APP_URL` e `VITE_API_BASE_URL`.
|
||||
|
|
@ -203,7 +203,7 @@ docker run --rm -it \
|
|||
-w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL=https://convex.esdrasrenan.com.br \
|
||||
-e CONVEX_SELF_HOSTED_ADMIN_KEY='COLE_A_CHAVE_AQUI' \
|
||||
node:20-bullseye bash -lc "corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm install --frozen-lockfile --prod=false && pnpm exec convex deploy"
|
||||
oven/bun:1 bash -lc "bun install --frozen-lockfile && bun x convex deploy"
|
||||
```
|
||||
|
||||
Observação
|
||||
|
|
@ -231,10 +231,10 @@ docker run --rm -it \
|
|||
-v /srv/apps/sistema:/app -w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL=https://convex.esdrasrenan.com.br \
|
||||
-e CONVEX_SELF_HOSTED_ADMIN_KEY='COLE_A_CHAVE' \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
oven/bun:1 bash -lc "set -euo pipefail; bun install --frozen-lockfile; \
|
||||
unset CONVEX_DEPLOYMENT; \
|
||||
pnpm exec convex env set MACHINE_PROVISIONING_SECRET 'seu-hex' -y; \
|
||||
pnpm exec convex env list"
|
||||
bun x convex env set MACHINE_PROVISIONING_SECRET 'seu-hex' -y; \
|
||||
bun x convex env list"
|
||||
```
|
||||
|
||||
### Smoke test pós‑deploy (CI)
|
||||
|
|
@ -270,7 +270,7 @@ cd /srv/apps/sistema
|
|||
git pull
|
||||
docker stack deploy --with-registry-auth -c stack.yml sistema
|
||||
```
|
||||
- Convex (functions): repetir o container `node:20` com `pnpm exec convex deploy` (ver seção Convex).
|
||||
- Convex (functions): repetir o container `oven/bun:1` com `bun x convex deploy` (ver seção Convex).
|
||||
- Reiniciar serviços sem alterar o stack: `docker service update --force sistema_web` (ou `sistema_convex_backend`).
|
||||
|
||||
## CI/CD (GitHub Actions + runner self‑hosted)
|
||||
|
|
@ -281,8 +281,8 @@ docker stack deploy --with-registry-auth -c stack.yml sistema
|
|||
- `cd /srv/apps/sistema && git pull`
|
||||
- `docker stack deploy --with-registry-auth -c stack.yml sistema`
|
||||
3. Adicionar job `convex_deploy` (opcional) no mesmo runner:
|
||||
- Executar container `node:20-bullseye` com envs `CONVEX_SELF_HOSTED_URL` e `CONVEX_SELF_HOSTED_ADMIN_KEY` (secrets do GitHub)
|
||||
- Rodar `pnpm exec convex deploy`
|
||||
- Executar container `oven/bun:1` com envs `CONVEX_SELF_HOSTED_URL` e `CONVEX_SELF_HOSTED_ADMIN_KEY` (secrets do GitHub)
|
||||
- Rodar `bun x convex deploy`
|
||||
|
||||
Secrets necessários no GitHub (Repo → Settings → Secrets and variables → Actions)
|
||||
- `CONVEX_SELF_HOSTED_URL` = `https://convex.esdrasrenan.com.br`
|
||||
|
|
@ -306,12 +306,12 @@ Benefícios
|
|||
- DNS/Traefik incorretos → confirmar labels/hostnames e DNS.
|
||||
- `MAILER_SENDER_EMAIL` com erro de parsing:
|
||||
- Adicionar aspas no `.env`.
|
||||
- `pnpm` reclama de workspace:
|
||||
- O `pnpm-workspace.yaml` inclui `apps/desktop`. No deploy do web isso não impacta pois usamos filtros/paths do projeto. Se preferir isolar, ajuste para apenas `.`.
|
||||
- Lockfile desatualizado:
|
||||
- Rode `bun install --frozen-lockfile` sempre que ajustar dependências para manter o `bun.lock` consistente em produção.
|
||||
- Portainer erro de bind relativo:
|
||||
- Usar caminho absoluto `/srv/apps/sistema:/app` no stack (feito).
|
||||
- Prisma CLI “not found”:
|
||||
- Instalar devDependencies no build (`NPM_CONFIG_PRODUCTION=false` e `pnpm install --prod=false`).
|
||||
- Execute `bun install` no container de build garantindo a instalação das devDependencies (Prisma CLI fica disponível via `bun x prisma ...`).
|
||||
- Convex CLI pedindo interação:
|
||||
- Não usar CLI em produção; usamos imagem oficial `convex-backend` e `convex deploy` via container transitório com Admin Key.
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
- [x] Botão de reabrir disponível para solicitante/equipe até o fim do prazo; timeline registra `TICKET_REOPENED`.
|
||||
- [x] Chat em tempo real incorporado ao detalhe do ticket (listagem live, envio, leitura automática, bloqueio pós-prazo).
|
||||
- [x] Formulários dinâmicos para admissão/desligamento com escopo e permissões por empresa/usuário; `create` envia `formTemplate` e `customFields`.
|
||||
- [x] Corrigidos mocks/tipagens das rotinas de resolução e reabertura (`resolveTicketHandler`, `reopenTicketHandler`) garantindo `pnpm lint`, `pnpm test` e `pnpm build` verdes.
|
||||
- [x] Corrigidos mocks/tipagens das rotinas de resolução e reabertura (`resolveTicketHandler`, `reopenTicketHandler`) garantindo `bun run lint`, `bun test` e `bun run build:bun` verdes.
|
||||
- [x] Atualizado schema/tipagens (`TicketWithDetails`, `ChartTooltipContent`) e dashboards CSAT para suportar reabertura com prazos e tooltips formatados.
|
||||
- [x] Reatribuição de chamado sem motivo obrigatório; comentário interno só é criado quando o motivo é preenchido.
|
||||
- [x] Botão “Novo dispositivo” reutiliza o mesmo primário padrão do shadcn usado em “Nova empresa”, mantendo a identidade visual.
|
||||
|
|
|
|||
|
|
@ -16,31 +16,31 @@ export CONVEX_SELF_HOSTED_ADMIN_KEY='convex-self-hosted|011c148069bd37e4a3f1c10b
|
|||
docker run --rm -it \
|
||||
-v /srv/apps/sistema:/app -w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL -e CONVEX_SELF_HOSTED_ADMIN_KEY \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; \
|
||||
corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
oven/bun:1 bash -lc "set -euo pipefail; \
|
||||
bun install --frozen-lockfile; \
|
||||
unset CONVEX_DEPLOYMENT; \
|
||||
pnpm exec convex env set MACHINE_PROVISIONING_SECRET '71daa9ef54cb224547e378f8121ca898b614446c142a132f73c2221b4d53d7d6' -y; \
|
||||
pnpm exec convex env list"
|
||||
bun x convex env set MACHINE_PROVISIONING_SECRET '71daa9ef54cb224547e378f8121ca898b614446c142a132f73c2221b4d53d7d6' -y; \
|
||||
bun x convex env list"
|
||||
|
||||
3) (Opcional) Definir MACHINE_TOKEN_TTL_MS (padrão 30 dias)
|
||||
docker run --rm -it \
|
||||
-v /srv/apps/sistema:/app -w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL -e CONVEX_SELF_HOSTED_ADMIN_KEY \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; \
|
||||
corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
oven/bun:1 bash -lc "set -euo pipefail; \
|
||||
bun install --frozen-lockfile; \
|
||||
unset CONVEX_DEPLOYMENT; \
|
||||
pnpm exec convex env set MACHINE_TOKEN_TTL_MS '2592000000' -y; \
|
||||
pnpm exec convex env list"
|
||||
bun x convex env set MACHINE_TOKEN_TTL_MS '2592000000' -y; \
|
||||
bun x convex env list"
|
||||
|
||||
4) (Opcional) Definir FLEET_SYNC_SECRET
|
||||
docker run --rm -it \
|
||||
-v /srv/apps/sistema:/app -w /app \
|
||||
-e CONVEX_SELF_HOSTED_URL -e CONVEX_SELF_HOSTED_ADMIN_KEY \
|
||||
node:20-bullseye bash -lc "set -euo pipefail; \
|
||||
corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm i --frozen-lockfile --prod=false; \
|
||||
oven/bun:1 bash -lc "set -euo pipefail; \
|
||||
bun install --frozen-lockfile; \
|
||||
unset CONVEX_DEPLOYMENT; \
|
||||
pnpm exec convex env set FLEET_SYNC_SECRET '' -y; \
|
||||
pnpm exec convex env list"
|
||||
bun x convex env set FLEET_SYNC_SECRET '' -y; \
|
||||
bun x convex env list"
|
||||
|
||||
5) Testar registro (gera machineToken) — substitua o hostname se quiser
|
||||
HOST="vm-teste-$(date +%s)"; \
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@ Resultado: front/back sobem com o novo código sem editar o stack a cada release
|
|||
|
||||
- Mount fixo: `/home/renan/apps/sistema.current:/app` (não interpolar APP_DIR).
|
||||
- Comando inline (sem script), com migrations na subida:
|
||||
- `command: ["bash","-lc","corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm exec prisma migrate deploy && pnpm start -p 3000"]`
|
||||
- **Se você optar por usar `/app/scripts/start-web.sh`** (como no workflow atual), ele já garante `pnpm@10.20.0` via Corepack/NPM antes de rodar Prisma/Next. Certifique-se de copiar esse arquivo para o build publicado; sem ele, a task cai com `pnpm: command not found`.
|
||||
- `command: ["bash","-lc","bun install --frozen-lockfile && bun x prisma migrate deploy && bun run start:bun"]`
|
||||
- **Se você optar por usar `/app/scripts/start-web.sh`** (como no workflow atual), garanta que o script execute `bun install` antes de rodar Prisma/Next. Certifique-se de copiar esse arquivo para o build publicado; sem ele, a task cai com `bun: command not found`.
|
||||
- Env obrigatórias (URLs válidas):
|
||||
- `DATABASE_URL=file:/app/data/db.sqlite`
|
||||
- `NEXT_PUBLIC_CONVEX_URL=http://sistema_convex_backend:3210`
|
||||
|
|
@ -43,7 +43,7 @@ APP_DIR=/home/renan/apps/sistema.current
|
|||
docker run --rm -it \
|
||||
-e DATABASE_URL=file:/app/data/db.sqlite \
|
||||
-v "$APP_DIR:/app" -v sistema_sistema_db:/app/data -w /app \
|
||||
node:20-bullseye bash -lc 'corepack enable; corepack prepare pnpm@10.20.0 --activate; pnpm i --no-frozen-lockfile; pnpm exec prisma migrate status'
|
||||
oven/bun:1 bash -lc "bun install --frozen-lockfile && bun x prisma migrate status"
|
||||
```
|
||||
|
||||
## Diagnóstico rápido
|
||||
|
|
@ -74,7 +74,7 @@ Causas encontradas:
|
|||
- Correção determinística:
|
||||
- `docker service scale sistema_web=0`
|
||||
- `prisma migrate resolve --rolled-back 20251015223259_add_company_provisioning_code` no volume `sistema_sistema_db` (comando acima em "Prisma/SQLite do stack").
|
||||
- `pnpm exec prisma migrate deploy`
|
||||
- `bun x prisma migrate deploy`
|
||||
- `docker service scale sistema_web=1` (ou `update --force`).
|
||||
|
||||
3) Rollback por script ausente (`/app/scripts/start-web.sh`).
|
||||
|
|
@ -99,7 +99,7 @@ Causas encontradas:
|
|||
docker service update \
|
||||
--mount-rm target=/app \
|
||||
--mount-add type=bind,src=/home/renan/apps/sistema.current,dst=/app \
|
||||
--args 'bash -lc "corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm exec prisma migrate deploy && pnpm start -p 3000"' \
|
||||
--args 'bash -lc "bun install --frozen-lockfile && bun x prisma migrate deploy && bun run start:bun"' \
|
||||
sistema_web
|
||||
```
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ APP_DIR=/home/renan/apps/sistema.current
|
|||
docker service scale sistema_web=0
|
||||
docker run --rm -it -e DATABASE_URL=file:/app/data/db.sqlite \
|
||||
-v "$APP_DIR:/app" -v sistema_sistema_db:/app/data -w /app \
|
||||
node:20-bullseye bash -lc 'corepack enable; corepack prepare pnpm@10.20.0 --activate; pnpm i --no-frozen-lockfile; pnpm exec prisma migrate resolve --rolled-back 20251015223259_add_company_provisioning_code; pnpm exec prisma migrate deploy'
|
||||
oven/bun:1 bash -lc "bun install --frozen-lockfile && bun x prisma migrate resolve --rolled-back 20251015223259_add_company_provisioning_code && bun x prisma migrate deploy"
|
||||
docker service scale sistema_web=1
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ Legenda: ✅ concluído · 🔄 em andamento · ⏳ a fazer.
|
|||
- `VITE_APP_URL` → aponta para a interface Next (padrao produção: `https://tickets.esdrasrenan.com.br`).
|
||||
- `VITE_API_BASE_URL` → base usada nas chamadas REST (`/api/machines/*`), normalmente igual ao `APP_URL`.
|
||||
- Após provisionar ou encontrar token válido, o agente dispara `/machines/handshake?token=...` que autentica a dispositivo no Better Auth, devolve cookies e redireciona para a UI. Em produção, mantemos a navegação top‑level pelo handshake para garantir a aceitação de cookies na WebView (mesmo quando `POST /api/machines/sessions` é tentado antes).
|
||||
- `apps/desktop/src-tauri/tauri.conf.json` ajustado para rodar `pnpm run dev/build`, servir `dist/` e abrir janela 1100x720.
|
||||
- `apps/desktop/src-tauri/tauri.conf.json` ajustado para rodar `bun run dev/build`, servir `dist/` e abrir janela 1100x720.
|
||||
- Novas tabelas Convex: `machines` (fingerprint, heartbeat, vínculo com AuthUser) e `machineTokens` (hash + TTL).
|
||||
- Novos endpoints Next:
|
||||
- `POST /api/machines/register` — provisiona dispositivo, gera token e usuário Better Auth (role `machine`).
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ Conteúdo mantido como registro. Para operação e deploy atuais, ver `docs/oper
|
|||
- `.github/workflows/ci-cd-web-desktop.yml` — pipeline de deploy web + desktop + deploy do Convex.
|
||||
- `docs/OPERACAO-PRODUCAO.md` — runbook de operação (deploy, seeds, CI/CD, troubleshooting).
|
||||
- `docs/SETUP-HISTORICO.md` — este histórico.
|
||||
- `pnpm-workspace.yaml` — inclui `packages: ['.', 'apps/desktop']` para permitir comandos e builds do desktop. No deploy do web usamos filtros/paths; se preferir isolar, volte para apenas `'.'`.
|
||||
- `scripts/deploy-from-git.sh` — fallback de deploy pull‑based na VPS (sem Actions).
|
||||
|
||||
## Gestão de .env
|
||||
|
|
@ -35,7 +34,7 @@ Conteúdo mantido como registro. Para operação e deploy atuais, ver `docs/oper
|
|||
## Convex self‑hosted
|
||||
- Evitamos `convex dev` no Swarm (CLI interativo). Adotada imagem oficial `ghcr.io/get-convex/convex-backend`.
|
||||
- Geração de Admin Key dentro do container: `./generate_admin_key.sh`.
|
||||
- Publicação de functions com `pnpm exec convex deploy` via container Node (`CONVEX_SELF_HOSTED_URL` + `CONVEX_SELF_HOSTED_ADMIN_KEY`).
|
||||
- Publicação de functions com `bun x convex deploy` via container transitório (`CONVEX_SELF_HOSTED_URL` + `CONVEX_SELF_HOSTED_ADMIN_KEY`).
|
||||
- Adicionado `convex_dashboard` opcional (DNS `convex-admin.*`).
|
||||
|
||||
## CI/CD (GitHub Actions)
|
||||
|
|
@ -59,7 +58,7 @@ Conteúdo mantido como registro. Para operação e deploy atuais, ver `docs/oper
|
|||
|
||||
4) `prisma: not found` no build
|
||||
- Causa: instalar só prod deps.
|
||||
- Solução: `NPM_CONFIG_PRODUCTION=false` e `pnpm install --prod=false` no container de build.
|
||||
- Solução: garantir `bun install` completo (não apenas deps de produção) no container de build.
|
||||
|
||||
5) Lockfile/Workspace quebrando CI
|
||||
- Causa: conflito de versões quando o desktop entrou no workspace.
|
||||
|
|
@ -80,14 +79,14 @@ Conteúdo mantido como registro. Para operação e deploy atuais, ver `docs/oper
|
|||
## Checklists de operação
|
||||
- Deploy manual (pull‑based): `bash /srv/apps/sistema/scripts/deploy-from-git.sh`.
|
||||
- Deploy via Actions: commit em `main`.
|
||||
- Seeds: `https://tickets.../dev/seed` e `docker exec ... pnpm auth:seed`.
|
||||
- Seeds: `https://tickets.../dev/seed` e `docker exec ... bun run auth:seed`.
|
||||
- Verificação: `docker stack services sistema` e logs dos serviços.
|
||||
|
||||
## Melhorias futuras
|
||||
- Rodar job de "Detect changes" também em runner self‑hosted (zero minutos GitHub‑hosted).
|
||||
- Fixar versão do `convex-backend` (ao invés de `latest`) para releases mais controladas.
|
||||
- Substituir bind‑mount por imagens construídas no CI (tempo de deploy menor, reprodutibilidade).
|
||||
- Adicionar cache de dependências pnpm no container de build.
|
||||
- Adicionar cache das dependências do Bun no container de build.
|
||||
|
||||
## TODOs (próximos técnicos)
|
||||
|
||||
|
|
@ -95,7 +94,7 @@ Conteúdo mantido como registro. Para operação e deploy atuais, ver `docs/oper
|
|||
- Sintoma: Tipos gerados do Prisma não exibem os campos `isAvulso` e `contractedHoursPerMonth` em `CompanyCreateInput`/`CompanyUpdateInput`.
|
||||
- Temporário: rotas `src/app/api/admin/companies/[id]/route.ts` e mapeamento em `src/app/admin/companies/page.tsx` possuem guardas/casts para compilar.
|
||||
- Ação:
|
||||
1. Rodar `pnpm prisma:generate` no mesmo ambiente de build/execução (VPS e local) para regenerar o client.
|
||||
1. Rodar `bun run prisma:generate` no mesmo ambiente de build/execução (VPS e local) para regenerar o client.
|
||||
2. Confirmar que os campos aparecem nos tipos gerados.
|
||||
3. Remover casts e `eslint-disable` do update; reintroduzir campos no `create` se desejado (com tipagem estrita).
|
||||
4. Se ainda não existirem fisicamente na base, aplicar migração que adicione os campos ao modelo `Company`.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Documento de referência sobre o estado atual do sistema (web + desktop), melhor
|
|||
|
||||
## 1. Panorama
|
||||
|
||||
- **Web (Next.js 15 + Convex)**: build limpo (`pnpm build`), lint sem avisos e testes estáveis (Vitest em modo não interativo).
|
||||
- **Web (Next.js 15 + Convex)**: build limpo (`bun run build:bun`), lint sem avisos e testes estáveis (Vitest em modo não interativo).
|
||||
- **Desktop (Tauri)**: fluxo de provisionamento e heartbeat operacional; inventário consolidado com coleta multi-plataforma; atualizações OTA suportadas.
|
||||
- **CI**: workflow `Quality Checks` roda lint/test/build em todo push/PR na `main`; pipeline de deploy (`ci-cd-web-desktop.yml`) permanece responsável por sincronizar com a VPS.
|
||||
- **Infra**: deploy documentado no runbook (Swarm com symlink `sistema.current`). Migrações Prisma e variáveis críticas mapeadas.
|
||||
|
|
@ -19,7 +19,7 @@ Documento de referência sobre o estado atual do sistema (web + desktop), melhor
|
|||
| **Upgrade para Next.js 16 beta** | Dependências atualizadas (`next@16.0.0-beta.0`, `eslint-config-next@16.0.0-beta.0`), cache de filesystem do Turbopack habilitado, scripts de lint/test/build ajustados ao novo fluxo. | Projeto pronto para validar as novidades do Next 16 (React Compiler opcional, prefetch incremental, etc.); builds e testes já rodando com sucesso. |
|
||||
| **Posture / inventário** | Type guards e normalização de métricas SMART/serviços (`convex/machines.ts`). | Reduziu `any`, melhorou detecção de alertas e consistência do metadata. |
|
||||
| **Docs** | Revisão completa de `docs/DEV.md`, novo `STATUS-2025-10-16.md`, estrutura uniforme e casos de erro registrados. | Documentação enxuta e atualizada, com trilhas claras para DEV/CI/Deploy. |
|
||||
| **Testes no CI** | Novo workflow `.github/workflows/quality-checks.yml` e script `pnpm test` em modo não-interativo. | Previne “travamentos” e garante checagens de qualidade automáticas. |
|
||||
| **Testes no CI** | Novo workflow `.github/workflows/quality-checks.yml` e script `bun test` em modo não-interativo. | Previne “travamentos” e garante checagens de qualidade automáticas. |
|
||||
|
||||
## 3. Pontos de atenção (curto prazo)
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ Documento de referência sobre o estado atual do sistema (web + desktop), melhor
|
|||
| Cenário | Sintoma | Como resolver |
|
||||
| --- | --- | --- |
|
||||
| Token de dispositivo revogado | POST `/api/machines/sessions` retorna 401 e desktop volta ao onboarding | Reprovisionar pela UI do agente; garantir que `machineToken` foi atualizado. |
|
||||
| Falha de heartbeat | Logs com `Falha ao registrar heartbeat` + status 500 | Verificar `NEXT_PUBLIC_CONVEX_URL` e conectividade. Roda `pnpm convext:dev` em DEV para confirmar schema. |
|
||||
| Falha de heartbeat | Logs com `Falha ao registrar heartbeat` + status 500 | Verificar `NEXT_PUBLIC_CONVEX_URL` e conectividade. Rode `bun run convex:dev:bun` em DEV para confirmar schema. |
|
||||
| Updater sem atualização | Desktop fica em “Procurando atualização” indefinidamente | Confirmar release publicado com `latest.json` apontando para URLs públicas do bundle e assinaturas válidas. |
|
||||
|
||||
## 6. Próximos passos imediatos
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
Guia rápido para gerar instaladores do app desktop em cada sistema operacional.
|
||||
|
||||
## Pré‑requisitos
|
||||
- Node.js 20+ e pnpm (Corepack habilitado):
|
||||
- `corepack enable && corepack prepare pnpm@10.20.0 --activate`
|
||||
- Bun >= 1.3 instalado e disponível no `PATH`.
|
||||
- Node.js 20+ (recomendado) caso precise executar scripts auxiliares em Node.
|
||||
- Rust toolchain (stable) instalado.
|
||||
- Dependências nativas por SO:
|
||||
- Linux (Debian/Ubuntu):
|
||||
|
|
@ -27,11 +27,11 @@ Guia rápido para gerar instaladores do app desktop em cada sistema operacional.
|
|||
## Comandos de build
|
||||
- Linux/macOS/Windows (rodar no próprio sistema):
|
||||
```bash
|
||||
pnpm -C apps/desktop tauri build
|
||||
bun run --cwd apps/desktop tauri build
|
||||
```
|
||||
- Apenas frontend (Vite):
|
||||
```bash
|
||||
pnpm -C apps/desktop build
|
||||
bun run --cwd apps/desktop build
|
||||
```
|
||||
|
||||
Saída de artefatos: `apps/desktop/src-tauri/target/release/bundle/`.
|
||||
|
|
@ -40,9 +40,9 @@ Saída de artefatos: `apps/desktop/src-tauri/target/release/bundle/`.
|
|||
- Primeira compilação do Rust pode demorar (download de crates e linkedição).
|
||||
- Se o link‑editor for lento no Linux, considere instalar `lld` e usar:
|
||||
```bash
|
||||
RUSTFLAGS="-Clink-arg=-fuse-ld=lld" pnpm -C apps/desktop tauri build
|
||||
RUSTFLAGS="-Clink-arg=-fuse-ld=lld" bun run --cwd apps/desktop tauri build
|
||||
```
|
||||
- Para logs detalhados em dev, rode `pnpm -C apps/desktop tauri dev`.
|
||||
- Para logs detalhados em dev, rode `bun run --cwd apps/desktop tauri dev`.
|
||||
|
||||
## Diagnóstico de sessão (Desktop → Portal)
|
||||
- Durante testes, navegue até `/portal/debug` (o desktop pode redirecionar automaticamente) para ver:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Este guia consolida tudo o que precisa ser feito para que o auto-update do Tauri
|
|||
|
||||
1. **Gerar o par de chaves** (Linux ou WSL)
|
||||
```bash
|
||||
pnpm -C apps/desktop tauri signer generate -w ~/.tauri/raven.key
|
||||
bun run --cwd apps/desktop tauri signer generate -w ~/.tauri/raven.key
|
||||
```
|
||||
- Privada: `~/.tauri/raven.key` (nunca compartilhar)
|
||||
- Pública: `~/.tauri/raven.key.pub` (cole em `tauri.conf.json > plugins.updater.pubkey`)
|
||||
|
|
@ -39,7 +39,7 @@ Este guia consolida tudo o que precisa ser feito para que o auto-update do Tauri
|
|||
|
||||
2. **Build do front (gera `dist/` para o Tauri)**
|
||||
```bash
|
||||
pnpm -C apps/desktop build
|
||||
bun run --cwd apps/desktop build
|
||||
```
|
||||
|
||||
3. **Exportar variáveis do assinador** (no mesmo shell em que vai buildar):
|
||||
|
|
@ -51,7 +51,7 @@ Este guia consolida tudo o que precisa ser feito para que o auto-update do Tauri
|
|||
|
||||
4. **Gerar os instaladores + `.sig`**
|
||||
```bash
|
||||
pnpm -C apps/desktop tauri build
|
||||
bun run --cwd apps/desktop tauri build
|
||||
```
|
||||
Os artefatos ficam em `apps/desktop/src-tauri/target/release/bundle/`:
|
||||
|
||||
|
|
@ -102,9 +102,9 @@ Este guia consolida tudo o que precisa ser feito para que o auto-update do Tauri
|
|||
|
||||
## 5. Resumo rápido
|
||||
|
||||
1. `pnpm -C apps/desktop build`
|
||||
1. `bun run --cwd apps/desktop build`
|
||||
2. `export TAURI_SIGNING_PRIVATE_KEY=...` / `export TAURI_SIGNING_PRIVATE_KEY_PASSWORD=...`
|
||||
3. `pnpm -C apps/desktop tauri build`
|
||||
3. `bun run --cwd apps/desktop tauri build`
|
||||
4. Upload dos bundles + `.sig` → atualizar `latest.json`
|
||||
5. Testar o instalador antigo para garantir que atualiza sozinho
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ VITE_API_BASE_URL=https://tickets.esdrasrenan.com.br
|
|||
2) Rodar dev:
|
||||
```
|
||||
cd apps\desktop
|
||||
pnpm tauri dev
|
||||
bun run tauri dev
|
||||
```
|
||||
3) Provisionar:
|
||||
- Usar o botão de olho para conferir o segredo, sem espaços.
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ Este documento resume a configuração atual de testes e como aproveitá-la para
|
|||
|
||||
## Comandos principais
|
||||
|
||||
- `pnpm test` → roda a suíte unitária em ambiente Node/JSdom.
|
||||
- `pnpm test:browser` → executa os testes de navegador via Playwright (Chromium headless).
|
||||
- `pnpm test:all` → executa as duas suítes de uma vez (requer Playwright instalado).
|
||||
- `bun test` → roda a suíte unitária em ambiente Node/JSdom.
|
||||
- `bun run test:browser` → executa os testes de navegador via Playwright (Chromium headless).
|
||||
- `bun run test:all` → executa as duas suítes de uma vez (requer Playwright instalado).
|
||||
|
||||
> Sempre que adicionar novos testes, priorize mantê-los compatíveis com esses dois ambientes.
|
||||
|
||||
|
|
@ -15,16 +15,16 @@ Este documento resume a configuração atual de testes e como aproveitá-la para
|
|||
1. Dependências JavaScript já estão listadas em `package.json` (`vitest`, `@vitest/browser-playwright`, `playwright`, `jsdom`, etc.).
|
||||
2. Baixe os binários do Playwright uma vez:
|
||||
```bash
|
||||
pnpm exec playwright install chromium
|
||||
bun x playwright install chromium
|
||||
```
|
||||
3. Em ambientes Linux “puros”, instale as bibliotecas de sistema recomendadas:
|
||||
```bash
|
||||
sudo apt-get install libnspr4 libnss3 libasound2t64
|
||||
# ou
|
||||
sudo pnpm exec playwright install-deps
|
||||
sudo bun x playwright install-deps
|
||||
```
|
||||
|
||||
Se o Playwright avisar sobre dependências ausentes ao rodar `pnpm test:browser`, instale-as e repita o comando.
|
||||
Se o Playwright avisar sobre dependências ausentes ao rodar `bun run test:browser`, instale-as e repita o comando.
|
||||
|
||||
## Estrutura de setup
|
||||
|
||||
|
|
@ -59,8 +59,8 @@ setupFiles: process.env.VITEST_BROWSER
|
|||
|
||||
## Fluxo sugerido no dia a dia
|
||||
|
||||
1. Rode `pnpm test` localmente antes de abrir PRs.
|
||||
2. Para alterações visuais/lógicas que afetem UI, adicione/atualize um teste em `tests/browser` e valide com `pnpm test:browser`.
|
||||
1. Rode `bun test` localmente antes de abrir PRs.
|
||||
2. Para alterações visuais/lógicas que afetem UI, adicione/atualize um teste em `tests/browser` e valide com `bun run test:browser`.
|
||||
3. Se novos snapshots forem criados ou alterados, confirme visualmente e inclua os arquivos em commit.
|
||||
4. Para tarefas de automação futuras (por exemplo, smoke-tests que renderizam componentes críticos), utilize a mesma estrutura:
|
||||
- Setup mínimo no `tests/setup.browser.ts`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue