Skip to content

[TREINAMENTO] CRUD de Vacinas — Camila Dornelas - #892

Open
CamilaDornelas wants to merge 10 commits into
training/patient-vaccine-crudfrom
feature/882-vacinas-crud-Camila-Dornelas
Open

[TREINAMENTO] CRUD de Vacinas — Camila Dornelas#892
CamilaDornelas wants to merge 10 commits into
training/patient-vaccine-crudfrom
feature/882-vacinas-crud-Camila-Dornelas

Conversation

@CamilaDornelas

Copy link
Copy Markdown
Collaborator

O que foi feito

Foi realizado o rebuild do CRUD de vacinas, contemplando as operações de criação, edição, exclusão, listagem e busca.

Frontend

  • Ajustada a tela de gerenciamento de vacinas.
  • Implementados os fluxos de cadastro, edição e exclusão de vacinas.
  • Adicionado tratamento das mensagens de erro retornadas pela API.
  • Mantida a listagem e busca de vacinas funcionando normalmente.

Backend

  • Implementadas/ajustadas as operações CRUD de vacinas.
  • Adicionadas validações para cadastro e atualização.
  • Adicionada regra para impedir exclusão de vacinas vinculadas a pacientes.
  • Adicionada validação para impedir cadastro de vacinas com nome duplicado.

Issue relacionada

Issue: #882

Como testar

  1. Acessar a tela de gerenciamento de vacinas.
  2. Validar a listagem das vacinas existentes.
  3. Utilizar a busca para verificar se as vacinas continuam sendo encontradas corretamente.

Criar vacina

  • Cadastrar uma nova vacina informando um nome válido.
  • Verificar se a vacina é criada e aparece na listagem.

Editar vacina

  • Editar uma vacina existente.
  • Verificar se as alterações são salvas corretamente.

Excluir vacina

  • Excluir uma vacina sem vínculo com pacientes.
  • Verificar se ela é removida da listagem.

Excluir vacina vinculada a paciente

  • Tentar excluir uma vacina que possui vínculo com paciente.
  • Verificar se o sistema impede a exclusão.

Nome duplicado

  • Tentar cadastrar uma vacina utilizando um nome já existente.
  • Verificar se o sistema bloqueia o cadastro.

Checklist

  • Lint executado
  • Testes executados
  • Build do frontend ok
  • Build do backend ok
  • Listagem e busca de vacinas continuam funcionando normalmente

@CamilaDornelas CamilaDornelas added this to the 2026.2 - Sprint 1 milestone Aug 21, 2026
@CamilaDornelas CamilaDornelas self-assigned this Aug 21, 2026
@CamilaDornelas CamilaDornelas added 5 Complexidade 5 Treinamento labels Aug 21, 2026
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 63fb2910-f38c-4cfd-800f-b07c2e000332

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Dario-Arthur
Dario-Arthur self-requested a review August 22, 2026 17:13

@Dario-Arthur Dario-Arthur left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Testei o PR localmente e o backend não builda, encontrei os seguintes pontos que precisam de ajuste:

🔴 Build falha (22 erros de compilação)

Faltam 4 classes, referenciadas no código mas ausentes no repositório:

  • CreateVaccineDTO
  • UpdateVaccineDTO
  • VaccineConflictException
  • VaccineInUseException

Arquivos afetados: VaccineControllerImpl.java, VaccineController.java, VaccineApplicationService.java, VaccineApplicationServiceImpl.java.

Também falta o método de conversão no mapper: em VaccineApplicationServiceImpl.java:L52, há uma chamada a vaccineMapper.toEntity(CreateVaccineDTO), mas o VaccineMapper não tem esse método implementado.

Existe VaccineControllerTest.java em src/test, mas como o main não compila, os testes nunca chegam a rodar.

🟡 Pontos a corrigir também

VaccineController.java (L28, L36): os endpoints não usam @Valid nos @RequestBody. Sem isso, as validações dos DTOs não são aplicadas
ex: um PUT com nome vazio passaria sem erro.

VaccineController.java (L25, L33, L41): o Swagger documenta resposta 409 para conflito/uso, mas é preciso garantir que as exceções (VaccineConflictException, VaccineInUseException) sejam de fato mapeadas para 409 no exception handle, se não podem cair como 500 genérico.

Resumo do que precisa ser feito:

  • Criar as 4 classes ausentes (CreateVaccineDTO, UpdateVaccineDTO, VaccineConflictException, VaccineInUseException)
  • Implementar o método de conversão no VaccineMapper
  • Adicionar @Valid nos @RequestBody do controller
  • Garantir que as exceções de conflito/uso retornem 409 (não 500)

⚠️ Como o backend não compila, não foi possível testar o frontend integrado de ponta a ponta (front + back juntos), só confirmei que o frontend compila isoladamente. Depois desses ajustes, vou revisar de novo com o fluxo completo funcionando.

Request changes por conta dos pontos acima.

@CamilaDornelas

Copy link
Copy Markdown
Collaborator Author

@Dario-Arthur Ajustei os problemas apontados. Seguem as alterações realizadas:

  • DTOs e exceções: Criadas as classes ausentes: CreateVaccineDTO, UpdateVaccineDTO, VaccineConflictException e VaccineInUseException.
  • Mapper: Implementada a conversão no VaccineMapper.
  • Controller: Adicionado @Valid nos @RequestBody do VaccineController.
  • Backend: Ajustado o exception handler para mapear VaccineConflictException e VaccineInUseException como HTTP 409.

@Dario-Arthur

Dario-Arthur commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

@CamilaDornelas Retestei tudo depois do fix e ficou muito bom! Todos os pontos que eu tinha levantado foram corrigidos:

  • Build do backend (./mvnw compile) e frontend (tsc + build) passando sem erros
  • Nome duplicado agora bloqueia corretamente com 409
  • Validação de nome vazio funcionando (@Valid)
  • Bloqueio de exclusão de vacina vinculada a paciente, com 409 e mensagem explicativa na interface
  • Formulário de edição vem pré-preenchido
  • Botão de adicionar funcionando em desktop e mobile
  • API retorna 404 para vacina inexistente

Funcionalmente está tudo certo.

@euAllanDev

euAllanDev commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

SEGUNDA REVIEW

🟡 MEDIUM: VaccineApplicationServiceImpl.java:48

No cadastro, a verificação de nome duplicado não diferencia letras maiúsculas e minúsculas. Então seria possível cadastrar BCG e depois Bcg, mesmo sendo a mesma vacina.
Na edição, essa validação já ignora maiúsculas e minúsculas. O cadastro deveria seguir a mesma regra.
Sugestão: validar o nome no POST usando busca case-insensitive, como já é feito no PUT.

NEEDS CHANGES

image

@CamilaDornelas

Copy link
Copy Markdown
Collaborator Author

@euAllanDev Ajustei a validação de nome duplicado de vacina. Segue a alteração realizada:

  • Validação no cadastro: Ajustada a verificação de nome duplicado no VaccineApplicationImpl para ignorar diferenças entre letras maiúsculas e minúsculas, seguindo a mesma regra já utilizada na edição.
  • Repository: Utilizada a busca case-insensitive para garantir que vacinas como BCG, Bcg e bcg sejam consideradas a mesma vacina.

@euAllanDev

Copy link
Copy Markdown
Contributor

Review do ajustes solicitados:

Resultado: Aprovado

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

5 Complexidade 5 Treinamento

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants