Épico 5 — Menu Lateral — Mapeamento de Banco de Dados (v1.2)

Documentos deste épico: 01 - Definição (v1.3) · 02 - Especificação (v1.2) · 03 - Protótipo (v1.1, código executável em 03 - Protótipo v1.1.html) · 04 - Mapeamento de Banco de Dados (v1.2). Este épico faz parte do documento guarda-chuva Check-in de Usuários.


SEÇÃO 4 — MAPEAMENTO DE BANCO DE DADOS

Tabelas existentes utilizadas

TabelaBancoCampos utilizados neste épico
ProcessoIpSegurancaId, Processo (código único), Nome, Icone, Contexto, ProcessoGrupoId, Rota, RemovidoEm — cada linha é um item de menu/funcionalidade do sistema; Icone referencia um nome de ícone de lucide.dev/icons ou react-icons.github.io, nunca um arquivo próprio
ProcessoGrupoIpSegurancaId, Nome — agrupamento sem hierarquia (sem campo de grupo pai); confirma a estrutura de camada única descrita em RN-CIU-026
ClienteProcessoIpSegurancaId, ProcessoId, ClienteBDId, RemovidoEm — liga um Processo ao banco do cliente (tenant), isto é, marca quais Processo estão habilitados/licenciados para aquele cliente, independentemente de qualquer perfil de acesso
ClientePerfilAcessoIpSegurancaId, Nome, ClienteBDId — perfil de acesso (papel) do cliente; já mapeado em CIU-E1/E3/E6
ClientePerfilAcessoUsuarioIpSegurancaId, ClientePerfilAcessoId, UsuarioClienteId, ClienteEmpresaId — vínculo entre um usuário, seu perfil de acesso e a clínica específica em que esse perfil vale; já mapeado em CIU-E1/E3/E6 — é a partir daqui que o perfil de acesso vigente na clínica atual é resolvido para montar o menu; mais CodProfissional (char(3), [PROPOSTA] — campo novo, ver “Campo novo proposto” abaixo)
ClientePerfilAcessoProcessoIpSegurancaId, ClientePerfilAcessoId, ClienteProcessoId, ExibeMenu (default ‘S’), Ordem, RemovidoEm — liga um ClientePerfilAcesso a um ClienteProcesso; um item só aparece no menu (RN-CIU-027) quando existe aqui uma linha com ExibeMenu = 'S' para o perfil de acesso vigente; Ordem define a posição do item dentro do grupo (ou da lista sem grupo) para aquele perfil especificamente
ClienteUsuarioMenuFavoritoIpSegurancaClientePerfilAcessoUsuarioId, ClientePerfilAcessoProcessoId (PK composta), ProcessoAbertura (default ‘N’), RemovidoEm — a existência de uma linha ativa para o par (usuário/perfil/clínica × item) é o próprio favorito (RN-CIU-028); como ClientePerfilAcessoUsuarioId já é específico por clínica, o favorito é, por construção, específico por clínica também — é essa a origem do comportamento descrito em RN-CIU-028 (favorito não se repete automaticamente ao trocar de clínica); ProcessoAbertura = 'S' marca a escolha do usuário de tela inicial do sistema (RN-CIU-028) — sobrepõe o cockpit padrão quando presente
ClienteEmpresaIpSegurancaId, Nome — não consultada para montar o menu em si; referenciada aqui apenas porque ClientePerfilAcessoUsuario.ClienteEmpresaId é o campo que amarra perfil de acesso à clínica específica (já mapeado em CIU-E1/E3/E6)

Nenhuma tabela nova. Toda a estrutura necessária — itens de menu, agrupamento, habilitação por cliente, liberação e ordem por perfil de acesso, e favoritos — já existe em produção no banco IpSeguranca.

Schema legado identificado e descartado

O banco de template GescomZeradoPadronizacao (mesmo arquivo de origem da Biblioteca de Schema) tem uma estrutura equivalente e mais antiga para menu: SegMenu, SegPastaMenu, SegMenuGrupo e SegMenuDetalhe — esta última com um campo PaginaInicial que corresponde, na estrutura legada, ao mesmo papel do campo ProcessoAbertura de ClienteUsuarioMenuFavorito na estrutura atual — correspondência que ajudou a localizar o campo, com o significado hoje confirmado na Seção 1 (RN-CIU-028).

Essa estrutura legada foi identificada e descartada em favor do schema moderno acima: pertence ao banco de template pré-Clean-Architecture, chaveado por identificadores numéricos locais (smallint) em vez de uniqueidentifier, e não tem nenhum dos conceitos centrais da arquitetura atual — não existe Cliente, ClienteBD (banco por tenant) nem ClienteEmpresa (clínica) na cadeia de chaves de SegMenuDetalhe, apenas um IdUsuario local. Não é uma base compatível com o modelo multi-tenant deste projeto.

Campo novo proposto: ClientePerfilAcessoUsuario.CodProfissional

A Seção 1 (RN-CIU-028) documenta que, na ausência de uma escolha manual de tela inicial, a tela inicial padrão do usuário é seu próprio cockpit, quando seu perfil de acesso tiver um indicado. Esse indicador não existe hoje em nenhuma base consultada (Biblioteca de Schema (DDL) nem EsquemaGemed21.csv — checado em 15/09/2026) — confirmado pelo solicitante como campo novo a criar:

CampoTabelaTipoObrigatoriedadeValor padrãoDescrição
CodProfissionalClientePerfilAcessoUsuario (IpSeguranca)char(3)[PROPOSTA] nullable — ausência de código é o que produz “sem tela inicial” (RN-CIU-028) quando também não há escolha manual[PROPOSTA] sem valor padrão (NULL)Código do tipo de cockpit/fluxo padrão do usuário nessa combinação perfil × clínica — determina qual cockpit abre como tela inicial na ausência de uma escolha manual de tela inicial (RN-CIU-028). Nome, tabela e tipo confirmados pelo solicitante; nullability e domínio de valores (um código por fluxo — médico, enfermagem, farmácia, backoffice, conforme os fluxos por profissional do projeto) são inferência [PROPOSTA], não confirmada.

Migração: ALTER TABLE IPSeguranca.dbo.ClientePerfilAcessoUsuario ADD CodProfissional char(3) NULL[PROPOSTA], pendente de execução real no banco e de registro na Biblioteca de Schema (DDL) depois de aplicada. Ver Log de Mudanças Estruturais do Banco de Dados, entrada de 15/09/2026 (atualizada nesta versão).

Seeds da Funcionalidade

SeedTabela(s)Por cliente ou global?StatusDetalhe completo
Item de menu “Suporte Gemed” (link externo à aplicação de suporte técnico da Interprocess TI)Processo (mais ClienteProcesso e ClientePerfilAcessoProcesso, por cliente/perfil, para habilitá-lo)Global o cadastro do Processo; a habilitação por cliente e perfil de acesso é individual[PROPOSTA] — item de exemplo, existência e nome exatos a confirmar contra o mockup original do menu, hoje indisponível01 - Definição, “Lista consolidada de itens [PROPOSTA]”, item 2
Árvore completa de grupos e itens do menu (quais Processo existem, em quais ProcessoGrupo, com quais ícones e rotas)Processo, ProcessoGrupo, ClienteProcesso, ClientePerfilAcessoProcessoProcesso/ProcessoGrupo globais; ClienteProcesso e ClientePerfilAcessoProcesso por cliente/perfil[PROPOSTA] — pendente de um levantamento de produto que substitua o mockup perdido; sem essa árvore, nenhum cliente novo tem menu funcional além dos módulos já especificados individualmente (Central do Médico/Cockpit, Agenda do Médico)01 - Definição, “Lista consolidada de itens [PROPOSTA]”, item 1

Nenhum parâmetro de configuração (IpParametro/IpParametroChave ou equivalente) é necessário para esta funcionalidade — o comportamento do menu (filtragem, favoritos, busca, responsividade) não depende de nenhum valor configurável por cliente além da própria estrutura de Processo/ClientePerfilAcessoProcesso já listada acima.


Histórico de Versões

  • v1.2 (15/09/2026) — confirmada pelo solicitante a criação de ClientePerfilAcessoUsuario.CodProfissional, char(3) — a pendência técnica anterior (campo não localizado) vira proposta de estrutura: nova subseção “Campo novo proposto” substitui “Pendência técnica: campo do cockpit padrão”, com a migração sugerida. Nullability e domínio de valores do campo seguem [PROPOSTA], não confirmados pelo solicitante. Log de Mudanças Estruturais do Banco de Dados atualizado.
  • v1.1 (15/09/2026) — ClienteUsuarioMenuFavorito.ProcessoAbertura deixa de ser [PROPOSTA]: confirmado como o indicador da escolha do usuário de tela inicial do sistema (RN-CIU-028), sobrepondo o cockpit padrão quando presente. Novo achado: o campo que identifica o cockpit padrão do usuário em ClientePerfilAcessoUsuario, citado pelo solicitante, não foi localizado na Biblioteca de Schema (DDL) nem no EsquemaGemed21.csv — registrado como pendência técnica nesta seção e no Log de Mudanças Estruturais do Banco de Dados.
  • v1.0 (15/09/2026) — versão inicial do épico. Estrutura de dados localizada por completo na Biblioteca de Schema (DDL), banco IpSeguranca — nenhuma tabela nova. Schema legado equivalente (GescomZeradoPadronizacao.dbo.SegMenu/SegPastaMenu/SegMenuGrupo/SegMenuDetalhe) identificado e descartado, com a correspondência de SegMenuDetalhe.PaginaInicial registrada como base da interpretação [PROPOSTA] de ClienteUsuarioMenuFavorito.ProcessoAbertura. Dois seeds registrados como [PROPOSTA] — item “Suporte Gemed” e a árvore completa de grupos/itens do menu, ambos pendentes do mockup original perdido.