# Épico 2 — Auto-cadastro Público — Especificação (v2.0)

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

---

## SEÇÃO 2 — ESPECIFICAÇÃO

### Histórias de Usuário

**US-CIU-001 — Auto-cadastro público**
Como profissional não cadastrado, quero me cadastrar no Gemed informando meus dados pessoais e profissionais, para ter uma conta no sistema e poder receber convites de clínicas.

**US-CIU-002 — Validação de CPF no cadastro**
Como profissional não cadastrado, quero que o sistema valide meu CPF durante o cadastro, para evitar erros de digitação e garantir que meu documento está correto.

### Descrição Funcional Detalhada

#### Tela de Auto-cadastro (Wizard)

Propósito: Permitir que uma pessoa crie sua conta no Gemed sem depender de um administrador.

Estrutura: Wizard de 3 etapas com indicador de progresso no topo (barra progress com 3 segmentos).

Comportamento de campos (RN-CIU-008, transversal): todo campo de input possui um placeholder que é o nome do campo (apenas o nome, sem verbos de comando); ao ganhar foco, o placeholder vira label acima do campo. As descrições abaixo não citam o label separadamente.

---

**Etapa 1 — Dados básicos (com complemento profissional condicional)**

Campos principais (sempre exibidos):

- CPF (input text, com máscara automática 000.000.000-00, validação de dígitos verificadores)
- Nome completo (input text, obrigatório, mínimo 3 caracteres)
- Apelido (input text, obrigatório, mínimo 2 caracteres)
- Tratamento (select: Dr., Dra., Sr., Sra., Srta. — opcional)
- Data de nascimento (input date, opcional)
- Celular (input text, com máscara parametrizada por país — RN-CIU-020. No Brasil: formato (00) 00000-0000. Obrigatório)
- E-mail (input email, obrigatório, validação de formato)
- Foto (upload de arquivo, opcional, preview circular com avatar)
- Checkbox/Switch: "Sou profissional de saúde" (MSG-C2-01)

Complemento profissional (exibido apenas se "Sou profissional de saúde" estiver marcado — RN-CIU-019). Ao marcar o switch, os campos abaixo aparecem dinamicamente abaixo do checkbox, na mesma etapa:

- Tipo de profissional (select com busca, obrigatório, lista carregada de tabela de terminologias): Médico, Enfermeira, Farmacêutica, Psicólogo, Nutricionista, Fisioterapeuta, Fonoaudiólogo, Outro profissional de saúde
- Conselho profissional (estrutura genérica — RN-CIU-017, obrigatório para todo profissional de saúde que assina prontuário): Tipo de conselho (select: CRM, COREN, CRF, CRFA, CRN, CRO, etc. — pré-sugerido conforme tipo de profissional, mas editável), Número de registro (input text, obrigatório), UF (select com as 27 unidades federativas)
- Especialidades (multi-select com chips, obrigatório, lista carregada de tabela de terminologias — filtrada conforme tipo de profissional selecionado; campo de busca; chips removíveis; múltiplas seleções)
- CBO — Classificação Brasileira de Ocupações (select com busca, obrigatório, lista carregada de tabela de terminologias)

Comportamento:

- Máscara de CPF aplicada em tempo real conforme digitação
- Validação de CPF (dígitos verificadores) ao sair do campo (onBlur) — se inválido, borda error e mensagem MSG-E2-01
- Validação de e-mail ao sair do campo — se inválido, borda error e mensagem MSG-E2-03
- Verificação de CPF já cadastrado (RN-CIU-004): ao sair do campo CPF, o sistema consulta a base. Se já existe um registro ativo com aquele CPF, exibe dialog MSG-E2-02 com botões "Fazer login" e "Recuperar senha" — ambos redirecionam para a tela apropriada (E1)
- Switch "Sou profissional de saúde" expande/recolhe os campos profissionais na mesma tela, sem navegar para outra etapa
- Tipo de conselho pré-preenchido conforme tipo de profissional selecionado, mas editável
- Lista de especialidades filtrada conforme tipo de profissional
- Número de registro validado quanto ao formato (números) ao sair do campo
- Pelo menos 1 especialidade deve ser selecionada; CBO deve ser selecionado
- Botão "Continuar" desabilitado até todos os campos obrigatórios (principais + profissionais se aplicável) estarem preenchidos e válidos
- Botão "Voltar" não existe na etapa 1 (é a primeira)

Verificação de duplicidade de conselho (SBIS ECF.02.02): ao sair do campo número de registro do conselho, o sistema verifica se já existe um usuário ativo com o mesmo tipo de conselho + número + UF. Se já existe, exibe dialog MSG-E2-04 com botões "Fazer login" e "Recuperar senha".

**Motivador:** o complemento profissional foi integrado à etapa 1 para reduzir a fragmentação do fluxo — o switch expande os campos na mesma tela, mantendo o contexto, o que reduziu o wizard de 4 para 3 etapas.

---

**Etapa 2 — Dados avançados (opcional)**

Propósito: Disponibilizar os campos exigidos pelo SBIS ECF.02.01 sem torná-los obrigatórios.

Aparição: Sempre exibida após a etapa 1. O usuário pode pular esta etapa a qualquer momento.

Estrutura: Organizada em seções colapsáveis (accordions).

Seção: Dados demográficos — Nome da mãe (input text, opcional, com checkbox "Mãe desconhecida" — se marcado, desabilita o campo), Sexo (select: Masculino, Feminino — opcional), Gênero (select: Masculino, Feminino, Transgênero, Não binário, Prefiro não informar — opcional), Raça/cor (select: Branca, Preta, Parda, Amarela, Indígena, Sem informação — opcional), Nacionalidade (select: Brasileira, Naturalizado, Estrangeiro — opcional)

Seção: Naturalidade — Município de nascimento (input text com autocomplete, opcional), UF de nascimento (select, opcional), País de nascimento (select, default Brasil, opcional), Data de naturalização (input date, condicional — exibido apenas se nacionalidade = "Naturalizado")

Seção: Documentos (condicional por nacionalidade — RN-CIU-021)

_Subseção: Documentos nacionais (exibida se nacionalidade = "Brasileira" ou "Naturalizado"):_ Número de identidade, Complemento de identidade, UF da identidade, Órgão emissor, Data de emissão da identidade (todos opcionais), Cartão Nacional de Saúde — CNS (opcional)

_Subseção: Documentos de estrangeiro (exibida se nacionalidade = "Estrangeiro"):_ Número do passaporte, País emissor, Data de emissão, Data de validade (todos opcionais), Cartão Nacional de Saúde — CNS (opcional)

_Nota: Se a nacionalidade não foi selecionada, nenhuma subseção de documentos é exibida. Quando o sistema for internacionalizado, a subseção "Documentos nacionais" deve ser adaptada para exibir os documentos específicos do país de operação (passaporte, SSN, DNI, etc.), mantendo a subseção de estrangeiro para documentos de visitantes._

Seção: Endereço — CEP (input text com máscara 00000-000, opcional — ao preencher, auto-completa logradouro, bairro, município e UF via consulta de CEP), Tipo de logradouro (select, opcional), Logradouro, Número, Complemento, Bairro/Distrito (input text, opcionais), Município (input text com autocomplete, opcional), UF (select, opcional), País (select, default Brasil, opcional)

Seção: Conselho profissional (para não-profissionais de saúde) — Tipo de conselho, Número de registro, UF. _Nota: esta seção só aparece se o usuário NÃO marcou "Sou profissional de saúde" na etapa 1. Se marcou, o conselho já foi preenchido na etapa 1._

Comportamento:

- Texto orientador no topo: MSG-T2-01
- Botão "Pular esta etapa" (tertiary) visível e acessível — direciona para a etapa 3
- Botão "Continuar" (primary) — habilitado independentemente de campos preenchidos (todos são opcionais)
- Botão "Voltar" retorna à etapa 1
- Campos condicionais (naturalização, documentos por nacionalidade) aparecem/desaparecem conforme seleção
- Auto-preenchimento de endereço via CEP

**Motivador:** a etapa 2 é sempre exibida mas nunca bloqueia o avanço. As seções em accordion reduzem a carga visual. A seção de documentos é condicional por nacionalidade, evitando exibir campos irrelevantes. Todos os campos desta etapa podem ser preenchidos posteriormente no Meu Perfil (E4).

---

**Etapa 3 — Definição de senha**

Campos: Senha (input password, toggle de visibilidade, obrigatório), Confirmar senha (idem), Indicador de força da senha (barra progress vermelho→amarelo→verde), Lista de critérios de complexidade (checkbox visuais automáticos)

Comportamento:

- Indicador de força atualiza em tempo real conforme digitação
- Confirmar senha valida igualdade ao sair do campo — se diferente, borda error e mensagem MSG-E2-05
- Botão "Finalizar cadastro" desabilitado até senha atender todos os critérios e confirmação ser igual
- Botão "Voltar" retorna à etapa 2

Critérios de complexidade da senha — parametrizados via tabela UsuarioSenhaParametros (IpSeguranca), conforme RN-CIU-006 (guarda-chuva):

|Parâmetro (campo na tabela)|Descrição|Valor atual|
|---|---|---|
|TamanhoMinimo|Quantidade mínima de caracteres na senha|8|
|MinimoCaracterEspecial|Quantidade mínima de caracteres especiais|1|
|MinimoLetraMaiuscula|Quantidade mínima de letras maiúsculas|1|
|MinimoLetraMinuscula|Quantidade mínima de letras minúsculas|1|
|MinimoNumero|Quantidade mínima de números (dígitos)|1|
|CaracteresEspeciais|Caracteres especiais válidos aceitos|!@#$%^&*-_+=?;:\||

O sistema consulta estes parâmetros em tempo real ao validar a nova senha. A interface de critérios visuais deve refletir os valores parametrizados.

Mecanismo de armazenamento de senha (detalhe técnico): ao finalizar o cadastro, o sistema (1) gera um Salt aleatório único para o usuário, (2) utiliza o Salt para gerar o Hash da senha digitada, (3) armazena Hash e Salt na tabela Usuario, (4) registra a senha em UsuarioSenhaHistorico (se QuantidadeMemoria > 0), (5) cria o registro de Usuario com os dados das etapas 1 (incluindo complemento profissional se aplicável) e 2 (se preenchida). A senha é armazenada exclusivamente como hash + salt — nunca em texto plano.

---

**Tela de sucesso**

Layout: ícone de check (círculo verde, primary-pure), Título: MSG-S2-01, Texto: MSG-S2-02.

Comportamento (RN-CIU-022): ao concluir o cadastro com sucesso, o sistema autentica o profissional automaticamente, reutilizando o mesmo mecanismo de autenticação descrito no Épico 1 (Seção 2) — não é necessário informar CPF e senha novamente. Como quem conclui este wizard nunca tem convite pendente (ver 01-Definição, "Dependências"), o resultado do roteamento padrão (RN-CIU-009, E1) é sempre o redirecionamento à página de Meu Perfil (Épico 4) com o banner informativo MSG-I01.

**[PROPOSTA — decisão de UI não confirmada explicitamente pelo solicitante, apenas o comportamento de autenticação automática acima]** A tela de sucesso é exibida brevemente, com o ícone de check e a mensagem de boas-vindas, antes do redirecionamento automático a Meu Perfil. O botão "Ir para o login" (MSG-B2-07) foi removido desta tela, já que não há mais uma etapa de login manual neste fluxo.

**Motivador:** wizard em 3 etapas para reduzir carga cognitiva. A etapa 1 integra os dados básicos e o complemento profissional condicional, evitando navegação desnecessária. A etapa de dados avançados é opcional e fácil de pular. A validação de CPF e conselho já cadastrados acontece em tempo real para evitar frustração no final do processo. A identificação do tipo de profissional permite que o sistema filtre especialidades e sugira o conselho correto. A seção de documentos condicional por nacionalidade evita exibir campos irrelevantes e está preparada para internacionalização futura.

### Critérios de Aceitação

**US-CIU-001 — Auto-cadastro público**

**CA-001.1**: Dado que estou na tela de cadastro, quando informo um CPF válido e não cadastrado, então o sistema aceita o CPF e permite continuar.

**CA-001.2**: Dado que informei um CPF já cadastrado, quando saio do campo, então o sistema exibe o dialog MSG-E2-02 oferecendo opções de login ou recuperação de senha.

**CA-001.3**: Dado que informei um CPF inválido (dígitos verificadores incorretos), quando saio do campo, então o sistema exibe a mensagem MSG-E2-01 e não permite continuar.

**CA-001.4**: Dado que preenchi todos os campos obrigatórios da etapa 1, quando clico em "Continuar", então o sistema avança para a etapa 2.

**CA-001.5**: Dado que estou na etapa 2 (dados avançados), quando clico em "Pular esta etapa", então o sistema avança para a etapa 3 sem exigir nenhum preenchimento.

**CA-001.6**: Dado que estou na etapa 3, quando defino uma senha que atende todos os critérios de complexidade parametrizados em UsuarioSenhaParametros e a confirmação é igual, então o botão "Finalizar cadastro" é habilitado.

**CA-001.7**: Dado que finalizei o cadastro, quando o sistema cria o registro, então vejo a tela de sucesso e sou autenticado automaticamente pelo sistema, sem precisar informar CPF e senha novamente (RN-CIU-022).

**CA-001.8**: Dado que cadastrei com sucesso, quando tento fazer login, então o sistema me autentica e direciona para o Meu Perfil com banner "Você não está vinculado a nenhuma clínica ativa".

**CA-001.9**: Dado que marquei "Sou profissional de saúde" na etapa 1, quando o switch é ativado, então os campos de tipo de profissional, conselho profissional (tipo, número, UF), especialidades e CBO aparecem na mesma tela como obrigatórios.

**CA-001.10**: Dado que não marquei "Sou profissional de saúde" na etapa 1, quando chego à etapa 2, então a seção "Conselho profissional" aparece disponível para preenchimento opcional.

**CA-001.11**: Dado que informei um conselho profissional já cadastrado (mesmo tipo + número + UF) na etapa 1, quando saio do campo, então o sistema exibe o dialog MSG-E2-04 oferecendo opções de login ou recuperação de senha.

**CA-001.12**: Dado que preenchi o CEP na etapa 2, quando saio do campo, então o sistema auto-completa logradouro, bairro, município e UF.

**CA-001.13**: Dado que selecionei nacionalidade "Estrangeiro" na etapa 2, quando o campo aparece, então a subseção de documentos de estrangeiro (passaporte, país emissor, datas) é exibida e a subseção de documentos nacionais é ocultada.

**CA-001.14**: Dado que selecionei nacionalidade "Brasileira" na etapa 2, quando o campo aparece, então a subseção de documentos nacionais (identidade, CNS) é exibida e a subseção de documentos de estrangeiro é ocultada.

**CA-001.15**: Dado que marquei "Mãe desconhecida" na etapa 2, quando o checkbox é marcado, então o campo "Nome da mãe" é desabilitado e não exige preenchimento.

**CA-001.16**: Dado que selecionei tipo de profissional "Enfermeira" na etapa 1, quando o campo de conselho é carregado, então o tipo de conselho é pré-sugerido como "COREN" (mas o usuário pode alterar).

**CA-001.17**: Dado que selecionei tipo de profissional "Médico" na etapa 1, quando as especialidades são carregadas, então apenas especialidades médicas são exibidas.

**CA-001.18**: Dado que o sistema está operando no Brasil, quando o campo de celular recebe foco, então a máscara aplicada é (00) 00000-0000.

**CA-001.19**: Dado que não selecionei nenhuma nacionalidade na etapa 2, quando visualizo a seção de documentos, então nenhuma subseção de documentos é exibida.

**US-CIU-002 — Validação de CPF no cadastro**

**CA-002.1**: Dado que digitei um CPF com dígitos verificadores incorretos, quando saio do campo, então vejo a mensagem MSG-E2-01 e o botão "Continuar" fica desabilitado.

**CA-002.2**: Dado que digitei um CPF válido e não cadastrado, quando saio do campo, então não vejo mensagem de erro e o botão "Continuar" é habilitado (se demais campos válidos).

**CA-002.3**: Dado que digitei um CPF já cadastrado, quando saio do campo, então o sistema exibe o dialog MSG-E2-02 com opções de login ou recuperação de senha.

### Fluxos de Exceção

**EX-E2-01 — CPF inválido no cadastro**
Gatilho: usuário digita CPF com dígitos verificadores incorretos na etapa 1. Comportamento: campo exibe borda error, mensagem inline MSG-E2-01, botão "Continuar" permanece desabilitado. Recuperação: usuário corrige o CPF; validação roda novamente ao sair do campo.

**EX-E2-02 — CPF já cadastrado no cadastro**
Gatilho: usuário digita CPF que já existe na base como registro ativo. Comportamento: dialog MSG-E2-02 exibido com botões "Fazer login" e "Recuperar senha". Recuperação: usuário é redirecionado para login ou recuperação; o cadastro é interrompido.

**EX-E2-03 — Conselho profissional já cadastrado**
Gatilho: usuário informa conselho (tipo + número + UF) que já existe na base para outro usuário ativo. Comportamento: dialog MSG-E2-04 exibido com botões "Fazer login" e "Recuperar senha". Recuperação: usuário é redirecionado para login ou recuperação; o cadastro é interrompido.

**EX-E2-04 — Caractere especial não permitido na senha**
Gatilho: usuário utiliza um caractere especial que não está na lista parametrizada em CaracteresEspeciais. Comportamento: o critério "Caracteres especiais" na lista visual não é marcado como atendido, e o botão "Finalizar cadastro" permanece desabilitado. Recuperação: usuário utiliza apenas caracteres da lista parametrizada (atualmente: !@#$%^&*-_+=?;:|).

**EX-E2-05 — Senhas não coincidem**
Gatilho: usuário informa senhas diferentes nos campos "senha" e "confirmar senha". Comportamento: campo de confirmação exibe borda error e mensagem MSG-E2-05. Recuperação: usuário corrige a confirmação.

**EX-E2-06 — Erro ao criar cadastro**
Gatilho: back-end retorna erro ao tentar criar o registro do usuário. Comportamento: toast error MSG-E2-06 exibido abaixo do botão "Finalizar cadastro". Botão volta ao estado default. Recuperação: usuário tenta novamente.

### Validações de Campos

|Campo|Tela|Tipo|Obrigatório|Formato/Regra|Mensagem de erro|
|---|---|---|---|---|---|
|CPF|Etapa 1|Texto com máscara|Sim|11 dígitos + validação de dígitos verificadores|MSG-E2-01|
|Nome completo|Etapa 1|Texto|Sim|Mínimo 3 caracteres, máximo 100|MSG-E2-07|
|Apelido|Etapa 1|Texto|Sim|Mínimo 2 caracteres, máximo 50|MSG-E2-08|
|Tratamento|Etapa 1|Select|Não|Dr., Dra., Sr., Sra., Srta.|N/A|
|Data de nascimento|Etapa 1|Date|Não|Data válida, não futura|MSG-E2-09|
|Celular|Etapa 1|Texto com máscara|Sim|Máscara parametrizada por país (Brasil: (00) 00000-0000)|MSG-E2-10|
|E-mail|Etapa 1|E-mail|Sim|Formato user@domain.com|MSG-E2-03|
|Foto|Etapa 1|Upload|Não|Imagem (jpg, png), max 5MB|MSG-E2-11|
|"Sou profissional de saúde"|Etapa 1|Checkbox|Não|Boolean|N/A|
|Tipo de profissional|Etapa 1 (complemento)|Select com busca|Sim (se profissional de saúde)|Lista de terminologias|N/A|
|Tipo de conselho|Etapa 1 (complemento)|Select|Sim (se profissional de saúde)|Lista de conselhos|N/A|
|Número de registro|Etapa 1 (complemento)|Texto|Sim (se profissional de saúde)|Numérico|MSG-E2-12|
|UF do conselho|Etapa 1 (complemento)|Select|Sim (se profissional de saúde)|27 unidades federativas|N/A|
|Especialidades|Etapa 1 (complemento)|Multi-select|Sim (se profissional de saúde)|Mínimo 1 seleção|MSG-E2-13|
|CBO|Etapa 1 (complemento)|Select com busca|Sim (se profissional de saúde)|Lista de ocupações|N/A|
|Nome da mãe|Etapa 2|Texto|Não|Desabilitado se "Mãe desconhecida" marcado|N/A|
|Sexo|Etapa 2|Select|Não|Masculino, Feminino|N/A|
|Gênero|Etapa 2|Select|Não|Masculino, Feminino, Transgênero, Não binário, Prefiro não informar|N/A|
|Raça/cor|Etapa 2|Select|Não|Branca, Preta, Parda, Amarela, Indígena, Sem informação|N/A|
|Nacionalidade|Etapa 2|Select|Não|Brasileira, Naturalizado, Estrangeiro|N/A|
|Número de identidade|Etapa 2 (se nacional)|Texto|Não|—|N/A|
|Número do passaporte|Etapa 2 (se estrangeiro)|Texto|Não|—|N/A|
|CEP|Etapa 2|Texto com máscara|Não|Formato 00000-000|MSG-E2-14|
|CNS|Etapa 2|Texto|Não|Formato numérico|MSG-E2-15|
|Senha|Etapa 3|Password|Sim|TamanhoMinimo (8) + MinimoCaracterEspecial (1) + MinimoLetraMaiuscula (1) + MinimoLetraMinuscula (1) + MinimoNumero (1) + CaracteresEspeciais — parametrizados em UsuarioSenhaParametros|Indicador visual de critérios não atendidos|
|Confirmar senha|Etapa 3|Password|Sim|Deve ser igual ao campo Senha|MSG-E2-05|

### Mapeamento de Componentes de Interface

|Componente|Variante|Estado(s)|Tokens aplicados|Onde aparece|
|---|---|---|---|---|
|Input (text)|Bordered|default, focus, error, disabled|input-height: 56px, radius-m (8px), neutral-light border (#BECADC), neutral-darker focus border (#01013B), texto em edição neutral-dark (#012856)|CPF, Nome, Apelido, Celular, Número de registro, Nome da mãe, CEP, CNS, Passaporte, etc.|
|Input (email)|Bordered|default, focus, error|Mesmos tokens do input text|E-mail|
|Input (date)|Bordered|default, focus|Mesmos tokens do input text|Data de nascimento, Data de naturalização, Data de emissão, Data de validade|
|Input (password)|Bordered com toggle|default, focus, error|Mesmos tokens + ícone olho clicável|Senha, Confirmar senha|
|Button|Primary|default, hover, loading, disabled|btn-height: 40px, primary-pure bg (#00E676), base-pure text (#FFFFFF), radius-m (8px)|Continuar, Finalizar cadastro|
|Button|Tertiary|default, hover|Transparent bg, primary-pure text (#00E676)|Voltar, Pular esta etapa|
|Select|Default|default, open, selected|input-height: 56px, radius-m (8px), neutral-light border|Tratamento, Tipo de profissional, Tipo de conselho, UF, Sexo, Gênero, Raça/cor, Nacionalidade, País|
|Checkbox|Default|default, checked, disabled|20px box, primary-pure (#00E676) quando checked|"Sou profissional de saúde", "Mãe desconhecida"|
|Chip|Default, Active|default, active, hover|radius-pill, neutral-lighter bg / primary-light bg|Especialidades selecionadas|
|Avatar|md, lg|default|radius-full, primary-light bg|Preview de foto|
|Progress|Linear|default|radius-pill, neutral-lighter track (#E5EAF0), primary-pure bar (#00E676)|Indicador de etapas do wizard, força de senha|
|Accordion|Default|collapsed, expanded|radius-m, neutral-lighter bg, neutral-dark text|Seções da etapa 2 (dados avançados)|
|Dialog|Default|open, closed|radius-l, base-pure bg, shadow-heavy|CPF já cadastrado, conselho já cadastrado|
|Toast|Success, Error|animation: toast-in (300ms)|secondary-dark bg (#0091EA) / error-pure bg (#F44336)|Cadastro realizado, erro ao criar cadastro|

### Integração com Backend

#### Auto-cadastro

|Função|Método|Path|Request Body|Response Body|Códigos HTTP|
|---|---|---|---|---|---|
|Verificar CPF|GET|/api/usuarios/verificar-cpf?cpf={cpf}|—|{ existe: boolean, nome?: string }|200|
|Verificar conselho|GET|/api/usuarios/verificar-conselho?tipo={tipo}&numero={numero}&uf={uf}|—|{ existe: boolean, nome?: string }|200|
|Criar cadastro|POST|/api/usuarios|{ cpf, nome, apelido, tratamento, dataNascimento, telefone, email, caminhoFoto, tipoProfissional?, conselho?: { tipo, numero, uf }, especialidades?: [], cbo?: string, dadosAvancados?: { ... }, senha }|{ id, nome }|201, 400 (dados inválidos), 409 (CPF ou conselho já existe)|
|Upload de foto|POST|/api/usuarios/foto|multipart/form-data|{ caminhoFoto: string }|201, 400|

O mapeamento das tabelas consultadas por estes endpoints, e as pendências de campos/tabelas ainda não mapeados, estão na Seção 4 (Mapeamento de Banco de Dados), não repetidos aqui (Lição #10 da Skill Designer).

### Catálogo de Mensagens do Sistema e Termos de Interface (i18n)

Todas as mensagens exibidas ao usuário neste épico, com suas traduções para os três idiomas suportados (RN-CIU-007, transversal).

**Mensagens de erro**

|ID|Contexto|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-E2-01|CPF inválido (dígitos verificadores)|"CPF inválido. Verifique o número."|"Invalid CPF. Please check the number."|"CPF inválido. Verifique el número."|
|MSG-E2-02|CPF já cadastrado (dialog)|"Este CPF já está cadastrado no Gemed. Deseja fazer login ou recuperar sua senha?"|"This CPF is already registered in Gemed. Would you like to log in or recover your password?"|"Este CPF ya está registrado en Gemed. ¿Desea iniciar sesión o recuperar su contraseña?"|
|MSG-E2-03|E-mail inválido|"E-mail inválido."|"Invalid email."|"Correo electrónico inválido."|
|MSG-E2-04|Conselho já cadastrado (dialog)|"Este conselho profissional já está cadastrado no Gemed. Deseja fazer login ou recuperar sua senha?"|"This professional council is already registered in Gemed. Would you like to log in or recover your password?"|"Este consejo profesional ya está registrado en Gemed. ¿Desea iniciar sesión o recuperar su contraseña?"|
|MSG-E2-05|Senhas não coincidem|"As senhas não coincidem."|"Passwords do not match."|"Las contraseñas no coinciden."|
|MSG-E2-06|Erro ao criar cadastro|"Não foi possível concluir o cadastro. Tente novamente."|"Could not complete the registration. Please try again."|"No fue posible completar el registro. Inténtelo de nuevo."|
|MSG-E2-07|Nome muito curto|"Nome deve ter no mínimo 3 caracteres."|"Name must be at least 3 characters long."|"El nombre debe tener al menos 3 caracteres."|
|MSG-E2-08|Apelido muito curto|"Apelido deve ter no mínimo 2 caracteres."|"Nickname must be at least 2 characters long."|"El apodo debe tener al menos 2 caracteres."|
|MSG-E2-09|Data de nascimento inválida|"Data inválida."|"Invalid date."|"Fecha inválida."|
|MSG-E2-10|Celular inválido|"Celular inválido."|"Invalid phone number."|"Número de celular inválido."|
|MSG-E2-11|Arquivo de foto muito grande|"Arquivo muito grande. Máximo 5MB."|"File too large. Maximum 5MB."|"Archivo demasiado grande. Máximo 5MB."|
|MSG-E2-12|Número de registro inválido|"Número de registro inválido. Use apenas números."|"Invalid registration number. Use numbers only."|"Número de registro inválido. Use solo números."|
|MSG-E2-13|Especialidade não selecionada|"Selecione pelo menos uma especialidade."|"Select at least one specialty."|"Seleccione al menos una especialidad."|
|MSG-E2-14|CEP inválido|"CEP inválido."|"Invalid ZIP code."|"Código postal inválido."|
|MSG-E2-15|CNS inválido|"CNS inválido."|"Invalid CNS number."|"Número de CNS inválido."|

**Mensagens de sucesso**

|ID|Contexto|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-S2-01|Cadastro realizado (título)|"Cadastro realizado!"|"Registration complete!"|"¡Registro completado!"|
|MSG-S2-02|Cadastro realizado (texto)|"Sua conta foi criada no Gemed. Você pode ser convidado por clínicas para se vincular e começar a usar o sistema."|"Your account has been created in Gemed. You can be invited by clinics to link and start using the system."|"Su cuenta ha sido creada en Gemed. Puede ser invitado por clínicas para vincularse y comenzar a usar el sistema."|

**Placeholders**

|ID|Campo|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-P2-01|CPF|"CPF"|"CPF"|"CPF"|
|MSG-P2-02|Nome completo|"Nome completo"|"Full name"|"Nombre completo"|
|MSG-P2-03|Apelido|"Apelido"|"Nickname"|"Apodo"|
|MSG-P2-04|Celular|"Celular"|"Phone number"|"Número de celular"|
|MSG-P2-05|E-mail|"E-mail"|"Email"|"Correo electrónico"|
|MSG-P2-06|Número de registro|"Número de registro"|"Registration number"|"Número de registro"|
|MSG-P2-07|Nome da mãe|"Nome da mãe"|"Mother's name"|"Nombre de la madre"|
|MSG-P2-08|CEP|"CEP"|"ZIP code"|"Código postal"|
|MSG-P2-09|CNS|"CNS"|"CNS number"|"Número de CNS"|
|MSG-P2-10|Número de identidade|"Número de identidade"|"ID number"|"Número de identificación"|
|MSG-P2-11|Passaporte|"Passaporte"|"Passport"|"Pasaporte"|
|MSG-P2-12|Tipo de profissional|"Tipo de profissional"|"Professional type"|"Tipo de profesional"|

**Textos orientadores**

|ID|Contexto|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-T2-01|Etapa 2 — texto orientador|"Estes dados são opcionais e podem ser preenchidos depois no seu perfil. Preencha agora se quiser agilizar seu cadastro nas clínicas."|"This data is optional and can be filled in later in your profile. Fill it in now to speed up your clinic registration."|"Estos datos son opcionales y pueden completarse más tarde en su perfil. Complételos ahora si desea agilizar su registro en las clínicas."|

**Rótulos de botões e links**

|ID|Elemento|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-B2-01|Botão (etapa 1, 2)|"Continuar"|"Continue"|"Continuar"|
|MSG-B2-02|Botão (etapa 2, 3)|"Voltar"|"Back"|"Volver"|
|MSG-B2-03|Botão (etapa 2)|"Pular esta etapa"|"Skip this step"|"Omitir este paso"|
|MSG-B2-04|Botão (etapa 3)|"Finalizar cadastro"|"Complete registration"|"Finalizar registro"|
|MSG-B2-05|Botão (dialog CPF/conselho)|"Fazer login"|"Log in"|"Iniciar sesión"|
|MSG-B2-06|Botão (dialog CPF/conselho)|"Recuperar senha"|"Recover password"|"Recuperar contraseña"|

**Rótulos de checkbox**

|ID|Elemento|pt-BR|en-US|es-419|
|---|---|---|---|---|
|MSG-C2-01|Checkbox (etapa 1)|"Sou profissional de saúde"|"I am a healthcare professional"|"Soy profesional de la salud"|
|MSG-C2-02|Checkbox (etapa 2)|"Mãe desconhecida"|"Mother unknown"|"Madre desconocida"|

### Conformidade SBIS (detalhamento)

**ECF.02.01 — Identificação dos profissionais da organização** (estágio 1, obrigatório) — "O S-RES deve permitir o cadastro de profissionais da organização permitindo registrar minimamente os seguintes campos: nome; nome social/apelido; nome da mãe; sexo; gênero; data de nascimento; raça/cor; nacionalidade; município de nascimento e UF; data de naturalização; país de nascimento; passaporte; e-mail; telefone; endereço completo; CPF; identidade; CNS; conselho profissional; CBO. Os campos devem estar presentes no formulário, mas não necessariamente de preenchimento obrigatório." Como é atendido: todos os campos exigidos pelo SBIS estão presentes no wizard — campos obrigatórios (etapa 1): nome, apelido, data de nascimento, e-mail, telefone, CPF; campos obrigatórios para profissionais de saúde (etapa 1, complemento): tipo de profissional, conselho profissional (tipo, número, UF), especialidades, CBO; campos opcionais (etapa 2): nome da mãe (com "mãe desconhecida"), sexo, gênero, raça/cor, nacionalidade, naturalidade, documentos (condicional por nacionalidade), endereço completo; foto (etapa 1, opcional).

**ECF.02.02 — Duplicidade de cadastros de profissionais** (estágio 1, obrigatório) — "O S-RES deve possuir um mecanismo de validação que emita uma mensagem de aviso ao usuário e impeça a continuidade do registro em caso de duplicidade de cadastro de profissional. A validação deve ser realizada pelo menos para o número do CPF e conselho profissional." Como é atendido: validação de CPF (dialog MSG-E2-02) e de conselho (dialog MSG-E2-04), ambas em tempo real, impedindo a continuidade do cadastro.

**NGS1.02.03 — Qualidade da senha** (estágio 1, obrigatório) — a senha do auto-cadastro é validada contra os critérios parametrizados em UsuarioSenhaParametros (mesmos do E1), que atendem e superam o mínimo exigido.

**NGS1.02.17 — Revelação de credenciais na interface de autenticação** (estágio 1, obrigatório) — os campos de senha e confirmação utilizam máscara de caracteres (toggle de visibilidade). O formulário não memoriza nem exibe credenciais digitadas anteriormente.

**NGS1.02.19 — Uso de SALT** (estágio 2, recomendado) — salt aleatório único gerado por usuário no momento do cadastro (Mecanismo de armazenamento de senha, acima).

**NGS1.03.09 — Identidade única da pessoa e responsabilização** (estágio 1, obrigatório) — verificação de CPF único (RN-CIU-004) impede duas contas para a mesma pessoa.

**ECF.17.19 — Mensagens do sistema** (estágio 1, obrigatório) — todas as mensagens exibidas ao usuário estão catalogadas acima em linguagem não técnica, em português do Brasil, com suporte multilíngue para en-US e es-419. Mensagens técnicas de banco de dados ou infraestrutura são capturadas pelo back-end e nunca exibidas ao usuário.

---

## Histórico de Versões

- **v1.0 a v1.6** (08/08/2026 a 27/08/2026) — histórico completo preservado no documento original legado `(CIU-E2) Auto-cadastro de usuário v1.6.md`, arquivado em `Histórico/`.
- **v2.0** (30/08/2026) — Arquivo criado pela reconstrução do documento único `(CIU-E2) Auto-cadastro de usuário v1.6.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). Nesta seção especificamente: Conformidade SBIS expandida com o detalhamento de NGS1.02.19 e NGS1.03.09 (antes só listados, sem "como atendido", na tabela de SBIS do guarda-chuva); nenhuma regra de negócio, critério de aceitação, fluxo de exceção ou mensagem teve seu conteúdo alterado.
