80 lines
3.6 KiB
Markdown
80 lines
3.6 KiB
Markdown
# 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/`.
|
||
|
||
### 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:
|
||
```bash
|
||
pnpm -C apps/desktop tauri build --bundles nsis
|
||
```
|
||
|
||
Assinatura do updater (opcional em dev):
|
||
```powershell
|
||
$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'
|
||
pnpm -C apps/desktop tauri build --bundles nsis
|
||
```
|
||
|
||
## 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.
|