Pular para conteúdo

US1.4

Gestão de Perfil do Estudante (RF04)

História de Usuário

Como estudante, quero gerenciar e editar meu perfil para manter minhas informações atualizadas e relevantes para oportunidades de voluntariado.


Rastreabilidade

Item Código / Referência
User Story US1.4
Requisito Funcional RF04 — Gerenciar perfil
Característica de Produto CP01 — Gestão de Usuários e Entidades
Requisitos Não-Funcionais RNF04 (responsivo iOS/Android)
Release Planejada R1 — Fundação

Descrição

Implementar a tela de gestão de perfil do estudante. O estudante deve poder visualizar seus dados cadastrais completos e editar informações como nome, universidade, curso, matrícula, foto de perfil, banner, biografia, áreas de interesse e galeria de fotos. O perfil do estudante é o cartão de visita para as organizações — um perfil bem preenchido aumenta as chances de aprovação em candidaturas. O escopo é full-stack.


Critérios de Aceite (BDD / Gherkin)

Cenário 1: Visualização do perfil completo

Dado que o estudante "Maria Silva" está autenticada e possui perfil preenchido com nome, universidade, curso, foto, banner e biografia
Quando acessa a tela de "Meu Perfil"
Então o sistema exibe todos os dados cadastrais, a foto de perfil, o banner, a biografia, a galeria de fotos e o histórico de eventos formatados

Cenário 2: Edição de dados pessoais

Dado que o estudante está visualizando seu perfil
Quando clica em "Editar", altera o nome de "Maria Silva" para "Maria Souza Silva" e salva
Então o sistema atualiza os dados, exibe "Perfil atualizado com sucesso" e reflete a alteração em toda a plataforma

Cenário 3: Upload de foto de perfil e banner

Dado que o estudante está na edição de perfil
Quando seleciona uma imagem da galeria do dispositivo para foto de perfil e/ou banner e salva
Então o sistema armazena as imagens, exibe as novas fotos no perfil e as redimensiona para os formatos padrão (thumbnail e tamanho completo)

Cenário 4: Adição de fotos à galeria

Dado que o estudante está na seção "Galeria de Fotos" da edição de perfil
Quando toca em "Adicionar fotos", seleciona uma ou mais imagens (JPEG/PNG, máx. 5MB cada) e confirma
Então o sistema armazena as novas fotos na galeria e exibe a galeria atualizada no perfil

Cenário 5: Remoção de foto da galeria

Dado que o estudante está na seção "Galeria de Fotos" da edição de perfil
Quando toca no botão de remoção (X) em uma foto existente e confirma
Então o sistema remove a foto da galeria e exibe a galeria atualizada no perfil

Cenário 6: Alteração de senha

Dado que o estudante está na seção de segurança do perfil
Quando digita uma nova senha com no mínimo 8 caracteres e confirma a nova senha corretamente
Então o sistema atualiza a senha e exibe "Senha alterada com sucesso"

Cenário 7: Alteração de senha com confirmação divergente

Dado que o estudante está na seção de segurança do perfil
Quando digita uma nova senha e a confirmação não coincide
Então o sistema rejeita a alteração e exibe "As senhas não coincidem"

Cenário 8: Visualização de estatísticas de extensão (read-only)

Dado que o estudante possui 120 horas de extensão cumpridas de 200h exigidas
Quando acessa a tela de "Meu Perfil"
Então o sistema exibe a barra de progresso de horas (120h/200h), o total de horas cumpridas e a quantidade de eventos participados

Cenário 9: Visualização de eventos participados (read-only)

Dado que o estudante participou de eventos de voluntariado
Quando acessa a tela de "Meu Perfil"
Então o sistema exibe a lista de eventos com categoria, organização, data, status (concluído ou em andamento) e horas atribuídas


Regras de Negócio

  • Apenas o próprio estudante pode visualizar e editar os dados do seu perfil.
  • O nome completo, a universidade, o curso e o e-mail institucional são informações obrigatórias do perfil do estudante.
  • A foto de perfil, o banner, a biografia, a galeria de fotos e as áreas de interesse são informações opcionais que o estudante pode preencher ou atualizar a qualquer momento.
  • O e-mail institucional não pode ser alterado após o cadastro.
  • O estudante pode escolher até 3 áreas de interesse para personalizar suas oportunidades.
  • A senha deve ter no mínimo 8 caracteres e a confirmação deve coincidir com a nova senha digitada.
  • As fotos da galeria devem ser do tipo JPEG ou PNG, com tamanho máximo de 5MB cada.
  • As seções "Eventos Participados" e as estatísticas de horas/eventos são apenas visualização (read-only) e consomem dados dos módulos de Oportunidades e Certificados.

Requisitos Técnicos

  • Backend: Django + DRF. Endpoints:
  • GET /api/v1/students/me/ — visualizar perfil completo (dados pessoais + acadêmicos + estatísticas aggregadas + galeria de fotos).
  • PATCH /api/v1/students/me/ — editar perfil (dados pessoais, acadêmicos, biografia, interesses).
  • POST /api/v1/students/me/avatar/ — upload de foto de perfil.
  • POST /api/v1/students/me/banner/ — upload de banner de perfil.
  • POST /api/v1/students/me/gallery/ — adicionar fotos à galeria.
  • DELETE /api/v1/students/me/gallery/{photo_id}/ — remover foto da galeria.
  • POST /api/v1/students/me/change-password/ — alterar senha (nova senha + confirmação).
  • Upload de imagem: Utilizar django-storages para armazenamento de fotos (S3 ou similar). Validar tipo (JPEG/PNG) e tamanho máximo (5MB).
  • Frontend: React Native + Expo + React Native StyleSheet com design tokens centralizados em src/theme/. Tela de perfil com seções: dados pessoais, foto, banner, biografia, áreas de interesse, galeria de fotos (editável), segurança, estatísticas de extensão (read-only) e eventos participados (read-only). Formulários de edição com validação inline.
  • Segurança: Senhas armazenadas com bcrypt (RNF01). Não retornar hash de senha em nenhum endpoint.
  • Responsividade: Layout adaptável a iOS e Android (RNF04).
  • Testes: pytest para testar visualização, edição, alteração de senha, upload de foto/banner/galeria, remoção de foto e validação de campos obrigatórios.

Referências de Design

  • Perfil de Estudante (Visualização): https://www.figma.com/design/f6bQuVohTvZLF5WWPEbNob/Liaison?node-id=276-2&t=PCphRr9qb7MPPKW5-0
  • Perfil de Estudante (Edição): https://www.figma.com/design/f6bQuVohTvZLF5WWPEbNob/Liaison?node-id=277-2&t=PCphRr9qb7MPPKW5-0

Dependências

  • Relacionada a: #12 (Cadastro de Estudante — RF01/US1.1)
  • Bloqueada por: #12 (RF01 — Cadastrar estudante)
  • Bloqueia: N/A

Notas

  • ICE Score: I=7 C=8 E=6 = 336 | MoSCoW: Must | Quadrante: Quick Win
  • RF04 cobre dois perfis: estudante (US1.4) e organização (US1.5). São issues separadas, mas compartilham a mesma base de RF e ICE. O E=6 reflete trabalho majoritariamente de frontend com endpoints simples de CRUD.
  • A foto de perfil, o banner, a biografia e a galeria de fotos não são obrigatórios no cadastro inicial (RF01), podendo ser preenchidos posteriormente nesta funcionalidade.
  • Considerar a integração com serviço de armazenamento de objetos (S3) para fotos de perfil, banner e galeria — escopo de infraestrutura coberto em issue separada (#11, #46).
  • As seções "Eventos Participados" e estatísticas de horas/eventos são read-only e dependem dos módulos opportunities, applications e certificates (ainda placeholders). Para o MVP, podem ser renderizadas com dados mockados ou ocultas até que os módulos estejam implementados.

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)

  • Visualização completa: Ao acessar "Meu Perfil", o estudante vê todos os seus dados: foto, banner, nome, universidade, curso, biografia, galeria de fotos, estatísticas de horas e eventos participados.
  • Edição de dados: O estudante consegue alterar seus dados pessoais (ex.: nome) e ao salvar vê "Perfil atualizado com sucesso". A alteração aparece em toda a plataforma.
  • Foto de perfil e banner: O estudante consegue escolher uma imagem do celular para foto de perfil ou banner, e a nova imagem é exibida no perfil após salvar.
  • Galeria de fotos: O estudante consegue adicionar fotos (JPEG ou PNG, até 5MB cada) e também removê-las da galeria.
  • Alteração de senha: O estudante consegue definir uma nova senha (mínimo 8 caracteres). Se a confirmação da nova senha não coincidir, o sistema exibe "As senhas não coincidem".
  • Progresso de extensão: O perfil exibe quantas horas de extensão já foram cumpridas e quantas ainda faltam para atingir a meta.
  • Histórico de eventos: O perfil exibe os eventos de voluntariado nos quais o estudante participou, com categoria, organização, data e status.

Acesso & Evidência

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