sistema-de-chamados/docs/historico-agente-desktop-2025-10-10.md

5.7 KiB
Raw Permalink Blame History

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.md e apps/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.
  • 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 openUrl do plugin opener e usa para abrir o handshake no navegador padrão.
  • apps/desktop/src/main.ts:640
    • Tratamento de erros no registro com exibição de status e details quando o servidor retorna JSON/texto.
  • apps/desktop/src/main.ts:694
    • Função redirectToApp para abrir APP_URL/machines/handshake?token=... via openUrl, com fallback para window.location.replace.
  • 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-delete e opener:default.

Como rodar (Windows, dev)

  1. Garantir .env do desktop em apps/desktop/.env:
VITE_APP_URL=https://tickets.esdrasrenan.com.br
VITE_API_BASE_URL=https://tickets.esdrasrenan.com.br
  1. Rodar dev:
cd apps\desktop
pnpm tauri dev
  1. Provisionar:
  • Usar o botão de olho para conferir o segredo, sem espaços.
  • Deixar Tenant e Empresa (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 allowed nos logs do DevTools.
    • Causa: permissões do plugin Store ausentes.
    • Ação: adicionar permissões em apps/desktop/src-tauri/capabilities/default.json:1.
  • 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.
  • Redirecionando para localhost apó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.json no diretório de dados do app.
  • Mensagem de erro genérica no desktop:
    • Antes: "Erro desconhecido ao registrar a máquina".
    • Agora: exibe Falha ao registrar máquina (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):
    1. Gerar novo segredo (ex.: openssl rand -hex 32).
    2. 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
      
    3. Validar com POST /api/machines/register (esperado 201).
  • Máquinas 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, detectar ConvexError conhecidos (empresa inválida, token inválido, etc.) e responder 400/404 em vez de 500.
  • Validar UX do botão "Abrir sistema":
    • Confirmar que sempre abre no navegador padrão em produção (capability opener:default já presente).
  • Polimento visual adicional (opcional):
    • Botões com variações de cor/hover mais fiéis ao /login.
    • Trocar ícones emoji por SVGs minimalistas.
  • Métricas de CPU no agente (suavização):
    • Avaliar média de 23 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)

  • .env do desktop contém apenas VITE_APP_URL e VITE_API_BASE_URL apontando para produção.
  • Primeiro registro sem empresa retorna 201 e aparece "Máquina 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 máquina.
  • 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.