chore: update docs and configs
This commit is contained in:
parent
7718f77d4c
commit
1079111de2
23 changed files with 102 additions and 10467 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue