From 29b5b386784dec91a9701de274f9e32aeac1766d Mon Sep 17 00:00:00 2001 From: VPS 4 Builder Date: Thu, 25 Jun 2026 03:56:01 +0200 Subject: [PATCH] =?UTF-8?q?fix(protese):=20prot=C3=A9tico=20acessa=20o=20P?= =?UTF-8?q?erfil/Marketplace=20para=20se=20publicar=20no=20diret=C3=B3rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sem isso, o protético recém-cadastrado ficava invisível: o item PROFISSIONAIS não aparecia no workspace laboratório (plugin não ativo) e o contexto laboratório bloqueava a tela — então ele não tinha como publicar o perfil no diretório e nenhuma clínica o encontrava para enviar trabalho. - Sidebar: PROFISSIONAIS aparece sempre para dentista/biomédico/protético (eles divulgam perfil), mesmo sem o plugin ativado. - App: contexto 'laboratorio' libera marketplace-profissionais + diretorio-profissionais. Co-Authored-By: Claude Opus 4.8 --- frontend/App.tsx | 2 +- frontend/components/Sidebar.tsx | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/App.tsx b/frontend/App.tsx index 4f3e711..1dbf109 100644 --- a/frontend/App.tsx +++ b/frontend/App.tsx @@ -318,7 +318,7 @@ const App: React.FC = () => { // Contexto de SALA: isola da clínica — só painel da sala/salas/conta/notificações. if ((HybridBackend.getActiveWorkspace() as any)?.tipo === 'sala') return ['sala-home', 'configuracoes', 'notificacoes', 'clinicas'].includes(view); // Contexto de LABORATÓRIO: área do protético — painel do lab + bancada/conta/notificações. - if ((HybridBackend.getActiveWorkspace() as any)?.tipo === 'laboratorio') return ['lab-home', 'lab-bancada', 'lab-agenda', 'lab-clientes', 'lab-cotacoes', 'lab-financeiro', 'lab-equipe', 'lab-indicadores', 'configuracoes', 'notificacoes', 'clinicas'].includes(view); + if ((HybridBackend.getActiveWorkspace() as any)?.tipo === 'laboratorio') return ['lab-home', 'lab-bancada', 'lab-agenda', 'lab-clientes', 'lab-cotacoes', 'lab-financeiro', 'lab-equipe', 'lab-indicadores', 'marketplace-profissionais', 'diretorio-profissionais', 'configuracoes', 'notificacoes', 'clinicas'].includes(view); // Catálogo de PLUGINS: EXCLUSIVO do superadmin (já retorna true acima); ninguém mais. if (view === 'plugins') return false; // Admin/donos têm acesso amplo, MAS as telas de superadmin são exclusivas do superadmin. diff --git a/frontend/components/Sidebar.tsx b/frontend/components/Sidebar.tsx index 54a0c75..7ed2549 100644 --- a/frontend/components/Sidebar.tsx +++ b/frontend/components/Sidebar.tsx @@ -47,7 +47,9 @@ export const Sidebar: React.FC = ({ activeTab, setActiveTab }) => pluginMenuItems.push({ id: 'alugar-salas', label: 'ALUGAR SALAS', icon: Building2, color: '#0d9488' }); } // Marketplace de Profissionais: clínicas contratam, profissionais divulgam perfil/recebem propostas. - if (activePluginIds.includes('profissionais-marketplace') && currentRole !== 'superadmin' && currentRole !== 'paciente') { + // O protético DEPENDE desta tela para publicar o perfil no diretório e ser encontrado pelas clínicas + // — por isso aparece sempre para ele, mesmo sem o plugin ativado. + if ((activePluginIds.includes('profissionais-marketplace') || currentRole === 'protetico' || currentRole === 'biomedico' || currentRole === 'dentista') && currentRole !== 'superadmin' && currentRole !== 'paciente') { pluginMenuItems.push({ id: 'marketplace-profissionais', label: 'PROFISSIONAIS', icon: UserSearch, color: '#0d9488' }); } // OBS: o catálogo de PLUGINS é EXCLUSIVO do superadmin (gerência/ativação).