Pular para conteúdo

US1.1

Cadastro de Estudantes Universitários (RF01)

História de Usuário

Como estudante universitário, quero me cadastrar na plataforma informando meus dados pessoais e académicos para poder buscar e me candidatar a vagas de voluntariado.


Rastreabilidade

Item Código
User Story US1.1
Requisito Funcional RF01 — Cadastrar estudante
Característica de Produto CP01 — Gestão de Usuários e Entidades
Requisitos Não-Funcionais RNF01 (bcrypt), RNF02 (login ≤2s), RNF04 (responsivo iOS/Android)
Release Planejada R1 — Fundação

Descrição

Implementar o fluxo completo de cadastro de estudantes universitários, incluindo formulário multi-etapa (dados pessoais, perfil acadêmico e áreas de interesse), validações de entrada, criptografia de senha e criação do perfil no banco de dados. O cadastro deve ser responsivo para iOS e Android (RNF04).


Critérios de Aceite (BDD)

Cenário 1: Cadastro com sucesso

Dado que o estudante acessa a tela de cadastro pela primeira vez
Quando preenche nome, sobrenome, e-mail institucional válido, universidade, curso, matrícula, senha segura (mínimo 8 caracteres), aceita os termos de uso e submete o formulário
Então o sistema cria a conta, armazena a senha com bcrypt (RNF01), exibe mensagem de sucesso e redireciona o estudante para o dashboard

Cenário 2: E-mail já cadastrado

Dado que já existe um estudante cadastrado com o e-mail "ana.souza@unb.br"
Quando um novo estudante tenta cadastrar-se usando o mesmo e-mail
Então o sistema exibe a mensagem de erro "Este e-mail já está em uso" e impede a criação da conta

Cenário 3: Senha fraca

Dado que o estudante está na etapa de criação de senha
Quando insere uma senha com menos de 8 caracteres
Então o sistema exibe indicador de força fraca e bloqueia o envio até que a senha atenda ao requisito mínimo

Cenário 4: Campos obrigatórios em branco

Dado que o estudante deixou campos obrigatórios (nome, e-mail, universidade, senha) em branco
Quando tenta avançar ou submeter o formulário
Então o sistema destaca os campos pendentes com mensagem específica e não prossegue

Cenário 5: Matrícula já cadastrado

Dado que já existe um estudante cadastrado com a matrícula "232037786" Quando um novo estudante tenta cadastrar-se usando a mesma matrícula
Então o sistema exibe a mensagem de erro "Esta matrícula já está em uso" e impede a criação da conta


Regras de Negócio

  • O e-mail deve ser único no sistema (validação de duplicidade no backend).
  • A matrícula deve ser único no sistema (validação de duplicidade no backend).
  • A senha deve ter no mínimo 8 caracteres, conter letras e números (regra de força mínima).
  • Os dados obrigatórios são: nome completo, e-mail institucional, universidade, curso, turno, matrícula, áreas de interesse e senha.
  • Após cadastro, o estudante deve ser redirecionado para o dashboard (não requer confirmação por e-mail no MVP, conforme Won't Have RF05).
  • O cadastro cria automaticamente o StudentProfile vinculado ao User com role=student.

Requisitos Técnicos

  • Backend: Django + DRF. Criar endpoint POST /api/v1/student-profiles/ (ou equivalente no app users).
  • Frontend: React Native + Expo + NativeWind. Formulário multi-etapa conforme protótipo Figma.
  • Segurança: Senhas armazenadas com bcrypt via Django Auth (RNF01). Nunca logar ou retornar senha em JSON.
  • Performance: Resposta do cadastro ≤2s em condições normais de rede (RNF02).
  • Responsividade: Layout deve se adaptar a iOS e Android sem quebras (RNF04).
  • Testes: pytest para backend; Jest + RNTL para frontend. Cobertura mínima conforme thresholds do projeto.

Referências de Design


Dependências

  • Relacionada a: #13 (Cadastro de Organizações — mesma CP01)
  • Bloqueada por: N/A
  • Bloqueia: #14 (provável — Autenticação/Login, se existir)

Notas

  • O fluxo de "confirmação de cadastro via e-mail" foi classificado como Won't Have no MVP (RF05). Portanto, não implementar e-mail de confirmação nesta issue.
  • A foto de perfil e bio são opcionais no cadastro inicial (podem ser preenchidas depois no gerenciamento de perfil — RF04).
  • O campo "semestre atual" aparece no protótipo Figma como dropdown; verificar se é obrigatório ou opcional.
  • Edge case: CPF não é requisitado no RF01; não adicionar escopo não previsto.

Definição de Preparado (DoR)

Item de Verificação (Universal) Evidência / Rastreabilidade Situação
A história está bem descrita e com critérios de aceite? Documentada e alinhada com o escopo do MVP. ✔ Sim
Possui protótipos de interface necessários? Interface mapeada e disponível no Figma da equipe. ✔ Sim
A história é independente o suficiente para ser entregue? Cadeia de dependências resolvida (vide Matriz MVP). ✔ Sim
Foi estimada pela equipe? Estimada utilizando o método ICE Score. ✔ Sim

Definição de Pronto (DoD)

Pergunta Fundamental (Universal) Evidência de Implementação Status
O código foi implementado e revisado? Pull Request aprovado e fundido na branch principal. ✔ Sim
Coerente com o protótipo validado? O layout segue os componentes e tokens de design. ✔ Sim
Passou nos testes necessários? Testes (unitários/integração) executados e aprovados. ✔ Sim
A documentação está atualizada? Atualizada no repositório de requisitos. ✔ Sim

Critérios de Aceitação (CA)

  • Cadastro com sucesso: O estudante consegue criar sua conta preenchendo nome, e-mail institucional, universidade, curso, matrícula, senha e aceitando os termos de uso. Após o cadastro, é redirecionado para seu painel.
  • E-mail duplicado: Se o estudante tentar se cadastrar com um e-mail que já existe na plataforma, verá a mensagem "Este e-mail já está em uso" e não conseguirá criar a conta.
  • Matrícula duplicada: Se a matrícula já estiver cadastrada, o sistema exibe "Esta matrícula já está em uso" e impede o cadastro.
  • Senha fraca: Se a senha tiver menos de 8 caracteres, o sistema sinaliza que a senha é fraca e não deixa concluir o cadastro até que seja corrigida.
  • Campos em branco: Se o estudante tentar avançar sem preencher campos obrigatórios (nome, e-mail, universidade, senha), o sistema destaca o que está faltando e não prossegue.

Acesso & Evidência

  • Código Homologado: Repositório Principal
  • Status de Conclusão: 100% Entregue (conforme Matriz de Completude).