Commit Graph

8 Commits

Author SHA1 Message Date
VPS 4 Deploy Agent b6da56617a feat(rx): tenant_id (conta/dono) acima de clinica_id — multi-tenant 2 níveis
Hierarquia tenant_id (usuarios.id do dono) / clinica_id / pc / paciente, espelhando
o scoreodonto (conta multi-clínica planejada: um dono gerencia várias clínicas).

- Colunas tenant_id em clinics_devices e images (+índices); backfill device + 2776 imgs.
- Cadastro de device, socket (machine_token), JWT de client e uploads gravam tenant_id.
- Listagens (/images, /patients, /by-patient, /unique-clinics) filtram por tenant_id e/ou clinica_id.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 17:26:06 +02:00
VPS 4 Deploy Agent 31022c6a6f feat(rx): multi-tenant por clinica_id + página /clients de clientes ativos
- clinica_id (tenant do scoreodonto, clinicas.id) como eixo de isolamento em
  clinics_devices e images (+índices); clinic_name vira rótulo legível.
- Cadastro de device, socket (machine_token) e uploads (direct + legado) gravam clinica_id.
- Listagens (/images, /patients, /by-patient, /unique-clinics) filtram por clinica_id.
- /clients: lista clientes Windows ativos (inclui autenticados sem client-identify),
  tempo real + polling, exibe a clínica.
- send-image marcado como legado (client real usa Direct Upload).

Inclui trabalho de dev acumulado no working tree (não havia commits desde origin/main).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 16:17:09 +02:00
VPS 4 Deploy Agent b6a1d3d68e fix(clinics): 3 bugs de unicidade e wipe corrigidos
continuous-integration/webhook Deploy concluído (VPS4)
1. admin-clinics.js — bloqueia cadastro de clinic_name + pc_name duplicados:
   Antes só validava email único. Agora verifica se já existe dispositivo com
   a mesma combinação clinic_name + pc_name (case-insensitive). Sem isso, dois
   PCs com mesmo nome na mesma clínica sobrescreveriam arquivos um do outro
   no Wasabi (caminho idêntico).

2. admin-clinics.js — wipe usava client_name ao invés de clinic_name no banco:
   'DELETE FROM images WHERE client_name = clinic_name' deletava o conjunto
   errado de imagens (client_name é o nome do PC, não da clínica). Corrigido
   para 'WHERE clinic_name = $1'. Wasabi continua usando sanitize(clinic_name)/
   como prefixo (correto).

3. server.js — verificação de duplicata no connect incluía clinicName:
   O check usava só clientName (pc_name), causando falso positivo: dois PCs
   de clínicas diferentes com o mesmo nome (ex: ambos "PC-SALA-1") — o segundo
   era desconectado. Agora verifica clinicName + clientName juntos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 15:57:37 +02:00
VPS 4 Deploy Agent 22be2adefd fix(clinics): adiciona campo senha no formulário de cadastro de clínica
continuous-integration/webhook Deploy concluído (VPS4)
- Form não enviava password → servidor retornava 400 em todo cadastro
- Adicionado input password no modal de cadastro
- pc_name tornado opcional no servidor (já era opcional no UI)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 01:30:52 +02:00
VPS 4 Deploy Agent 8796558fa3 feat(clinics): wipe cirúrgico por dispositivo — apaga banco + pasta Wasabi só da clínica; remove Zerar Sistema da sidebar
continuous-integration/webhook Deploy concluído (VPS4)
- DELETE /admin/clinics/:id/wipe: apaga images/gto_images do banco (WHERE client_name),
  lista e deleta em batch todos os objetos Wasabi com prefixo 'clinic_name/',
  e remove o registro do dispositivo
- UI: botão 'Limpar dados' (🧹) separado do 🗑️ (remove só o cadastro),
  modal com aviso, confirmação e log da operação
- Sidebar: remove link 'Zerar Sistema'
2026-05-30 23:42:46 +02:00
VPS 4 Builder 5b0d80bf22 feat: reestruturacao de menus na sidebar, niveis de acesso e migracao para postgresql/dragonflydb
continuous-integration/webhook Deploy concluido (rx.scoreodonto.com)
2026-05-26 21:08:48 +02:00
VPS 4 Builder c637977d3b Fix admin-clinics auth and JWT usage 2026-05-26 05:45:13 +02:00
VPS 4 Builder ec3f23c9ea Implement client authentication and admin clinics panel 2026-05-26 04:17:12 +02:00