5.7 KiB
5.7 KiB
Histórico — Agente Desktop (Tauri) — 2025-10-10
Registro consolidado do que foi feito no app desktop, problemas encontrados, diagnósticos e próximos passos. Complementa
docs/plano-app-desktop-maquinas.mdeapps/desktop/README.md.
Resumo do que mudou
- UI mais "shadcn-like" sem Tailwind (apenas CSS): tema claro forçado, card com sombras suaves, labels fortes, helper text opcional e estados de foco com ring.
- Campo "Código de provisionamento" com botão de visibilidade (olhinho) sem dependências extras.
- Cards de inventário na visão inicial (CPU, Memória, Sistema e Discos) e grid simplificada.
- Feedback de erro aprimorado no registro: exibe status HTTP e detalhes retornados pelo servidor.
- Botão "Abrir sistema" passou a abrir o navegador padrão (plugin opener) em vez de navegar dentro da WebView.
- Corrigidas permissões do plugin Store no Tauri v2 (antes:
store.load not allowed).
Arquivos alterados
apps/desktop/index.html:1- Força tema claro com
<meta name="color-scheme" content="light">e estrutura do card.
- Força tema claro com
apps/desktop/src/styles.css:1- Estilos do card, inputs, input-group, ícones, tabs e summary cards (visual shadcn-like sem Tailwind). Remove dark overrides.
apps/desktop/src/main.ts:3- Importa
openUrldo plugin opener e usa para abrir o handshake no navegador padrão.
- Importa
apps/desktop/src/main.ts:640- Tratamento de erros no registro com exibição de
statusedetailsquando o servidor retorna JSON/texto.
- Tratamento de erros no registro com exibição de
apps/desktop/src/main.ts:694- Função
redirectToApppara abrirAPP_URL/machines/handshake?token=...viaopenUrl, com fallback parawindow.location.replace.
- Função
apps/desktop/src-tauri/capabilities/default.json:1- Adicionadas permissões:
store:default,store:allow-load,store:allow-get,store:allow-set,store:allow-save,store:allow-deleteeopener:default.
- Adicionadas permissões:
Como rodar (Windows, dev)
- Garantir
.envdo desktop emapps/desktop/.env:
VITE_APP_URL=https://tickets.esdrasrenan.com.br
VITE_API_BASE_URL=https://tickets.esdrasrenan.com.br
- Rodar dev:
cd apps\desktop
pnpm tauri dev
- Provisionar:
- Usar o botão de olho para conferir o segredo, sem espaços.
- Deixar
TenanteEmpresa (slug)vazios para o primeiro teste. - Ao concluir, o app abre o navegador em
/machines/handshake?token=....
Referências úteis:
- Defaults/URLs do app:
apps/desktop/src/main.ts:75 - Handshake na web:
src/app/machines/handshake/route.ts:1 - Endpoint de registro:
src/app/api/machines/register/route.ts:1
Diagnósticos e soluções aplicadas
- Erro na Store (Tauri v2):
- Sintoma:
store.load not allowednos logs do DevTools. - Causa: permissões do plugin Store ausentes.
- Ação: adicionar permissões em
apps/desktop/src-tauri/capabilities/default.json:1.
- Sintoma:
- Erro 500 durante registro com empresa:
- Mensagem:
ConvexError: Empresa não encontrada para o tenant informado. - Causa: slug inválido em
Empresa (slug). - Ação: validar com slug correto (Admin > Empresas & Clientes) ou registrar sem empresa.
- Observação: hoje o endpoint mapeia como 500 genérico; ver "Pendências" para remapear para 400/404.
- Mensagem:
- Redirecionando para
localhostapós registro:- Causa: configuração antiga salva no Store (primeira tentativa em dev) ou navegação dentro da WebView.
- Ações:
- Abrir no navegador padrão com
openUrl(apps/desktop/src/main.ts:694). - Se necessário, limpar Store via botão "Reprovisionar" (Configurações) ou removendo o arquivo
machine-agent.jsonno diretório de dados do app.
- Abrir no navegador padrão com
- Mensagem de erro genérica no desktop:
- Antes: "Erro desconhecido ao registrar a dispositivo".
- Agora: exibe
Falha ao registrar dispositivo (STATUS): mensagem — detalhes(quando disponíveis), facilitando diagnóstico.
Provisionamento — segredo e boas práticas
- Variável:
MACHINE_PROVISIONING_SECRET(VPS/Convex backend). - Rotina de giro (secret exposto foi mostrado no chat):
- Gerar novo segredo (ex.:
openssl rand -hex 32). - Aplicar no serviço Convex (Swarm) e forçar redeploy:
docker service update --env-add MACHINE_PROVISIONING_SECRET='NOVO_HEX' sistema_convex_backend docker service update --force sistema_convex_backend - Validar com
POST /api/machines/register(esperado 201).
- Gerar novo segredo (ex.:
- Dispositivos já registradas não são afetadas (token delas continua válido).
Pendências e próximos passos
- Mapear erros "esperados" para HTTP adequado no web (Next):
- Em
src/app/api/machines/register/route.ts:1, detectarConvexErrorconhecidos (empresa inválida, token inválido, etc.) e responder400/404em vez de500.
- Em
- Validar UX do botão "Abrir sistema":
- Confirmar que sempre abre no navegador padrão em produção (capability
opener:defaultjá presente).
- Confirmar que sempre abre no navegador padrão em produção (capability
- Polimento visual adicional (opcional):
- Botões com variações de cor/hover mais fiéis ao
/login. - Trocar ícones emoji por SVGs minimalistas.
- Botões com variações de cor/hover mais fiéis ao
- Métricas de CPU no agente (suavização):
- Avaliar média de 2–3 amostras no lado Rust antes de reportar a primeira leitura (Task Manager-like).
- Documentar re-provisionamento manual do Store por SO (paths exatos) no
apps/desktop/README.md.
Checklist rápido de verificação (QA)
.envdo desktop contém apenasVITE_APP_URLeVITE_API_BASE_URLapontando para produção.- Primeiro registro sem empresa retorna 201 e aparece "Dispositivo provisionada" nas abas.
- "Ambiente" e "API" em Configurações exibem
https://tickets.esdrasrenan.com.br. - "Abrir sistema" abre o navegador com
/machines/handshake?token=...e loga a dispositivo. - Reprovisionar limpa a Store e volta ao formulário inicial.
Dúvidas/sugestões: ver agents.md para diretrizes gerais e docs/desktop-build.md para build de binários.