Pular para conteúdo

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: StudentPublicProfileSerializer com nome, foto, curso, instituição, bio e histórico resumido (atividades concluídas + horas).
  • Performance: select_related/prefetch_related para 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_classes garantindo 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