ÉPICO 1 — NÚCLEO DE IDENTIDADE E AUTENTICAÇÃO

Funcionalidade pai: Check-in de Usuários no Sistema
Persona principal: Usuário autenticado Versão: 1.7 (revisada) Data: 27/08/2026

1. Visão Geral do Épico

1.1 O que inclui

Este épico é a fundação de todo o fluxo de check-in de usuários no sistema Gemed. Ele contempla:

  • Tela de login com documento único (CPF no Brasil) e senha
  • Validação de credenciais do usuário
  • Controle de tentativas de login com limite e bloqueio parametrizáveis
  • Bloqueio temporário após número parametrizado de tentativas falhas (atualmente 5) por período parametrizado (atualmente 15 minutos)
  • Fluxo de recuperação de senha via código de verificação (enviado por e-mail ou celular)
  • Redefinição de senha com critérios de complexidade parametrizáveis
  • Registro de histórico de senhas para política de não reutilização (quantidade parametrizável)
  • Encerramento de sessão (logout)

1.2 Dependências

Este épico não possui dependências funcionais de outros épicos — é a base do sistema. Pode ser desenvolvido em paralelo com o E2 (Auto-cadastro Público), pois ambos utilizam a mesma estrutura de dados de usuário e a mesma lógica de armazenamento de senha. Desde a definição de RN-CIU-022 (autenticação automática pós-auto-cadastro), o E2 passa a depender do mecanismo de autenticação descrito na Seção 4.1 deste épico — ao concluir o wizard de auto-cadastro, o E2 invoca o mesmo processo de geração de sessão/token aqui documentado.

1.3 Paralelização

E2 (Auto-cadastro Público) pode ser construído simultaneamente, pois compartilha a mesma estrutura de dados e a mesma lógica de criptografia de senha.

2. Regras de Negócio

Este épico também aplica as regras transversais RN-CIU-005 (exclusão lógica), RN-CIU-006 (qualidade e histórico de senha), RN-CIU-007 (suporte multilíngue), RN-CIU-008 (comportamento de campos de input) e RN-CIU-022 (autenticação automática pós-auto-cadastro — o mecanismo de autenticação e roteamento pós-login descrito nas Seções 2 e 4.1 deste épico é o mesmo reutilizado pelo E2 ao final do wizard) — redação completa no documento guarda-chuva (Check-In de usuários no sistema), Seção 5.

RN-CIU-001 — Documento único como chave de identificação

O usuário é identificado de forma unívoca pelo seu documento único. No Brasil, o CPF é a chave de identificação. Em outros países, o sistema deve adaptar para o documento local equivalente (passaporte, SSN, etc.). O documento é exclusivo — um mesmo documento não pode pertencer a dois usuários diferentes. O login é feito com o documento único + senha.

RN-CIU-009 — Autenticação

A autenticação valida documento único + senha. O sistema localiza o usuário pelo documento informado e valida a senha utilizando mecanismo de hash + salt (detalhado na Seção 4.1). Usuários excluídos logicamente são tratados como inexistentes — a autenticação falha com mensagem genérica, sem revelar que o usuário foi excluído.

Após autenticação bem-sucedida, o sistema avalia os vínculos ativos do usuário:

  1. Se possui 1 vínculo ativo — entra direto na clínica, carrega perfil de acesso e monta menu lateral. Direciona para o cockpit do profissional conforme seu tipo (médico → Central do Médico, enfermeira → cockpit da enfermagem, etc.). Se o tipo de profissional não tiver um cockpit específico definido, o sistema carrega apenas o perfil e o menu lateral, sem uma tela ativa.
  2. Se possui múltiplos vínculos ativos — direciona para a tela de seleção de clínica (Épico 6).
  3. Se possui 0 vínculos ativos — direciona para a página de Meu Perfil (Épico 4) com banner informativo (MSG-I01).

Nota (RN-CIU-022): este mesmo mecanismo de avaliação de vínculos é reaproveitado quando o E2 autentica automaticamente o profissional ao final do auto-cadastro. Como o usuário acabou de se cadastrar e ainda não foi convidado por nenhuma clínica, o caso típico é 0 vínculos ativos — resultando no direcionamento a Meu Perfil com o banner MSG-I01, conforme decisão confirmada em 27/08/2026.

RN-CIU-010 — Tentativas de login (parametrizável)

O sistema controla tentativas de login falhas de forma parametrizada. Os parâmetros são:

  • Quantidade de tentativas (atualmente 5) — número máximo de tentativas falhas consecutivas antes do bloqueio
  • Minutos de bloqueio (atualmente 15) — duração do bloqueio temporário em minutos

Quando o usuário atinge o limite de tentativas falhas, o sistema bloqueia novas tentativas pelo período parametrizado. A cada login bem-sucedido, o contador de tentativas é zerado. Após o bloqueio expirar, o usuário pode tentar novamente.

RN-CIU-016 — Sem validação de formato nem máscara no login

No fluxo de login, o sistema não aplica máscara visual nem validação de formato no campo de documento. O campo aceita qualquer texto digitado de forma livre — letras, números, símbolos, qualquer combinação. Isso evita dar pistas a quem está tentando acessar o sistema sobre:

  • Se o documento tem formato válido (indicando que o sistema reconhece aquele CPF)
  • Se o documento existe na base (diferenciando “formato inválido” de “credenciais incorretas”)

A única resposta para qualquer falha de login é a mensagem genérica MSG-E01 (ver Seção 10), sem distinguir a causa.

Esta regra está alinhada com a prática de segurança contra enumeração de usuários — o atacante não consegue descobrir quais CPFs estão cadastrados apenas observando o comportamento do formulário de login.

3. Histórias de Usuário

US-CIU-003 — Login com documento único

Como usuário autenticado, quero fazer login com meu CPF e senha, para acessar o sistema e iniciar meu trabalho na clínica.

US-CIU-009 — Recuperação de senha

Como usuário que esqueceu a senha, quero recuperá-la via e-mail ou celular com código de verificação, para voltar a acessar o sistema sem precisar de suporte.

4. Descrição Funcional Detalhada

4.1 Tela de Login

Propósito:

Autenticar o usuário no sistema via documento único + senha.

Layout (mobile first):

  • Logo do Gemed centralizado no topo
  • Campo de texto “Usuário” — input sem máscara, placeholder MSG-P01
  • Campo de senha “Senha” — input com toggle de visibilidade (ícone olho), placeholder MSG-P02
  • Botão primário “Entrar” (MSG-B01) — largura total, cor primary-pure (#00E676)
  • Link terciário “Esqueci minha senha” (MSG-B02) — abaixo do botão, alinhado ao centro
  • Link terciário “Cadastrar-se” (MSG-B03) — abaixo, alinhado ao centro

Comportamento de campos (aplicável a todos os inputs do sistema):

Todo campo de input possui um placeholder que é o nome do campo. Quando o usuário clica no campo para digitar, o placeholder some e se torna um label acima do campo (colado à borda superior do campo). Portanto, as descrições de campos não citam o label separadamente — o label é sempre igual ao placeholder.

Mecanismo de autenticação (detalhe técnico):

  1. O sistema recebe o documento e a senha digitada pelo usuário
  2. O sistema localiza o registro na tabela Usuario pelo documento informado (considerando apenas registros com RemovidoEm nulo — exclusão lógica)
  3. Se o registro não existe (ou foi excluído logicamente), a autenticação falha com mensagem genérica (RN-CIU-016)
  4. Se o registro existe, o sistema utiliza o Salt armazenado na tabela Usuario para gerar o Hash da senha digitada
  5. O sistema compara o Hash gerado com o Hash armazenado na tabela Usuario
  6. Se os hashes coincidem, a autenticação é bem-sucedida
  7. Se os hashes não coincidem, a autenticação falha com mensagem genérica (RN-CIU-016)

A senha é armazenada exclusivamente como hash + salt — nunca em texto plano. Os campos utilizados na tabela Usuario são:

  • Hash (varchar) — hash da senha gerado com o salt
  • Salt (varchar) — valor aleatório único por usuário usado no processo de hashing

Nota sobre exclusão lógica: ver RN-CIU-005 (documento guarda-chuva, Seção 5).

Comportamento:

  • O campo de documento aceita qualquer texto de forma livre — letras, números, símbolos, qualquer combinação. Não aplica máscara, não valida formato, não restringe entrada (RN-CIU-016). O campo é um input text comum sem nenhum tipo de formatação ou restrição de caracteres.

  • O botão “Entrar” fica desabilitado (disabled) enquanto ambos os campos estiverem vazios

  • Ao submeter, o botão exibe estado loading (spinner) e fica desabilitado

  • Em caso de erro, exibe toast error abaixo do botão “Entrar” com a mensagem MSG-E01

  • Após atingir o limite de tentativas falhas (parametrizado em QuantidadeTentativas, atualmente 5), exibe toast error MSG-E02 e o botão “Entrar” fica desabilitado pelo período parametrizado

  • Em caso de sucesso, o sistema direciona para:

  • 0 vínculos ativos: página de Meu Perfil com banner MSG-I01

  • 1 vínculo ativo: direto para o cockpit do profissional conforme seu tipo (médico → Central do Médico, enfermeira → cockpit da enfermagem, etc.). Se o tipo de profissional não tiver um cockpit específico definido, o sistema carrega apenas o perfil e o menu lateral, sem uma tela ativa.

  • Múltiplos vínculos ativos: tela de seleção de clínica (Épico 6)

Estados visuais:

  • Default: campos vazios, botão desabilitado
  • Focus: borda do input muda para border-medium (2px) solid neutral-darker (#01013B). Todo texto em edição exibe cor neutral-dark (#012856).
  • Loading: botão com spinner, todos os campos desabilitados
  • Error: toast error exibido abaixo do botão “Entrar”, campos permanecem preenchidos (exceto senha que é limpa)
  • Blocked: botão desabilitado com mensagem de bloqueio temporário

Decisão de design: A tela de login é minimalista e mobile first porque é a porta de entrada usada diariamente. Campos grandes (input-height: 56px) facilitam o uso no celular. A ausência de máscara e restrição no campo de documento (RN-CIU-016) evita dar pistas a atacantes sobre o formato esperado ou a existência do documento na base. O campo aceita qualquer entrada para não diferenciar “formato inválido” de “documento não encontrado”.

4.2 Tela de Recuperação de Senha

Propósito: Permitir que o usuário recupere o acesso via código de verificação enviado por e-mail ou celular.

Fluxo em 2 etapas:

Etapa 1 — Solicitação

  • Campo de documento (input text, sem máscara, sem validação de formato — RN-CIU-016. O campo aceita qualquer texto livre, igual ao campo de login)
  • Texto orientador: MSG-T01
  • Botão “Enviar código” (MSG-B04)
  • Comportamento: ao enviar, o sistema verifica se o documento existe na tabela Usuario (considerando apenas registros com RemovidoEm nulo). Se existe, gera um código de 6 dígitos e envia por e-mail e/ou celular (conforme dados cadastrados na tabela Usuario — campos eMail e Telefone). Se não existe, exibe a mesma mensagem de sucesso para não revelar que o documento não existe: MSG-S01.
  • Após enviar, direciona para a etapa 2

Etapa 2 — Verificação e nova senha

  • Campo de login/documento (input text, sem máscara — o usuário deve reinformar o documento para dupla verificação, garantindo que quem está redefinindo a senha é o mesmo que solicitou o código)
  • Campo de código (input text, 6 dígitos, placeholder MSG-P04)
  • Campo de nova senha (input password, com toggle de visibilidade e indicador de força)
  • Campo de confirmar senha (input password, com toggle de visibilidade)
  • Indicador de força da senha (barra progress que muda de cor: vermelho → amarelo → verde conforme critérios atendidos)
  • Lista de critérios de complexidade (checkbox visuais que marcam automaticamente conforme a senha atende cada critério)
  • Botão “Redefinir senha” (MSG-B05, desabilitado até documento preenchido, código com 6 dígitos, senha válida e confirmação igual)
  • Link “Reenviar código” (MSG-B06)
  • Comportamento: ao redefinir, o sistema valida que o documento informado corresponde ao documento que solicitou o código na etapa 1, valida o código, atualiza Hash + Salt em Usuario, registra a senha anterior em UsuarioSenhaHistorico, exibe toast success MSG-S02 e redireciona para a tela de login
  • Se o documento informado na etapa 2 não corresponder ao documento da etapa 1, exibe toast error MSG-E07

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

Parâmetro (campo na tabela)DescriçãoValor atual
TamanhoMinimoQuantidade mínima de caracteres na senha8
MinimoCaracterEspecialQuantidade mínima de caracteres especiais1
MinimoLetraMaiusculaQuantidade mínima de letras maiúsculas1
MinimoLetraMinusculaQuantidade mínima de letras minúsculas1
MinimoNumeroQuantidade mínima de números (dígitos)1
CaracteresEspeciaisCaracteres especiais válidos aceitos!@#$%^&*-_+=?;:|

O sistema consulta estes parâmetros em tempo real ao validar a nova senha. A interface de critérios visuais (checkbox que marcam automaticamente) deve refletir os valores parametrizados — se o administrador alterar MinimoCaracterEspecial para 2, a interface passa a exigir e exibir “2 caracteres especiais”.

Decisão de design: O fluxo de recuperação não revela se o documento existe (mesma prática do login — RN-CIU-016). O código tem 6 dígitos por ser um padrão familiar (SMS OTP). A etapa 2 exige o campo de login para dupla verificação — garante que quem está redefinindo a senha é o mesmo que solicitou o código, evitando ataques de session hijacking no fluxo de recuperação. A redefinição exige os critérios de complexidade parametrizados na tabela UsuarioSenhaParametros para manter consistência com o auto-cadastro (E2). O histórico de senhas em UsuarioSenhaHistorico permite implementar política de não reutilização de senhas recentes.

5. Critérios de Aceitação

US-CIU-003 — Login com documento único

CA-003.1: Dado que estou na tela de login, quando informo CPF e senha corretos, então o sistema me autentica e direciona para a próxima tela conforme o número de vínculos ativos (Meu Perfil, seleção de clínica ou cockpit do profissional).

CA-003.2: Dado que informei CPF ou senha incorretos, quando submeto, então o sistema exibe a mensagem MSG-E01 sem distinguir qual campo está errado.

CA-003.3: Dado que falhei o número parametrizado de vezes seguidas (QuantidadeTentativas, atualmente 5), quando tento novamente, então o sistema bloqueia pelo período parametrizado (MinutosBloqueado, atualmente 15 minutos) e exibe a mensagem MSG-E02.

CA-003.4: Dado que o bloqueio expirou, quando tento novamente com credenciais corretas, então o sistema me autentica normalmente e zera o contador TentativasLogin.

CA-003.5: Dado que o campo de documento não tem máscara nem validação de formato, quando digito o CPF sem pontos e traços, então o sistema aceita e processa normalmente.

CA-003.6: Dado que tenho 0 vínculos ativos, quando faço login com sucesso, então sou direcionado para a página de Meu Perfil com o banner MSG-I01 visível.

CA-003.7: Dado que tenho 1 vínculo ativo, quando faço login com sucesso, então entro direto na clínica e sou direcionado para o cockpit do meu tipo de profissional. Se não houver cockpit específico para meu tipo, o sistema carrega apenas o perfil e o menu lateral, sem tela ativa.

CA-003.8: Dado que tenho múltiplos vínculos ativos, quando faço login com sucesso, então sou direcionado para a tela de seleção de clínica.

CA-003.9: Dado que o campo RemovidoEm do usuário está preenchido (exclusão lógica), quando tento logar, então o sistema exibe a mensagem MSG-E01 sem revelar que o usuário foi excluído.

CA-003.10: Dado que o toast error aparece abaixo do botão “Entrar”, quando informo credenciais inválidas, então o toast é exibido na posição abaixo do botão, não no topo da tela.

US-CIU-009 — Recuperação de senha

CA-009.1: Dado que informei um documento cadastrado (RemovidoEm nulo), quando solicito recuperação, então recebo um código de 6 dígitos por e-mail ou celular.

CA-009.2: Dado que informei um documento não cadastrado, quando solicito recuperação, então o sistema exibe a mensagem MSG-S01 (sem revelar que não existe).

CA-009.3: Dado que recebi o código, quando informo o documento novamente na etapa 2, o código correto dentro do prazo de validade e uma nova senha que atende todos os critérios parametrizados em UsuarioSenhaParametros, então a senha é redefinida, o registro é salvo em UsuarioSenhaHistorico e posso fazer login com a nova senha.

CA-009.4: Dado que informei um código incorreto, quando tento redefinir, então o sistema exibe a mensagem MSG-E03 e não redefine a senha.

CA-009.5: Dado que informei uma senha que não atende os critérios de complexidade parametrizados em UsuarioSenhaParametros (TamanhoMinimo, MinimoCaracterEspecial, MinimoLetraMaiuscula, MinimoLetraMinuscula, MinimoNumero), quando tento redefinir, então o botão “Redefinir senha” permanece desabilitado.

CA-009.6: Dado que informei senhas diferentes nos campos “nova senha” e “confirmar senha”, quando saio do campo, então o sistema exibe a mensagem MSG-E05.

CA-009.7: Dado que o código de recuperação expirou (prazo parametrizado em MinutosValidadeNovaSolicitacao, atualmente 15 minutos), quando tento redefinir, então o sistema exibe a mensagem MSG-E04.

CA-009.8: Dado que QuantidadeMemoria está parametrizado (atualmente 7), quando tento redefinir com uma senha igual a uma das últimas 7 senhas armazenadas em UsuarioSenhaHistorico, então o sistema exibe a mensagem MSG-E06.

CA-009.9: Dado que QuantidadeMemoria está definido como 0, quando redefino a senha, então o sistema não armazena histórico em UsuarioSenhaHistorico e não valida senhas anteriores — qualquer senha que atenda os critérios de complexidade é aceita.

CA-009.10: Dado que informei um documento diferente na etapa 2 daquele informado na etapa 1, quando tento redefinir, então o sistema exibe a mensagem MSG-E07 e não redefine a senha.

6. Fluxos de Exceção

EX-E1.01— Serviço de autenticação indisponível

  • Gatilho: Back-end de autenticação não responde
  • Comportamento: Toast error MSG-E08 exibido abaixo do botão “Entrar”. Botão volta ao estado default
  • Recuperação: Usuário tenta novamente após alguns instantes

EX-E1.02 — Código de recuperação expirado

  • Gatilho: Usuário informa código de recuperação após o prazo de validade parametrizado em MinutosValidadeNovaSolicitacao (atualmente 15 minutos)
  • Comportamento: Mensagem inline MSG-E04
  • Recuperação: Usuário clica em “Reenviar código” (MSG-B06) e recebe um novo

EX-E1.03 — Usuário com exclusão lógica (RemovidoEm preenchido)

  • Gatilho: Usuário tenta logar mas o campo RemovidoEm na tabela Usuario está preenchido (registro excluído logicamente)
  • Comportamento: Mensagem genérica MSG-E01 (não revela que o usuário foi excluído — RN-CIU-016)
  • Recuperação: Usuário deve contatar o suporte Gemed ou o administrador da clínica

EX-E1.04 — Nova senha igual a senha recente

  • Gatilho: Usuário tenta redefinir senha com um valor igual a uma das últimas senhas armazenadas em UsuarioSenhaHistorico (quantidade controlada por QuantidadeMemoria)
  • Comportamento: Toast error MSG-E06
  • Recuperação: Usuário define uma senha diferente que atenda os critérios de complexidade

EX-E1.05 — Caractere especial não permitido

  • 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 “Redefinir senha” permanece desabilitado
  • Recuperação: Usuário utiliza apenas caracteres da lista parametrizada (atualmente: !@#$%

EX-E1.06 — Documento divergente na etapa 2 de recuperação

  • Gatilho: Usuário informa um documento na etapa 2 diferente do documento informado na etapa 1 da recuperação de senha
  • Comportamento: Toast error MSG-E07. Botão “Redefinir senha” permanece desabilitado
  • Recuperação: Usuário informa o mesmo documento utilizado na etapa 1

7. Validações de Campos

CampoTelaTipoObrigatórioFormato/RegraMensagem de erro
Documento (login)LoginTexto sem máscaraSimAceita qualquer texto livre — sem validação de formato (RN-CIU-016)N/A — erro genérico MSG-E01
Senha (login)LoginPasswordSimNão vazioN/A — erro genérico MSG-E01
Documento (recuperação etapa 1)Recuperação Etapa 1Texto sem máscaraSimAceita qualquer texto livre — sem validação de formato (RN-CIU-016)N/A — mensagem genérica MSG-S01
Documento (recuperação etapa 2)Recuperação Etapa 2Texto sem máscaraSimDeve ser igual ao documento informado na etapa 1MSG-E07
Código de recuperaçãoRecuperação Etapa 2Texto numéricoSimExatamente 6 dígitosMSG-E03
Nova senhaRecuperação Etapa 2PasswordSimTamanhoMinimo (8) + MinimoCaracterEspecial (1) + MinimoLetraMaiuscula (1) + MinimoLetraMinuscula (1) + MinimoNumero (1) + CaracteresEspeciais (!@#$%^&*-_+=?;:|) — todos parametrizados em UsuarioSenhaParametrosIndicador visual de critérios não atendidos
Confirmar senhaRecuperação Etapa 2PasswordSimDeve ser igual ao campo Nova SenhaMSG-E05

8. Mapeamento de Componentes de Interface

ComponenteVarianteEstado(s)Tokens aplicadosOnde aparece
Input (text)Bordereddefault, focus, error, disabledinput-height: 56px, radius-m (8px), neutral-light border (#BECADC), neutral-darker focus border (#01013B), texto em edição neutral-dark (#012856)Documento (login), Documento (recuperação etapa 1 e 2), Código
Input (password)Bordered com toggledefault, focus, errorMesmos tokens do input text + ícone olho clicável (toggle de visibilidade)Senha (login), Nova senha, Confirmar senha
ButtonPrimarydefault, hover, loading, disabledbtn-height: 40px, primary-pure bg (#00E676), base-pure text (#FFFFFF), radius-m (8px)Entrar (MSG-B01), Enviar código (MSG-B04), Redefinir senha (MSG-B05)
ButtonTertiarydefault, hoverTransparent bg, primary-pure text (#00E676)Esqueci minha senha (MSG-B02), Cadastrar-se (MSG-B03), Reenviar código (MSG-B06)
ToastDefault, Success, Erroranimation: toast-in (300ms)neutral-dark bg (#012856) / secondary-dark bg (#0091EA) / error-pure bg (#F44336)Feedback de login (abaixo do botão “Entrar”), recuperação, bloqueio
ProgressLineardefaultradius-pill, neutral-lighter track (#E5EAF0), primary-pure bar (#00E676)Indicador de força de senha
CheckboxDefaultdefault, checked, disabled20px box, primary-pure (#00E676) quando checkedLista de critérios de complexidade da senha

9. Integração com Backend

9.1 Autenticação

FunçãoMétodoPathRequest BodyResponse BodyCódigos HTTP
LoginPOST/api/auth/login{ documento: string, senha: string }{ token: string, usuario: { id: uuid, nome: string, apelido: string, caminhoFoto: string }, vinculos: [{ clienteBDId: uuid, clienteNome: string, clienteLogo: string, situacao: string }], convitesPendentes: number }200 (sucesso), 401 (credenciais inválidas), 423 (bloqueado por tentativas)
LogoutPOST/api/auth/logout{ token: string }{ success: true }200

9.2 Recuperação de Senha

FunçãoMétodoPathRequest BodyResponse BodyCódigos HTTP
Solicitar recuperaçãoPOST/api/auth/recuperar-senha{ documento: string }{ success: true } (sempre retorna sucesso, mesmo se documento não existir)200
Redefinir senhaPOST/api/auth/redefinir-senha{ documento: string, codigo: string, novaSenha: string }{ success: true }200 (sucesso), 400 (código inválido, código expirado, documento divergente, senha reutilizada, critérios não atendidos)

9.3 Mapeamento de Tabelas

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, RemovidoEm (consultado apenas para verificar vínculos ativos após login)
UsuarioSenhaParametrosIpSegurancaQuantidadeTentativas, MinutosBloqueado, TamanhoMinimo, MinimoCaracterEspecial, MinimoLetraMaiuscula, MinimoLetraMinuscula, MinimoNumero, CaracteresEspeciais, MinutosValidadeNovaSolicitacao, QuantidadeMemoria

10. Catálogo de Mensagens do Sistema (Multilíngue)

Todas as mensagens exibidas ao usuário neste épico, com suas traduções para os três idiomas suportados. As mensagens inline no documento (Seções 2 a 6) referenciam os IDs desta seção.

10.1 Mensagens de erro

IDContextopt-BRen-USes-419
MSG-E01Falha de login (qualquer causa)“Usuário ou senha inválidos.""Invalid username or password.""Usuario o contraseña inválidos.”
MSG-E02Bloqueio por tentativas”Muitas tentativas. Tente novamente em [X] minutos.""Too many attempts. Try again in [X] minutes.""Demasiados intentos. Inténtelo de nuevo en [X] minutos.”
MSG-E03Código de recuperação inválido”Código inválido.""Invalid code.""Código inválido.”
MSG-E04Código de recuperação expirado”Código expirado. Solicite um novo código.""Code expired. Request a new code.""Código expirado. Solicite un nuevo código.”
MSG-E05Senhas não coincidem”As senhas não coincidem.""Passwords do not match.""Las contraseñas no coinciden.”
MSG-E06Nova senha igual a recente”A nova senha não pode ser igual a uma senha utilizada recentemente.""The new password cannot be the same as a recently used password.""La nueva contraseña no puede ser igual a una contraseña utilizada recientemente.”
MSG-E07Documento divergente na etapa 2”Documento não corresponde ao informado na solicitação.""Document does not match the one provided in the request.""El documento no coincide con el informado en la solicitud.”
MSG-E08Serviço indisponível”Não foi possível conectar ao servidor. Tente novamente em alguns instantes.""Could not connect to the server. Please try again in a few moments.""No fue posible conectar al servidor. Inténtelo de nuevo en unos momentos.”

10.2 Mensagens de sucesso

IDContextopt-BRen-USes-419
MSG-S01Recuperação solicitada (sempre exibida, mesmo se documento não existe)“Se o documento estiver cadastrado, você receberá um código de verificação.""If the document is registered, you will receive a verification code.""Si el documento está registrado, recibirá un código de verificación.”
MSG-S02Senha redefinida”Senha redefinida com sucesso!""Password successfully reset!""¡Contraseña restablecida con éxito!“

10.3 Mensagens informativas

IDContextopt-BRen-USes-419
MSG-I01Banner — sem vínculo ativo”Você não está vinculado a nenhuma clínica ativa. Aguarde um convite ou entre em contato com o administrador da clínica onde você trabalha.""You are not linked to any active clinic. Wait for an invitation or contact the administrator of the clinic where you work.""No está vinculado a ninguna clínica activa. Espere una invitación o comuníquese con el administrador de la clínica donde trabaja.”

10.4 Placeholders

IDCampopt-BRen-USes-419
MSG-P01Campo “Usuário” (login)“Digite seu login""Enter your login""Ingrese su login”
MSG-P02Campo “Senha” (login)“Senha""Password""Contraseña”
MSG-P03Campo “Documento” (recuperação etapa 1)“Digite seu login""Enter your login""Ingrese su login”
MSG-P04Campo “Código” (recuperação etapa 2)“Código""Código""Código”

10.5 Textos orientadores

IDContextopt-BRen-USes-419
MSG-T01Recuperação — texto orientador etapa 1”Informe seu login. Enviaremos um código de verificação para o e-mail ou celular cadastrado.""Enter your login. We will send a verification code to your registered email or phone.""Ingrese su login. Enviaremos un código de verificación a su correo electrónico o teléfono registrado.”
IDElementopt-BRen-USes-419
MSG-B01Botão primário (login)“Entrar""Sign in""Ingresar”
MSG-B02Link (login)“Esqueci minha senha""Forgot my password""Olvidé mi contraseña”
MSG-B03Link (login)“Cadastrar-se""Sign up""Registrarse”
MSG-B04Botão (recuperação etapa 1)“Enviar código""Send code""Enviar código”
MSG-B05Botão (recuperação etapa 2)“Redefinir senha""Reset password""Restablecer contraseña”
MSG-B06Link (recuperação etapa 2)“Reenviar código""Resend code""Reenviar código”

11. Conformidade SBIS

ECF.17.19 — Mensagens do sistema

Estágio: 1 (Clínica/ambulatório) — obrigatório

Descrição do requisito: “Todas as mensagens sob controle do S-RES devem ser apresentadas em linguagem não técnica ao usuário, em português do Brasil. Mensagens técnicas (sistemas operacionais, banco de dados, componentes de segurança, etc) ou em outros idiomas e que possam ser tratadas pelo S-RES não devem ser apresentadas em seu conteúdo original.”

Como é atendido neste épico: Todas as mensagens exibidas ao usuário estão catalogadas na Seção 10 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, infraestrutura ou componentes de segurança são capturadas pelo back-end e nunca exibidas ao usuário. O front-end exibe apenas as mensagens amigáveis pré-definidas no catálogo.

12. Metadados do Épico

AtributoValor
PrioridadeMust Have — fundação do sistema, sem este épico nenhum outro funciona
ComplexidadeMédia — fluxos bem definidos, tabelas já existem, parametrização via UsuarioSenhaParametros
DependênciasNenhuma (épico base)
Regras transversais aplicadas5 (RN-CIU-005, 006, 007, 008, 022)
Paraleliza comE2 (Auto-cadastro Público) — compartilha estrutura de dados e lógica de criptografia de senha
Consumido porE2 — reutiliza o mecanismo de autenticação e roteamento pós-login (Seções 2 e 4.1) para autenticar automaticamente o profissional ao final do wizard de auto-cadastro (RN-CIU-022)
Histórias de usuário2 (US-CIU-003, US-CIU-009)
Critérios de aceitação19
Fluxos de exceção6 (EX-E1.01 a EX-E1.06)
Endpoints4
Telas2 (Login, Recuperação de Senha em 2 etapas)
Tabelas utilizadas4 (Usuario, UsuarioSenhaHistorico, UsuarioCliente, UsuarioSenhaParametros)
Mensagens catalogadas20 (8 erros, 2 sucessos, 1 informativa, 4 placeholders, 1 texto orientador, 6 rótulos)