Commit Graph

11 Commits

Author SHA1 Message Date
VPS 4 Builder 3392a1090a feat: CRUD remoto ACKs
continuous-integration/webhook Falha no build do client (VPS4)
2026-06-02 20:52:28 +02:00
VPS 4 Builder ac1fb025fc feat: handle remote CRUD patient commands via socket
continuous-integration/webhook Client .exe publicado em produção (VPS4)
2026-06-02 01:28:29 +02:00
VPS 4 Builder 4e03e06e32 feat(client): config token-first — apenas token + URL + pasta + senha local
continuous-integration/webhook Falha no build do client (VPS4)
Config UI simplificado:
- Remove campos: Nome do PC, E-mail do Servidor, Senha do Servidor,
  Usuário do Painel (7 campos → 4 campos).
- Mantém: Token, URL do Servidor, Pasta para Monitorar, Senha do Painel.
- Botão "Verificar": chama GET /api/auth/device-info e exibe card com
  Clínica e PC identificados antes de salvar.
- Ao salvar: valida token no servidor, clientName vem do pc_name retornado.
- Token já salvo: verificado automaticamente ao abrir as configurações.
- Login simplificado: pede só a senha (sem campo de usuário).

client-monitor.js:
- server-identified: se pcName vier do servidor, atualiza config.clientName
  localmente para manter em sincronia com o cadastro.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 15:37:09 +02:00
VPS 4 Builder ad4b74e540 fix(client): log de auth e clínica para diagnóstico de machine_token
continuous-integration/webhook Falha no build do client (VPS4)
- connectToServer: log explícito do modo de auth:
  'Machine Token (Clínica cadastrada)' ou
  '⚠️ API Key genérica — Clínica NÃO identificada'

- server-identified: log mostra PC + Clínica identificada. Se clínica
  não for reconhecida, avisa para configurar o Token no painel.

Facilita diagnóstico de por que arquivos vão para 'desconhecido'.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 09:06:38 +02:00
VPS 4 Builder 0063b23c45 feat(client): plan-b — handler reupload-files para imagens ausentes no Wasabi
continuous-integration/webhook Falha no build do client (VPS4)
Quando o servidor não encontra nem thumb nem original no Wasabi, emite
'reupload-files' com a lista de original_filenames para o cliente.

O cliente (client-monitor.js):
- Ouve 'reupload-files' e para cada filename busca localmente em monitorPath
- Remove do uploadedCache (força reenvio mesmo que já conste como enviado)
- Chama sendImageToServer com bypassCache=true
- Respeita isSendingPaused
- Loga resultado (reenviados / não encontrados localmente)

O processo Electron (index.js) exibe balão informativo quando o reenvio
é solicitado, para o usuário saber que algo está acontecendo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 06:52:49 +02:00
VPS 4 Builder ff3b4e5934 fix(client): notificação Wasabi + ordem de envio mais recente primeiro
Item 2 — Notificação de erro do Wasabi:
- client-monitor.js: notifyWasabiError() envia evento IPC 'wasabi-error'
  ao processo Electron em dois cenários: falha no Direct Upload e Wasabi
  indisponível no servidor. Throttle de 60s para não inundar o usuário.
- index.js: trata 'wasabi-error' no handler IPC do monitorProcess e exibe
  tray.displayBalloon com iconType 'error'.

Item 5 — Ordem de envio (mais novas primeiro):
- executarSincronizacaoLocal: após filtrar imagens, ordena por mtime DESC
  antes de enfileirar — dentista recebe primeiro as imagens do atendimento
  atual em vez de receber em ordem arbitrária do filesystem.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 05:12:07 +02:00
VPS 4 Builder 45b4c2215c fix(client): v1.3.0 — anti-loop updater, config backup, NSIS safe
Itens 0, 3 e 4 do plano de correção:

ITEM 0 — Preservar dados na atualização (não reconfigurar do zero)
- index.js: loadConfig/saveConfig grava config.backup.json a cada
  gravação válida; ao iniciar, restaura do backup se config.json
  sumir ou corromper — protege clientId e credenciais.
- client-monitor.js: nova persistConfig() grava config + backup juntos;
  aplicada nos 3 pontos que escrevem o config (clientId init, painel
  local, wizard CLI).
- package.json: deleteAppDataOnUninstall: false explícito.

ITEM 3 — Duplicatas na lista de apps do Windows
- Mantido perMachine: false consistente; GUID derivado do appId
  (não adicionado explícito para não criar 3ª entrada).
- deleteAppDataOnUninstall: false garante AppData intacto.

ITEM 4 — Loop de notificação de nova versão
- Trava anti-loop: conta tentativas por versão em update-state.json;
  após 3 falhas da mesma versão, para de auto-instalar e notifica
  balão com mensagem para reinstalar manualmente.
- reconcileUpdateState() no boot zera o contador quando a versão
  realmente avançou (instalação bem-sucedida).
- autoUpdater.on('error') agora exibe balão com erro real (throttle 60s).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 05:05:36 +02:00
VPS 4 Builder b23114ace2 fix(client): completa handlers pause/resume que faltaram no 1.2.8
O 1.2.8 enviava os comandos IPC pause/resume pela bandeja, mas o
client-monitor.js não tinha os handlers — pausa não tinha efeito.

- client-monitor: adiciona handlers IPC pause/resume
- Guarda de pausa no início de executarSincronizacaoLocal + break no loop
- index.js: reaplica estado de pausa se o monitor reiniciar
- Bump 1.2.8 → 1.2.9

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 03:01:15 +02:00
VPS 4 Builder 3c6b62126e feat(client): pausar/continuar envio com auto-retomada após 10 min
- Checkbox "Pausar Envio de Imagens" na bandeja (tray)
- Auto-retomada automática após 10 min de pausa (caso usuário esqueça)
- client-monitor: comandos IPC pause/resume; processQueue e executarSincronizacaoLocal
  respeitam a pausa, mantendo imagens na fila sem perdê-las
- Estado de pausa reaplicado se o monitor reiniciar
- "Forçar Sincronização" retoma o envio automaticamente se estiver pausado
- Bump 1.2.7 → 1.2.8

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 02:57:43 +02:00
VPS 4 Builder 2a26f72460 feat(client): envia clinicName no identify e migra upload para Presigned URLs
- client-monitor.js: adiciona clinicName no client-identify (fallback para auth legada)
- Direct Upload via Presigned URLs (bypass VPS) como caminho principal
- Fallback automático para envio via VPS se Wasabi não disponível
- Thumbnail gerado localmente via IPC com index.js (remove dependência sharp)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 02:06:19 +02:00
VPS 4 Builder db99057022 feat: código inicial do client Electron com auto-updater integrado 2026-05-28 02:05:32 +02:00