Pular para conteúdo

US2.2

Edição de Vagas de Voluntariado (RF19)

História de Usuário

Como organização, quero editar informações de vagas de voluntariado existentes para mantê-las atualizadas.


Rastreabilidade

Item Código / Referência
User Story US2.2
Requisito Funcional RF19 — Editar oportunidade
Característica de Produto CP02 — Ciclo de Vagas e Engajamento
Requisitos Não-Funcionais RNF04 (responsivo iOS/Android)
Release Planejada R3 — Gestão e Triagem

Descrição

Implementar o fluxo de edição de vagas de voluntariado pela organização. A organização deve poder acessar uma vaga existente (em qualquer estado: rascunho, ativa ou pausada) e alterar seus dados — título, descrição, carga horária, data, local e requisitos. Esta funcionalidade permite que a organização corrija erros de digitação, atualize informações desatualizadas ou ajuste a vaga conforme a necessidade. O escopo é full-stack.


Critérios de Aceite (BDD / Gherkin)

Cenário 1: Edição de vaga em rascunho

Dado que a organização possui uma vaga em rascunho "Apoio em Eventos" com carga horária de 20 horas
Quando edita a carga horária para 30 horas, altera a descrição e salva
Então o sistema atualiza os dados e exibe "Vaga atualizada com sucesso"

Cenário 2: Edição de vaga já publicada

Dado que a vaga "Apoio em Eventos" está publicada e ativa com 5 candidatos inscritos
Quando a organização altera o título da vaga e salva
Então o sistema atualiza o título, mantém os demais dados e os candidatos inscritos não são afetados

Cenário 3: Campos obrigatórios em branco na edição

Dado que a organização está editando a vaga "Apoio em Eventos"
Quando apaga o título e tenta salvar
Então o sistema destaca o campo com erro "Título é obrigatório" e não salva as alterações

Cenário 4: Organização tenta editar vaga alheia

Dado que a organização B tenta editar uma vaga pertencente à organização A
Quando envia as alterações
Então o sistema recusa a operação e informa que a ação não é permitida

Cenário 5: Histórico de alterações da vaga preservado

Dado que a vaga "Apoio em Eventos" foi editada três vezes desde sua criação
Quando a organização visualiza os detalhes da vaga
Então o sistema exibe a data da última atualização, permitindo rastrear quando a vaga foi modificada pela última vez


Regras de Negócio

  • Somente a organização que criou a vaga pode editá-la.
  • Vagas em qualquer estado — rascunho, ativa, pausada ou encerrada — podem ter seus dados editados, desde que respeitem as regras específicas de cada estado.
  • Os mesmos campos obrigatórios da criação de vaga aplicam-se à edição: título, descrição, carga horária, data de realização e local não podem ficar em branco.
  • A edição de uma vaga não deve afetar as candidaturas já registradas — os estudantes inscritos permanecem vinculados à vaga independentemente das alterações.
  • A data da última modificação da vaga deve ser registrada e exibida para fins de rastreabilidade.

Requisitos Técnicos

  • Backend: Django + DRF. Endpoints: GET /api/v1/opportunities/{id}/ — obter dados atuais para preencher o formulário. PATCH /api/v1/opportunities/{id}/ — atualização parcial. PUT /api/v1/opportunities/{id}/ — atualização completa.
  • Segurança: Validar que opportunity.organization == request.user.organization_profile para qualquer operação de escrita.
  • Frontend: React Native + Expo + NativeWind. Reutilizar o formulário de criação de vaga (#19) preenchido com os dados atuais. Exibir indicador de "Última modificação em ".
  • Responsividade: Layout adaptável a iOS e Android (RNF04).
  • Testes: pytest para testar edição parcial, edição completa, validação de campos obrigatórios, permissões de organização e preservação de candidaturas após edição.

Referências de Design

  • Protótipo Figma (Geral): https://www.figma.com/design/f6bQuVohTvZLF5WWPEbNob/Liaison?node-id=0-1
  • Observação: A tela de edição de vaga deve ser confirmada no protótipo Figma. Idealmente, reutiliza o mesmo formulário de criação (#19) em modo de edição.

Dependências

  • Relacionada a: #19 (Criação de Vagas — RF18/US2.1)
  • Bloqueada por: #19 (RF18 — Criar oportunidade)
  • Bloqueia: US2.3 (Publicação de Vagas — RF20), US2.4 (Encerramento de Vagas — RF21)

Notas

  • ICE Score: I=7 C=8 E=6 = 336 | MoSCoW: Must | Quadrante: Quick Win
  • RF19 é um Quick Win que depende diretamente de RF18 (criação de vaga). Uma vez que o modelo e o formulário de criação estão implementados, a edição consiste em reutilizar os mesmos componentes com os dados pré-carregados.
  • A edição de vagas publicadas exige cuidado redobrado para não confundir os estudantes que já se candidataram. Alterações drásticas (ex.: mudar completamente a área de atuação) devem ser avaliadas se exigem notificação aos candidatos.

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)

  • Edição de vaga em rascunho: A organização edita qualquer campo de uma vaga em rascunho e ao salvar vê "Vaga atualizada com sucesso".
  • Edição de vaga publicada: A organização consegue editar uma vaga já publicada com candidatos inscritos. As alterações são salvas e os candidatos não são afetados.
  • Campos obrigatórios em branco: Se o título ou outro campo obrigatório for apagado, o sistema destaca o erro e não salva.
  • Segurança: Uma organização não consegue editar vagas de outras organizações.
  • Rastreabilidade: A data da última modificação da vaga é exibida para controle de quando ela foi atualizada.

Acesso & Evidência

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