US2.13
Visualizar Perfil do Estudante (RF27)
História de Usuário
Como organização, quero visualizar o perfil de um estudante candidato para avaliiar seu histórico e pertinência à vaga de voluntariado.
Rastreabilidade
| Item | Código / Referência |
|---|---|
| User Story | US2.13 |
| Requisito Funcional | RF27 — Visualizar perfil de estudante |
| Característica de Produto | CP02 — Ciclo de Vagas e Engajamento |
| Requisitos Não-Funcionais | RNF04 (responsivo iOS/Android) |
| Release Planejada | R3 |
| Issue GitHub | #119 |
Descrição
Implementar a tela de visualização do perfil público de um estudante, acessível à organização a partir da lista de candidatas/os recebidas em uma vaga (RF11/US2.8 — #24). A tela apresenta as informações relevantes do estudante (nome, curso/instituição, bio, foto) que permitam à organização decidir sobre a aprovação ou recusada da candidatura. O escopo é full-stack: novo endpoint de leitura do perfil público do estudante + tela no app da organização.
Decisões de design (layout, cores, tipografia, ícones, organização visual): consultar o protótipo no Figma. Este documento registra apenas comportamento, regras de negócio e critérios de aceite.
Regras de Negócio
- Apenas a organização autenticada pode visualizar o perfil de estudantes candidatos às suas próprias vagas.
- A tela deve exibir, no mínimo: nome, foto, curso/instituição, bio e o histórico de participação do estudante (quando aplicável).
- A organização só pode acessar o perfil de um estudante que tenha candidatura ativa (pendente ou avaliada) em uma vaga sua.
- O perfil do estudante exibido à organização é somente leitura — a organização não edita dados do estudante.
- Não devem ser expostos dados sensíveis do estudante além do que consta no perfil público (e-mail de contato somente se o estudante optar por exibi-lo).
- O acesso ao perfil deve ser reachável a partir da tela de avaliação de candidaturas (RF11/#24) e dos detalhes da candidatura.
- Caso o estudante tenha sido aprovado em atividades anteriores, o histórico de horas/certificados pode ser exibido como indicação de experiência.
Critérios de Aceite (BDD / Gherkin)
Cenário 1: Acesso ao perfil de um candidato
Dado que a organização está autenticada e visualiza a lista de candidaturas de uma vaga sua
Quando aciona a opção de ver perfil de um candidato
Então o sistema navega para a tela de perfil do estudante, exibindo nome, foto, curso/instituição e bio
Cenário 2: Restrição a candidatos da própria vaga
Dado que a organização tenta acessar o perfil de um estudante que não tem candidatura em nenhuma vaga sua
Quando solicita o acesso
Então o sistema retorna erro (403/404) e não exibe o perfil
Cenário 3: Perfil somente leitura
Dado que a organização está visualizando o perfil de um estudante
Quando inspeciona a tela
Então o sistema não apresenta nenhuma ação de edição dos dados do estudante
Cenário 4: Histórico de participação
Dado que o estudante já foi aprovado em atividades anteriores
Quando a organização visualiza o perfil do estudante
Então o sistema exibe um resumo do histórico de participação (atividades e horas)
Cenário 5: Estudante sem histórico
Dado que o estudante nunca participou de atividade alguma
Quando a organização visualiza o perfil
Então o sistema exibe o perfil básico sem a seção de histórico, sem indicar erro
Cenário 6: Segurança entre organizações
Dado que duas organizações distintas — A e B — existem no sistema
Quando a organização A tenta acessar o perfil de um estudante candidato apenas a vagas de B
Então o sistema bloqueia o acesso e não exibe o perfil
Referências de Design
Protótipo Figma: - https://www.figma.com/design/f6bQuVohTvZLF5WWPEbNob/Liaison?node-id=647-2&t=Bn4zGHNjZFTDPrK5-0
Requisitos Técnicos
- Backend: Django + DRF. Novo endpoint
GET /api/v1/students/{id}/public-profile/retornando apenas campos públicos do perfil, com verificação de que a organização solicitante tem candidatura vinculada. - Serializer:
StudentPublicProfileSerializercom nome, foto, curso, instituição, bio e histórico resumido (atividades concluídas + horas). - Performance:
select_related/prefetch_relatedpara evitar N+1 no histórico. - Frontend: React Native + Expo. Tela de perfil do estudante acessível a partir da lista de candidaturas (RF11/#24) e dos detalhes da candidatura.
- Segurança:
permission_classesgarantindo que só organização autenticada com candidatura vinculada ao estudante acesse o perfil.IsOrganizacao. - Responsividade: Layout adaptável a iOS e Android (RNF04).
- Testes (pytest): acesso permitido para organização com candidatura vinculada; acesso negado para organização sem vínculo e para estudante; perfil somente leitura; exibição de histórico.
- Testes (frontend): renderização dos campos do perfil, estado vazio de histórico, navegação a partir da lista de candidaturas.
Dependências
- Relacionada a: #24 (Avaliação — RF11/US2.8), #22 (Candidatura — RF10/US2.7), #15 (Perfil do Estudante — RF04/US1.4)
- Bloqueada por: #24 (RF11 — Avaliação de candidaturas, ponto de acesso principal)
- Bloqueia: N/A
Notas
- ICE Score: I=6 C=9 E=9 = 486 | MoSCoW: Must | Quadrante: Later
- Esta US complementa o fluxo de avaliação (RF11/#24), dando à organização contexto sobre o candidato antes de aprová-lo ou recusá-lo.
- O perfil exibido é um subconjunto do perfil completo gerenciado pelo próprio estudante (RF04/US1.4); a separação entre campos públicos e privados deve ser feita no serializer.
- Avaliar reuso do endpoint/components com a futura US2.12 (Ver Perfil da Organização, RF26) — a direção reversa (estudante vendo organização) pode compartilhar componentes de card de perfil.
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)
- Ver perfil do candidato: A organização consegue, a partir da lista de candidaturas de uma vaga sua, acessar o perfil do estudante com nome, foto, curso/instituição e bio.
- Acesso restrito: A organização não consegue acessar o perfil de estudantes que não tenham candidatura em alguma de suas vagas.
- Somente leitura: A tela de perfil do estudante não oferece nenhuma ação de edição à organização.
- Histórico de participação: Quando o estudante já concluiu atividades anteriores, o sistema exibe um resumo do histórico (atividades e horas); quando não há histórico, a seção é omitida sem erro.
- Segurança entre organizações: Uma organização não consegue acessar o perfil de estudantes candidatos apenas a vagas de outra organização.
Acesso & Evidência
- Código Homologado: Repositório Principal
- Pull Requests: #121, #130
- Status de Conclusão: 100% Entregue (conforme Matriz de Completude).