chore: update docs and configs
This commit is contained in:
parent
7718f77d4c
commit
1079111de2
23 changed files with 102 additions and 10467 deletions
|
|
@ -16,7 +16,7 @@ BETTER_AUTH_SECRET=change-me
|
|||
BETTER_AUTH_URL=http://localhost:3000
|
||||
|
||||
# Banco de dados (Prisma)
|
||||
DATABASE_URL=file:./prisma/db.sqlite
|
||||
DATABASE_URL=file:./prisma/db.dev.sqlite
|
||||
|
||||
# Seeds automáticos (Better Auth)
|
||||
# Por padrão (true), garantindo apenas existência dos usuários padrão sem resetar senhas
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Aplicação **Next.js 16 (App Router)** com **React 19**, **Convex** e **Better
|
|||
|
||||
- Bun >= 1.3 (recomendado 1.3.1). Após instalar via script oficial, adicione `export PATH="$HOME/.bun/bin:$PATH"` ao seu shell (ex.: `.bashrc`) para ter `bun` disponível globalmente.
|
||||
- Node.js >= 20 (necessário para ferramentas auxiliares como Prisma CLI e Next.js em modo fallback).
|
||||
- pnpm >= 10 (opcional, usado apenas para fluxos do app desktop/Tauri ou como plano B).
|
||||
- CLI do Convex (`bunx convex dev` instalará automaticamente no primeiro uso, se ainda não estiver presente).
|
||||
|
||||
## Configuração rápida
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@ bun run build:bun
|
|||
- Produção: `https://tickets.esdrasrenan.com.br`
|
||||
- DEV: configure `apps/desktop/.env` (exemplo fornecido).
|
||||
- Comandos:
|
||||
- `pnpm -C apps/desktop tauri dev` — desenvolvimento (porta 1420).
|
||||
- `pnpm -C apps/desktop tauri build` — gera instaladores.
|
||||
- `bun run --cwd apps/desktop tauri dev` — desenvolvimento (porta 1420).
|
||||
- `bun run --cwd apps/desktop tauri build` — gera instaladores.
|
||||
- **Fluxo do agente**:
|
||||
1. Coleta perfil da dispositivo (hostname, OS, MAC, seriais, métricas).
|
||||
2. Provisiona via `POST /api/machines/register` usando `MACHINE_PROVISIONING_SECRET`, informando perfil de acesso (Colaborador/Gestor) + dados do colaborador.
|
||||
|
|
@ -92,7 +92,7 @@ bun run build:bun
|
|||
- Executar `bun test -- --watch` apenas quando precisar de modo interativo.
|
||||
- **Build**: `bun run build:bun` (`next build --turbopack`).
|
||||
- **CI**: falhas mais comuns
|
||||
- `ERR_PNPM_OUTDATED_LOCKFILE`: mantenha `pnpm-lock.yaml` atualizado (principalmente após alterar dependências do desktop).
|
||||
- `ERR_BUN_LOCKFILE_OUTDATED`: confirme que o `bun.lock` foi regenerado (`bun install`) após alterar dependências, especialmente do app desktop.
|
||||
- Variáveis Better Auth ausentes (`BETTER_AUTH_SECRET`): definidas no workflow (`Quality Checks`).
|
||||
- Falha de host: confira `src/config/allowed-hosts.ts`; o middleware retorna 403 quando o domínio do Traefik não está listado.
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ bun run build:bun
|
|||
docker run --rm -it -e DATABASE_URL=file:/app/data/db.sqlite \
|
||||
-v /home/renan/apps/sistema.current:/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 <migration>; pnpm exec prisma migrate deploy'
|
||||
oven/bun:1 bash -lc "bun install --frozen-lockfile && bun x prisma migrate resolve --rolled-back <migration> && bun x prisma migrate deploy"
|
||||
docker service scale sistema_web=1
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ VITE_API_BASE_URL=
|
|||
## Comandos
|
||||
|
||||
- Dev (abre janela Tauri e Vite em 1420):
|
||||
- `pnpm -C apps/desktop tauri dev`
|
||||
- `bun run --cwd apps/desktop tauri dev`
|
||||
- Build frontend (somente Vite):
|
||||
- `pnpm -C apps/desktop build`
|
||||
- `bun run --cwd apps/desktop build`
|
||||
- Build executável (bundle):
|
||||
- `pnpm -C apps/desktop tauri build`
|
||||
- `bun run --cwd apps/desktop tauri build`
|
||||
|
||||
Saída dos pacotes: `apps/desktop/src-tauri/target/release/bundle/`.
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ Saída dos pacotes: `apps/desktop/src-tauri/target/release/bundle/`.
|
|||
|
||||
Build rápido e leve em dev:
|
||||
```bash
|
||||
pnpm -C apps/desktop tauri build --bundles nsis
|
||||
bun run --cwd apps/desktop tauri build --bundles nsis
|
||||
```
|
||||
|
||||
Assinatura do updater (opcional em dev):
|
||||
|
|
@ -56,7 +56,7 @@ Assinatura do updater (opcional em dev):
|
|||
$privB64 = '<COLE_SUA_CHAVE_PRIVADA_EM_BASE64>'
|
||||
$env:TAURI_SIGNING_PRIVATE_KEY = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($privB64))
|
||||
$env:TAURI_SIGNING_PRIVATE_KEY_PASSWORD = 'SENHA_AQUI'
|
||||
pnpm -C apps/desktop tauri build --bundles nsis
|
||||
bun run --cwd apps/desktop tauri build --bundles nsis
|
||||
```
|
||||
|
||||
## Pré‑requisitos Tauri
|
||||
|
|
|
|||
|
|
@ -159,10 +159,11 @@
|
|||
|
||||
## 5. Gerar chaves do updater Tauri
|
||||
|
||||
1. Em qualquer dispositivo com Node/pnpm (pode ser seu computador local):
|
||||
1. Em qualquer dispositivo com Bun instalado (pode ser seu computador local):
|
||||
```bash
|
||||
pnpm install
|
||||
pnpm --filter appsdesktop tauri signer generate
|
||||
bun install
|
||||
bun install --cwd apps/desktop
|
||||
bun run --cwd apps/desktop tauri signer generate
|
||||
```
|
||||
2. O comando gera:
|
||||
- Chave privada (`tauri.private.key`).
|
||||
|
|
@ -236,19 +237,16 @@
|
|||
|
||||
1. Baixe e instale os pré-requisitos:
|
||||
- Git para Windows.
|
||||
- Node.js 20 (instalação inclui npm).
|
||||
- Habilite o Corepack: abra o PowerShell como administrador e rode:
|
||||
```powershell
|
||||
corepack enable
|
||||
corepack prepare pnpm@latest --activate
|
||||
```
|
||||
- Bun 1.3+: instale via instalador oficial (`iwr https://bun.sh/install.ps1 | invoke-expression`) e garanta que `bun` esteja no `PATH`.
|
||||
- Node.js 20 (opcional, caso precise rodar scripts em Node durante o build).
|
||||
- Rust toolchain: https://rustup.rs (instale padrão).
|
||||
- Visual Studio Build Tools (C++ build tools) ou `Desktop development with C++`.
|
||||
- WebView2 Runtime (https://developer.microsoft.com/microsoft-edge/webview2/).
|
||||
2. Opcional: instale as dependências do Tauri rodando uma vez:
|
||||
```powershell
|
||||
pnpm install
|
||||
pnpm --filter appsdesktop tauri info
|
||||
bun install
|
||||
bun install --cwd apps/desktop
|
||||
bun run --cwd apps/desktop tauri info
|
||||
```
|
||||
3. No GitHub → *Settings* → *Actions* → *Runners* → *New self-hosted runner* → escolha Windows x64 e copie URL/token.
|
||||
4. Em `C:\actions-runner` (recomendado):
|
||||
|
|
@ -326,14 +324,10 @@
|
|||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup pnpm & Node
|
||||
uses: pnpm/action-setup@v4
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v1
|
||||
with:
|
||||
version: 9
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: pnpm
|
||||
bun-version: 1.3.1
|
||||
|
||||
- name: Deploy stack (Docker Swarm)
|
||||
working-directory: ${{ env.APP_DIR }}
|
||||
|
|
@ -350,20 +344,16 @@
|
|||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup pnpm & Node
|
||||
uses: pnpm/action-setup@v4
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v1
|
||||
with:
|
||||
version: 9
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: pnpm
|
||||
bun-version: 1.3.1
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install deps
|
||||
run: pnpm install --frozen-lockfile
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
- name: Build + Sign + Release (tauri-action)
|
||||
uses: tauri-apps/tauri-action@v0
|
||||
|
|
@ -389,7 +379,7 @@
|
|||
target: ${{ env.VPS_UPDATES_DIR }}
|
||||
overwrite: true
|
||||
```
|
||||
2. Ajuste o bloco de deploy conforme seu processo (por exemplo, use `pnpm build && pm2 restart` se não usar Docker ou substitua por chamada à API do Portainer caso faça o deploy por lá).
|
||||
2. Ajuste o bloco de deploy conforme seu processo (por exemplo, use `bun run build && pm2 restart` se não usar Docker ou substitua por chamada à API do Portainer caso faça o deploy por lá).
|
||||
3. Faça commit desse arquivo e suba para o GitHub (`git add .github/workflows/ci-cd-web-desktop.yml`, `git commit`, `git push`).
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
"version": "0.1.6",
|
||||
"identifier": "br.com.esdrasrenan.sistemadechamados",
|
||||
"build": {
|
||||
"beforeDevCommand": "pnpm run dev",
|
||||
"beforeDevCommand": "bun run dev",
|
||||
"devUrl": "http://localhost:1420",
|
||||
"beforeBuildCommand": "pnpm run build",
|
||||
"beforeBuildCommand": "bun run build",
|
||||
"frontendDist": "../dist"
|
||||
},
|
||||
"app": {
|
||||
|
|
|
|||
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`.
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
"test:all": "cross-env VITEST_BROWSER=true bunx vitest --run --passWithNoTests",
|
||||
"auth:seed": "node scripts/seed-auth.mjs",
|
||||
"queues:ensure": "node scripts/ensure-default-queues.mjs",
|
||||
"desktop:dev": "pnpm --filter appsdesktop tauri dev",
|
||||
"desktop:build": "pnpm --filter appsdesktop tauri build",
|
||||
"desktop:dev": "bun run --cwd apps/desktop tauri dev",
|
||||
"desktop:build": "bun run --cwd apps/desktop tauri build",
|
||||
"dev:bun": "cross-env NODE_ENV=development bun run --bun dev",
|
||||
"convex:dev:bun": "cross-env NODE_ENV=development bun run --bun convex:dev",
|
||||
"build:bun": "cross-env NODE_ENV=production bun run --bun build",
|
||||
|
|
|
|||
10341
pnpm-lock.yaml
generated
10341
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,12 +0,0 @@
|
|||
packages:
|
||||
- .
|
||||
- apps/desktop
|
||||
|
||||
ignoredBuiltDependencies:
|
||||
- '@prisma/client'
|
||||
- '@prisma/engines'
|
||||
- '@tailwindcss/oxide'
|
||||
- esbuild
|
||||
- prisma
|
||||
- sharp
|
||||
- unrs-resolver
|
||||
|
|
@ -42,7 +42,7 @@ if echo "$CHANGED" | grep -q '^convex/'; then
|
|||
-v "$APP_DIR":/app \
|
||||
-w /app \
|
||||
--env-file .ci.env \
|
||||
node:20-bullseye bash -lc "corepack enable && corepack prepare pnpm@10.20.0 --activate && pnpm install --no-frozen-lockfile --prod=false && pnpm exec convex deploy"
|
||||
oven/bun:1 bash -lc "bun install --frozen-lockfile && bun x convex deploy"
|
||||
else
|
||||
echo "[deploy] convex/ changed but .ci.env missing; skip Convex deploy"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ export async function POST(request: Request) {
|
|||
return NextResponse.json(
|
||||
{
|
||||
error: "Backend do Convex desatualizado",
|
||||
detail: "Recompile/deploy as funções Convex (ex.: `pnpm convex:dev` em desenvolvimento ou `npx convex deploy`) para aplicar o suporte a múltiplos acessos remotos.",
|
||||
detail: "Recompile/deploy as funções Convex (ex.: `bun run convex:dev:bun` em desenvolvimento ou `bun x convex deploy`) para aplicar o suporte a múltiplos acessos remotos.",
|
||||
},
|
||||
{ status: 409 }
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue