sistema-de-chamados/apps/desktop
rever-tecnologia 826b376dd3
All checks were successful
CI/CD Web + Desktop / Detect changes (push) Successful in 5s
Quality Checks / Lint, Test and Build (push) Successful in 4m1s
CI/CD Web + Desktop / Deploy Convex functions (push) Has been skipped
CI/CD Web + Desktop / Deploy (VPS Linux) (push) Successful in 3m53s
fix(desktop): corrige navegacao ao resetar dispositivo
Usa window.location.href com URL do Tauri em vez de API inexistente

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 14:08:56 -03:00
..
.vscode feat: adicionar painel de máquinas e autenticação por agente 2025-10-07 21:37:41 -03:00
docs chore: update docs and configs 2025-11-05 20:49:19 -03:00
public fix(desktop): corrige logo na tela de registro 2025-12-18 11:33:55 -03:00
scripts feat: add health dashboard and local ticket archive 2025-12-10 14:43:13 -03:00
service feat(desktop): adiciona Raven Service e corrige UAC 2025-12-15 02:30:43 -03:00
src fix(desktop): corrige navegacao ao resetar dispositivo 2025-12-18 14:08:56 -03:00
src-tauri feat: adiciona informacoes de reinicio e melhora SLA global 2025-12-18 09:38:58 -03:00
.env.example feat: add health dashboard and local ticket archive 2025-12-10 14:43:13 -03:00
.gitignore feat: adicionar painel de máquinas e autenticação por agente 2025-10-07 21:37:41 -03:00
index.html feat(desktop): add Tauri updater (GitHub Releases), updater UI button, hide PowerShell windows; fix Windows inventory arrays and activation; improve metrics parsing; branding rename to Raven across app; avoid localhost fallback in auth-server; inject APP_URL/AUTH_URL in stack 2025-10-10 20:39:39 -03:00
package.json feat(desktop): implementa Convex React subscriptions para chat em tempo real 2025-12-15 23:40:34 -03:00
README.md chore: update docs and configs 2025-11-05 20:49:19 -03:00
tsconfig.json feat(desktop): implementa Convex React subscriptions para chat em tempo real 2025-12-15 23:40:34 -03:00
vite.config.ts feat(desktop): implementa Convex React subscriptions para chat em tempo real 2025-12-15 23:40:34 -03:00

Sistema de Chamados — App Desktop (Tauri)

Cliente desktop (Tauri v2 + Vite) que:

  • Coleta perfil/métricas da dispositivo via comandos Rust.
  • Registra a dispositivo com um código de provisionamento.
  • Envia heartbeat periódico ao backend (/api/machines/heartbeat).
  • Redireciona para a UI web do sistema após provisionamento.
  • Armazena o token da dispositivo com segurança no cofre do SO (Keyring).
  • Exibe abas de Resumo, Inventário, Diagnóstico e Configurações; permite “Enviar inventário agora”.

URLs e ambiente

  • Em produção, o app usa por padrão https://tickets.esdrasrenan.com.br.
  • Em desenvolvimento, use apps/desktop/.env (copiado do .env.example):
VITE_APP_URL=http://localhost:3000
# Opcional: se vazio, usa o mesmo do APP_URL
VITE_API_BASE_URL=

Comandos

  • Dev (abre janela Tauri e Vite em 1420):
    • bun run --cwd apps/desktop tauri dev
  • Build frontend (somente Vite):
    • bun run --cwd apps/desktop build
  • Build executável (bundle):
    • bun run --cwd apps/desktop tauri build

Saída dos pacotes: apps/desktop/src-tauri/target/release/bundle/.

Windows (NSIS) — instalação e dados

  • Instalador NSIS com suporte a “perMachine” (Arquivos de Programas) e diretório customizável (ex.: C:\Raven).
  • Atalho é criado na Área de Trabalho apontando para o executável instalado.
  • Dados do app (token/config) ficam em AppData local do usuário (via @tauri-apps/plugin-store com appLocalDataDir).

NSIS — Idiomas e modo de instalação

  • Idioma: o instalador inclui Português do Brasil e exibe seletor de idioma.
    • Arquivo: apps/desktop/src-tauri/tauri.conf.json:54"displayLanguageSelector": true
    • Arquivo: apps/desktop/src-tauri/tauri.conf.json:57"languages": ["PortugueseBR"]
    • Comportamento: usa o idioma do SO; sem correspondência, cai no primeiro da lista.
    • Referência de idiomas NSIS: NSIS “Language files/PortugueseBR”.
  • Modo de instalação: Program Files (requer elevação/UAC).
    • Arquivo: apps/desktop/src-tauri/tauri.conf.json:56"installMode": "perMachine"
    • Alternativas: "currentUser" (padrão) ou "both" (usuário escolhe; exige UAC).

Build rápido e leve em dev:

bun run --cwd apps/desktop tauri build --bundles nsis

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'
bun run --cwd apps/desktop tauri build --bundles nsis

Prérequisitos Tauri

Fluxo (resumo)

  1. Ao abrir, o app coleta o perfil da dispositivo e exibe um resumo.
  2. Informe o “código de provisionamento” (chave definida no servidor) e confirme.
  3. O servidor retorna um machineToken; o app salva e inicia o heartbeat.
  4. O app abre APP_URL/machines/handshake?token=... no WebView para autenticar a sessão na UI.
  5. Pelas abas, é possível revisar inventário local e disparar sincronização manual.

Segurança do token

  • O machineToken é salvo no cofre nativo do SO via plugin Keyring (Linux Secret Service, Windows Credential Manager, macOS Keychain).
  • O arquivo de preferências (Store) guarda apenas metadados não sensíveis (IDs, URLs, datas).

Suporte

  • Logs do Rust aparecem no console do Tauri (dev) e em stderr (release). Em caso de falha de rede, o app exibe alertas na própria UI.
  • Para alterar endpoints/domínios, use as variáveis de ambiente acima.