# Sistema de Chamados — App Desktop (Tauri) Cliente desktop (Tauri v2 + Vite) que: - Coleta perfil/métricas da máquina via comandos Rust. - Registra a máquina 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 máquina 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): - `pnpm -C apps/desktop tauri dev` - Build frontend (somente Vite): - `pnpm -C apps/desktop build` - Build executável (bundle): - `pnpm -C apps/desktop tauri build` Saída dos pacotes: `apps/desktop/src-tauri/target/release/bundle/` (AppImage/deb/msi/dmg conforme SO). ## Pré‑requisitos Tauri - Rust toolchain instalado. - Dependências nativas por SO (webkit2gtk no Linux, WebView2/VS Build Tools no Windows, Xcode CLT no macOS). Consulte https://tauri.app/start/prerequisites/ ## Fluxo (resumo) 1) Ao abrir, o app coleta o perfil da máquina 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.