Épico 1 — Núcleo de Identidade e Autenticação — Mapeamento de Banco de Dados (v2.3)

Documentos deste épico: 01 - Definição (v2.3) · 02 - Especificação (v2.2) · Protótipo (Seção 3): pendente, ainda não produzido · 04 - Mapeamento de Banco de Dados (v2.3). 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
UsuarioIpSegurancaId, Usuario (login=CPF), CPF, Nome, Apelido, CaminhoFoto, Hash, Salt, DataSenha, TentativasLogin, DHBloqueio, Token, RemovidoEm, UsuarioIdRemovido
UsuarioSenhaHistoricoIpSegurancaUsuarioId, DataSenha, Hash, Salt
UsuarioClienteIpSegurancaUsuarioId, ClienteBDId, Situacao (domínio C/V/B — definido em (CIU-E3), RN-CIU-011; apenas Situacao = ‘V’ conta como vínculo ativo), RemovidoEm
ClientePerfilAcessoUsuarioIpSegurancaUsuarioClienteId, ClienteEmpresaId — consultado para compor a contagem de clínicas acessíveis (RN-CIU-009); um vínculo ativo pode ter mais de um registro aqui, um por ClienteEmpresa liberada pelo administrador (RN-CIU-011, em CIU-E3)
ClienteEmpresaIpSegurancaId, Nome, CaminhoLogo, ClienteBDId, RemovidoEm — cada registro é uma clínica; usado para compor o campo clinicasAcessiveis da resposta do login; consulta filtra RemovidoEm IS NULL — uma ClienteEmpresa desativada não conta como clínica acessível (RN-CIU-009, Seção 1)
ClienteBDIpSegurancaId, ClienteId — tabela intermediária entre UsuarioCliente e Cliente: UsuarioCliente.ClienteBDId referencia ClienteBD.Id, e ClienteBD.ClienteId referencia Cliente.Id. Não tem Nome/CaminhoLogo próprios utilizáveis aqui — apenas viabiliza o salto até Cliente (ver linha abaixo)
ClienteIpSegurancaId, Nome, CaminhoLogo — é quem de fato tem os campos Nome e CaminhoLogo usados para compor clienteNome/clienteLogo no array vinculos da resposta do login (Seção 2); alcançado a partir de UsuarioCliente via ClienteBD (join UsuarioCliente.ClienteBDId → ClienteBD.Id → ClienteBD.ClienteId → Cliente.Id), confirmado na Biblioteca de Schema (DDL), IpSeguranca.sql
UsuarioSenhaParametrosIpSegurancaQuantidadeTentativas, MinutosBloqueado, TamanhoMinimo, MinimoCaracterEspecial, MinimoLetraMaiuscula, MinimoLetraMinuscula, MinimoNumero, CaracteresEspeciais, MinutosValidadeNovaSolicitacao, QuantidadeMemoria

Nenhuma tabela nova é proposta por este épico — todas as tabelas envolvidas já existem em produção.

Separação de bancos: todas as tabelas utilizadas pertencem ao banco IpSeguranca.

Seeds da Funcionalidade

Nenhum seed novo necessário. Os parâmetros consultados por este épico (QuantidadeTentativas, MinutosBloqueado, TamanhoMinimo, MinimoCaracterEspecial, MinimoLetraMaiuscula, MinimoLetraMinuscula, MinimoNumero, CaracteresEspeciais, MinutosValidadeNovaSolicitacao, QuantidadeMemoria — todos em UsuarioSenhaParametros) já existem em produção; este épico apenas os lê, não propõe nenhuma linha nova.


Histórico de Versões

  • v1.0 a v1.9 (07/08/2026 a 27/08/2026) — histórico completo preservado no documento original legado (CIU-E1) Identidade e autenticação v1.9.md, arquivado em Histórico/. Nas versões legadas, este mapeamento vivia na Seção 9.3 (“Mapeamento de Tabelas”), sem subseções de tabelas novas, seeders ou migrations — o épico nunca propôs schema novo.
  • v2.0 (30/08/2026) — Arquivo criado pela reconstrução do documento único (CIU-E1) Identidade e autenticação v1.9.md no modelo padrão Seção 1-4 (ver 01-Definição, Histórico de Versões, para o detalhamento completo da reorganização). Conteúdo da tabela sem alteração de substância. Adicionada a subseção “Seeds da Funcionalidade” (Lição #19 da Skill Designer, nova nesta versão do projeto) — nenhum seed novo proposto por este épico.
  • v2.1 (14/09/2026) — adicionadas ClientePerfilAcessoUsuario e ClienteEmpresa às tabelas existentes utilizadas, consultadas pela RN-CIU-009 corrigida (Seção 1) para compor a contagem de clínicas acessíveis e o novo campo clinicasAcessiveis da resposta do login (Seção 2). Nenhuma tabela nova — ambas já existem em produção.
  • v2.2 (14/09/2026) — adicionadas Cliente e ClienteBD às tabelas existentes utilizadas: a resposta do login (Seção 2) já incluía clienteNome/clienteLogo no array vinculos, mas esta lista não mapeava nenhuma tabela com campos Nome/CaminhoLogo de Cliente — lacuna encontrada em revisão técnica. Confirmado na Biblioteca de Schema (DDL), IpSeguranca.sql, que Cliente (não ClienteBD) tem esses campos, alcançável a partir de UsuarioCliente via ClienteBD (UsuarioCliente.ClienteBDId → ClienteBD.Id → ClienteBD.ClienteId → Cliente.Id). Nenhuma tabela nova — ambas já existem em produção.
  • v2.3 (14/09/2026) — adicionado o campo RemovidoEm à tabela ClienteEmpresa e documentado o filtro RemovidoEm IS NULL na consulta de clínicas acessíveis — consequência da confirmação do solicitante de que uma ClienteEmpresa desativada deixa de dar acesso aos usuários hoje associados a ela (RN-CIU-009, Seção 1). Nenhuma tabela nova.