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-storagespara 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,applicationsecertificates(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).