Skip to content

[7주차/윤샘] 워크북 제출합니다#43

Merged
tjdals-dbs merged 8 commits into
UMC-Inha:yunsam/mainfrom
tjdals-dbs:main
May 21, 2026
Merged

[7주차/윤샘] 워크북 제출합니다#43
tjdals-dbs merged 8 commits into
UMC-Inha:yunsam/mainfrom
tjdals-dbs:main

Conversation

@tjdals-dbs
Copy link
Copy Markdown

✅ 실습 체크리스트

  • 이론 학습을 완료하셨나요?
  • 미션 요구사항을 모두 이해하셨나요?
  • 실습을 수행하기 위한 공부를 완료하셨나요?
  • 실습 요구사항을 모두 완료하셨나요?

✅ 컨벤션 체크리스트

  • 디렉토리 구조 컨벤션을 잘 지켰나요?
  • pr 제목을 컨벤션에 맞게 작성하였나요?
  • pr에 해당되는 이슈를 연결하였나요?(중요)
  • 적절한 라벨을 설정하였나요?
  • 파트장에게 code review를 요청하기 위해 reviewer를 등록하였나요?
  • 닉네임/main 브랜치의 최신 상태를 반영하고 있는지 확인했나요?(매우 중요!)

📌 주안점

@tjdals-dbs tjdals-dbs requested a review from YoungJJun May 14, 2026 14:16
@tjdals-dbs tjdals-dbs self-assigned this May 14, 2026
@YoungJJun YoungJJun linked an issue May 17, 2026 that may be closed by this pull request
Copy link
Copy Markdown
Collaborator

@YoungJJun YoungJJun left a comment

Choose a reason for hiding this comment

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

7주차 피드백

  1. 검증 어노테이션 붙여서 검증하는 로직 전체적으로 잘 구현되었습니다!

  2. 이외의 모든 미션에 대해서도 요구사항에 맞게 구현되었어요.

  3. MissionConvertertoMission()

    미션 생성 요청을 받아 요청 DTO를 실제 Mission 객체로 변환하는 메서드로 이해했습니다.

    생성되는 Missiontitle이 임의값으로 하드코딩 되어있어요. 이 부분은 하드코딩을 할 필요가 없다고 생각하는데 확인해주세요!

    수정할 경우 DTO에 title 필드 추가해서 변환하면 될 것 같아요.

  4. MissionServicegetMissionsByStoreId()

    missionList에 빈 리스트가 들어올 수 있는 구조일까요?

    missionList가 비어있을 수 있으면 List<Mission> content = missionList.getContent(); 에서 content가 비어있을 수 있습니다.

    Mission lastMission = content.get(content.size() -1 );

    그러면 해당 코드가 IndexOutOfBoundsException 발생할 수 있을 것 같아요.

  5. MissionSuccessCode

    STATUS_UPDATED, MISSION_CREATED 모두 MISSION200_2로 중복입니다.

    중복을 해결해주시면 될 것 같은데 200_N으로 차이를 두는것도 좋지만 현재 상황에서는 미션 생성을 MISSION201_N으로 설정하고 HttpStatus 또한 CREATED로 바꾸는게 적절할 것 같네요.

  6. MissionService 의 커서 페이징 맨 마지막 코드

    nextCursor = lastMission.getId() + ":" + lastMission.getId(); 두 값이 동일한데 실수이시면 수정해주시고 의도하신거면 설명이 필요할 것 같아요.

  7. MissionReqDTO.GetMyMissionInProgress

    각 값에 @NotNull 만 붙어있는데 다른 위치에서 검증이 이루어지지 않고 있다면 @Min(0), @Positive 등 검증 어노테이션 추가해주면 좋을 것 같습니다.


윤샘 7주차 수고하셨어요~ 리뷰 참고해서 개선해주시면 좋을 것 같습니다!
내용이 어려웠을 것 같은데 미션 잘 진행해주셨고 앞으로도 화이팅입니다.

Copy link
Copy Markdown

@zeoueon zeoueon left a comment

Choose a reason for hiding this comment

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

윤샘 이번주 고생 많으셨어요~ 다음주도 화이팅해용 👏

Comment on lines +112 to +132
else{
switch(query.toLowerCase()){
case "id":

reviewList = reviewRepository.findReviewsByMember_IdOrderByIdDesc(memberId, pageRequest);
content = reviewList.getContent();
lastReview = content.get(content.size() - 1);
nextCursor = lastReview.getId() + ":" + lastReview.getId();
break;

case "rating":

reviewList = reviewRepository.findFirstByMemberIdOrderByRating(memberId, pageRequest);

content = reviewList.getContent();
lastReview = content.get(content.size() - 1);
nextCursor = lastReview.getRating() + ":" + lastReview.getId();

break;
default:
throw new ReviewException(ReviewErrorCode.QUERY_NOT_VALID);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

이 부분 의도가 커서가 존재하지 않은 경우에 첫 페이지를 제공하기 위한 부분 같습니다. 커서 존재 여부를 판단하고, 그 안에서 switch가 두번 중복되고, 레파지토리 메서드도 query당 2개씩 생성되어있네요.

현재 query에 따른 두 경우의 조회 로직이 본질적으로 동일하니까 함수를 두번 정의하는 것 보다 -1L, Long.MAX_VALUE값과 같은 기본값을 사용해서 분기를 제거하고 매서드를 통합하는 방법도 좋을 것 같습니다~!

@tjdals-dbs
Copy link
Copy Markdown
Author

@YoungJJun

  1. 리뷰 3, 4, 5번은 워크북 실습 내용을 제 실습 프로젝트에 맞춰 변경하다 놓친 부분이네요! 모두 수정했습니다!

  2. 6번에 대한 내용도 워크북의 실습 내용을 그대로 반영한 결과입니다!
    당시 생각으로는 switch문으로 query에 대한 분기를 작성한 점, 사용하지 않는 변수 prevCursor를 생성한 점으로 보아 정렬 기준이 id이외에 다른 값이 들어오는 경우를 위해 커서의 포맷을 일반화해서 작성했다고 판단했습니다.

  3. 기본적인 검증 내용을 놓쳤네요! 추가했습니다!

@tjdals-dbs tjdals-dbs merged commit 9d65c4e into UMC-Inha:yunsam/main May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Chapter07_API 설계 심화 - 페이징

3 participants