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_profilepara 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).