feat(biomedico): catálogo próprio de biomedicina estética (CRUD + ativar/desativar)

- reverte bloqueio anterior: biomédico GERENCIA especialidades/procedimentos do seu
  consultório (workspace pessoal já criado no cadastro)
- acesso liberado p/ o papel biomédico (menu + permissão)
- coluna 'ativo' em especialidades/procedimentos + toggle ativar/desativar na UI
- auto-seed do catálogo de biomedicina estética (botox, preenchimento, bioestimulador,
  peeling, microagulhamento, etc.) no cadastro do biomédico + endpoint idempotente
  /api/me/seed-biomedicina (restrito ao papel biomédico) p/ contas existentes
- valor por procedimento já suportado (valorparticular)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Builder
2026-06-14 06:20:42 +02:00
parent a383fc7a29
commit 44d604daff
6 changed files with 121 additions and 24 deletions
+14
View File
@@ -725,6 +725,20 @@ export const HybridBackend = {
return await res.json();
},
// Semeia o catálogo de biomedicina estética no workspace ativo (idempotente).
seedBiomedicina: async (): Promise<boolean> => {
const clinicaId = HybridBackend.getActiveWorkspace()?.id || '';
if (!clinicaId) return false;
try {
const res = await apiFetch(`${API_URL}/me/seed-biomedicina`, {
method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ clinicaId }),
});
const d = await res.json();
return !!d?.seeded;
} catch { return false; }
},
getProcedimentos: async (): Promise<Procedimento[]> => {
const clinicaId = HybridBackend.getActiveWorkspace()?.id || '';
const res = await apiFetch(`${API_URL}/procedimentos${clinicaId ? `?clinicaId=${clinicaId}` : ''}`);