Intranet corporativa multitenant para hospitais e clínicas. Comunicação interna, chat corporativo, gestão de documentos, fluxos de aprovação e canal de denúncias — em conformidade com a LGPD.
Catálogo de funcionalidades · Versão de referência · Julho/2026
Plataforma multitenant (multi-hospital) que centraliza a comunicação e a operação interna. Cada tenant (hospital ou clínica) tem seus próprios dados, marca, usuários e configurações — completamente isolados.
Domínio único (sinapsenet.com.br) com escopo por /t/<slug>/
PWA por tenant: cada instituição instala com sua própria logo, nome e cor
Papéis por tenant: OWNER, ADMIN, MANAGER (coordenador de setor), MEMBER
Isolamento total no banco (todo modelo carrega tenantId validado por guard)
Super Admin (backoffice) gerencia tenants, cria hospitais, reseta senhas
Thread de discussão entre solicitante e aprovadores
Aprovador NÃO pode aprovar a própria requisição
Solicitante pode cancelar antes de ser aprovada
Notificação push aos aprovadores no OPEN e ao solicitante no APPROVE/REJECT
Push omite conteúdo sensível — só mostra "Nova solicitação de RH" (LGPD art. 11 — motivos médicos)
Quem aprova
OWNER/ADMIN sempre aprovam
MANAGER aprova requisições do próprio setor
Aprovadores extras configuráveis via Configurações RH (colaboradores específicos que aprovam tudo, sem virar admin)
Relatórios
Filtros por período, tipo, status, setor, requerente
Total de horas extras aprovadas (soma agregada)
Ranking por colaborador (top horas extras)
Contadores por status e tipo
10 · Denúncias e Reclamações Novo
🚨 Canal seguro de denúncias
Tipos: Reclamação, Conduta inadequada (assédio/ofensa), Outro
Sequencial por tenant (#0042)
Status: aberta → em análise → resolvida / descartada
Anexação opcional da conversa de chat como prova (snapshot das últimas 50 mensagens)
Snapshot em JSON — sobrevive mesmo se conversa for deletada depois
Notificação aos OWNER/ADMIN ao abrir
Auditoria: IP, UA, geolocalização do denunciante gravados
Anonimato controlado
"Anônima" tem semântica específica: a identidade do denunciante é oculta pra colegas, gestores e o próprio denunciado. Internamente, OWNER/ADMIN sempre veem quem denunciou — pra fins de auditoria e prevenção de denúncias falsas. Isso está explícito no Termo de Uso.
Thread e resolução
Só OWNER/ADMIN pode responder na thread (evita virar novo vetor de assédio)
Notas internas (só admins veem) vs respostas oficiais (denunciante recebe)
Denunciante recebe notificação a cada resposta admin e mudança de status
Denunciado NÃO tem acesso à denúncia
11 · Documentos Core
📄 Central de arquivos do tenant
Lista unificada de arquivos por tipo: atas, anexos de comunicados/tickets/RH, avatares, logos
Filtros por tipo (kind), busca
Storage stats: uso atual vs quota do plano
Download com controle de acesso (admin baixa qualquer, MEMBER só o que tem permissão)
Atas visíveis: admin, autor, signatários, granted
Grants concedidos por admin
12 · Organograma Core
🗂️ Hierarquia visual
Árvore de setores (com parent/child)
Árvore de pessoas por gestor (manager relation)
Cards mostram: nome, foto, setor, cargo (e-mail só pra admin)
Navegação drill-down clicando em setor ou pessoa
Contadores de membros e sub-setores
13 · Gestão de equipe Core
👥 Colaboradores
Cadastro completo: dados pessoais (CPF, RG, nascimento, endereço, contato de emergência), dados profissionais (matrícula, cargo, setor, registro profissional/CRM/COREN, especialidade, CBO)
Tipo de vínculo: CLT, PJ, Autônomo, Estagiário, Terceirizado
Gestor direto (manager relation)
Data de admissão e desligamento
Foto de perfil
Ativar/desativar sem apagar
Reset de senha por admin (ADMIN não reseta OWNER/outros ADMIN; usuário é notificado do reset)
Busca por nome (admin também busca por e-mail)
Filtro por setor
Aniversariantes do mês
LGPD: visão de MEMBER/MANAGER mostra apenas nome, cargo, setor, foto e telefone corporativo. CPF, RG, endereço, contato de emergência e email pessoal só aparecem pra OWNER/ADMIN.
🏢 Setores
CRUD de setores
Hierarquia (setor pai/filhos)
Código interno opcional
Responsável default por setor (usado pra atribuir tickets automaticamente)
Ativar/desativar
🎓 Cargos
CRUD de cargos
Usados na segmentação (comunicados, enquetes, eventos) e nos filtros
14 · Termos e consentimentos (LGPD) LGPD
📜 Aceite de termos bloqueante
Modal fullscreen aparece no primeiro acesso — bloqueia app até aceitar
Precisa rolar até o fim + marcar checkbox pra habilitar botão "Aceitar"
Grava aceite com IP, user-agent, latitude/longitude (opt-in)
Múltiplos termos possíveis — se houver N pendentes, aceita 1 por 1
Termo modelo criado: "Termo Geral de Uso, Privacidade e Conduta" — 9 seções cobrindo objeto, LGPD, auditoria, comunicações, conduta, denúncias, responsabilidades, versionamento, contato DPO
Versionamento
Publicar nova versão do mesmo slug desativa a anterior automaticamente
Obriga todos a reaceitar
Termo com aceites vira imutável (só ativar/desativar)
Excluir só permitido se zero aceites (senão desativa pra preservar auditoria)
Backoffice de termos
Página /configuracoes/termos pra OWNER/ADMIN
Cria, edita, ativa/desativa, exclui termos
Ver lista de aceites (nome, data, IP, geolocalização, UA)
15 · Notificações Core
🔔 Central de notificações
Sino no header com contador de não lidas
Página /notificacoes com lista completa
Marcar como lida (individual ou tudo)
Filtro apenas não lidas
Ícone + título + preview + link direto pra ação
Poll a cada 30s pra atualizar contador
Push notifications (Web Push VAPID)
Assinatura via /perfil → Notificações push
Prompt automático no PWA instalado (uma vez, dispensível)
Título prefixado com emoji do tipo (📢, 💬, 🚨, ⏰)
Ícone do próprio tenant no push
Badge numérico no ícone do PWA (soma total de não lidas)
Tag por contexto: mensagens da mesma conversa se consolidam ("3 novas · Última: ...")
Renotify: vibra/toca de novo ao atualizar
Clique abre janela existente ou nova, navega pra URL certa
Preview omitido em push sensível (RH, denúncia) — LGPD
Instalável em iPhone, Android, desktop (Chrome/Edge)
Manifest dinâmico por tenant: cada hospital vira um "app" separado no celular
Nome, ícone (CEMAC/logo do hospital), cor de tema — tudo do próprio tenant
Card "Instalar o Sinapse" aparece automaticamente quando browser oferece instalação
Instruções específicas pra iPhone (Compartilhar → Adicionar à Tela de Início)
Modo standalone (fullscreen sem barra do browser)
Shortcuts: Chat, Mural, Agenda direto do menu do ícone
Service Worker
Cache-first pra estáticos (assets Next), network-first pra HTML
Fallback offline navigation
Push handler + notificação com badge numérico
Update automático: banner verde "🚀 Nova versão disponível" com botão Atualizar
Check periódico de update a cada 30 min
17 · Configurações do hospital Core
⚙️ Branding e dados institucionais
Nome fantasia, razão social, CNPJ (imutável)
E-mail institucional, telefone, WhatsApp público
Endereço completo com CEP
Logo horizontal (topbar, PDFs) — PNG/JPG/WebP (SVG bloqueado por segurança)
Ícone quadrado (PWA, favicon) — PNG 512×512
Cor primária (usada no timbrado, tema PWA, destaques)
Slogan/tagline (aparece no PDF)
Redes sociais: site, Instagram, Facebook, LinkedIn (rodapé do timbrado)
Preview em tempo real das imagens
Sub-páginas
📜 Termos de Uso — CRUD + versionamento + aceites
⚙️ RH: aprovadores extras
18 · Perfil do usuário Core
🧑 Auto-serviço do colaborador
Editar dados pessoais: nome, foto, contatos, endereço residencial, contato de emergência, dados demográficos
Ver dados profissionais (matrícula, cargo, setor — em modo leitura)
Trocar senha (mínimo 8 chars) — invalida todas as sessões existentes
Ativar/desativar notificações push (toggle)
Ver estado da subscription push (ativada/bloqueada/não suportada)
Instruções específicas pra iOS quando não instalado
Foto de perfil aparece em mensagens, comentários e listas
19 · Backoffice super admin Interno
🛠️ Gestão cross-tenant (Sinapse)
Rota /admin — não é do hospital, é do time Sinapse. Protegida por login dedicado (cookie httpOnly sinapse_admin, path /api/admin, sameSite strict, 8h).
Login em /admin com o ADMIN_TOKEN do servidor (comparação timing-safe)
Listar todos os tenants
Criar novo tenant (hospital) com dados institucionais completos
Editar tenant, mudar plano, suspender, cancelar
Setar quota de storage por tenant
Configurar contatos comerciais
Criar setores, cargos e membros dentro de qualquer tenant (usado no onboarding)
Logout limpa cookie
Rate limit 5/min no login
20 · Segurança e privacidade Compliance
🔐 Autenticação
JWT em cookies httpOnly (access 15min, refresh 30 dias)
Refresh cookie escopado em /api/auth com sameSite=strict
Revogação de sessão: tokenVersion no User — logout/changePassword incrementam, invalida TODOS os JWT do usuário
Bcrypt cost 12 pra hashagem
Rate limit: login 5/min, refresh 20/min, change-password 5/min, global 100/min
Comparação timing-safe em tokens admin
🛡️ Autorização multitenant
TenantGuard valida membership ativa no tenant do path