feat: habilitar provisionamento desktop e rotas CORS
This commit is contained in:
parent
7569986ffc
commit
152550a9a0
19 changed files with 1806 additions and 211 deletions
|
|
@ -43,14 +43,20 @@ Legenda: ✅ concluído · 🔄 em andamento · ⏳ a fazer.
|
|||
|
||||
## Notas de Implementação (Atual)
|
||||
- Criada pasta `apps/desktop` via `create-tauri-app` com template `vanilla-ts`.
|
||||
- `src/main.ts` redireciona a WebView para `VITE_APP_URL` (padrão `http://localhost:3000`), reaproveitando a UI Next web.
|
||||
- `index.html` exibe fallback simples enquanto o Next inicializa.
|
||||
- Necessário criar `.env` em `apps/desktop` (ou usar variáveis de ambiente) com `VITE_APP_URL` correspondente ao ambiente.
|
||||
- O agente desktop agora possui fluxo próprio: coleta inventário local via comandos Rust, solicita o código de provisionamento, registra a máquina e inicia heartbeats periódicos (`src-tauri/src/agent.rs` + `src/main.ts`).
|
||||
- Formulário inicial exibe resumo de hardware/OS e salva o token em `~/.config/Sistema de Chamados Desktop/machine-agent.json` (ou equivalente por SO) para reaproveitamento em relançamentos.
|
||||
- URLs configuráveis via `.env` do app desktop:
|
||||
- `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 máquina no Better Auth, devolve cookies e redireciona para a UI.
|
||||
- `apps/desktop/src-tauri/tauri.conf.json` ajustado para rodar `pnpm 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 máquina, gera token e usuário Better Auth (role `machine`).
|
||||
- `POST /api/machines/heartbeat` — atualiza estado, métricas e renova TTL.
|
||||
- `POST /api/machines/sessions` — troca `machineToken` por sessão Better Auth e devolve cookies.
|
||||
- As rotas `/api/machines/*` respondem a preflight `OPTIONS` com CORS liberado para o agente (`https://tickets.esdrasrenan.com.br`, `tauri://localhost`, `http://localhost:1420`).
|
||||
- Rota `GET /machines/handshake` realiza o login automático da máquina (seta cookies e redireciona).
|
||||
- Webhook FleetDM: `POST /api/integrations/fleet/hosts` (header `x-fleet-secret`) sincroniza inventário/métricas utilizando `machines.upsertInventory`.
|
||||
- Script `ensureMachineAccount` garante usuário `AuthUser` e senha sincronizada com o token atual.
|
||||
- Variáveis `.env` novas: `MACHINE_PROVISIONING_SECRET` (obrigatória) e `MACHINE_TOKEN_TTL_MS` (opcional, padrão 30 dias).
|
||||
|
|
@ -71,4 +77,5 @@ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
|
|||
---
|
||||
|
||||
> Histórico de atualizações:
|
||||
> - 2025-02-20 — Fluxo completo do agente desktop, heartbeats e rota `/machines/handshake` documentados (assistente).
|
||||
> - 2025-02-14 — Documento criado com visão geral e plano macro (assistente).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue