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

**Documentos deste épico:** [01 - Definição](./01%20-%20Defini%C3%A7%C3%A3o%20v2.3.md) (v2.3) · [02 - Especificação](./02%20-%20Especifica%C3%A7%C3%A3o%20v2.2.md) (v2.2) · Protótipo (Seção 3): **pendente**, ainda não produzido · [04 - Mapeamento de Banco de Dados](./04%20-%20Mapeamento%20de%20Banco%20de%20Dados%20v2.3.md) (v2.3). Este épico faz parte do documento guarda-chuva [Check-in de Usuários](../00%20-%20Guarda-chuva%20v2.20.md).

---

## SEÇÃO 4 — MAPEAMENTO DE BANCO DE DADOS

### Tabelas existentes utilizadas

|**Tabela**|**Banco**|**Campos utilizados neste épico**|
|---|---|---|
|**Usuario**|IpSeguranca|Id, Usuario (login=CPF), CPF, Nome, Apelido, CaminhoFoto, Hash, Salt, DataSenha, TentativasLogin, DHBloqueio, Token, RemovidoEm, UsuarioIdRemovido|
|**UsuarioSenhaHistorico**|IpSeguranca|UsuarioId, DataSenha, Hash, Salt|
|**UsuarioCliente**|IpSeguranca|UsuarioId, ClienteBDId, Situacao (domínio C/V/B — definido em (CIU-E3), RN-CIU-011; apenas Situacao = 'V' conta como vínculo ativo), RemovidoEm|
|**ClientePerfilAcessoUsuario**|IpSeguranca|UsuarioClienteId, 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)|
|**ClienteEmpresa**|IpSeguranca|Id, 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)|
|**ClienteBD**|IpSeguranca|Id, 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)|
|**Cliente**|IpSeguranca|Id, 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`|
|**UsuarioSenhaParametros**|IpSeguranca|QuantidadeTentativas, 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.
