Skip to content

[BUG] 추천 결과에서 종료된 챌린지 제외#303

Merged
alynn520 merged 1 commit intodevelopfrom
bug/#302-recommendation-end-challenge
Feb 8, 2026
Merged

[BUG] 추천 결과에서 종료된 챌린지 제외#303
alynn520 merged 1 commit intodevelopfrom
bug/#302-recommendation-end-challenge

Conversation

@alynn520
Copy link
Contributor

@alynn520 alynn520 commented Feb 8, 2026

#️⃣ 연관된 이슈

관련된 이슈 번호를 적어주세요.
Close #302

✨ 작업 내용 (Summary)

이번 PR에서 작업한 내용을 간략히 설명해주세요. (이미지 첨부 가능)


추천 결과에서 종료된 챌린지는 제외

✅ 변경 사항 체크리스트

다음 항목들을 확인하고 체크해주세요.

  • 코드에 영향이 있는 모든 부분에 대한 테스트를 작성하고 실행했나요?
  • 문서를 작성하거나 수정했나요? (필요한 경우)
  • 중요한 변경 사항이 팀에 공유되었나요?

🧪 테스트 결과

코드 변경에 대해 테스트를 수행한 결과를 요약해주세요.

  • 테스트 환경: 로컬
  • 테스트 방법: postman
  • 결과 요약: 챌린지 ID 3 종료 전 후로 나눠서 테스트
image

📸 스크린샷

관련된 스크린샷 또는 GIF가 있다면 여기에 첨부해주세요.


💬 리뷰 요구사항

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요.


📎 참고 자료

관련 문서, 레퍼런스 링크 등이 있다면 여기에 첨부해주세요.

Summary by CodeRabbit

릴리스 노트

  • 버그 수정
    • 추천 목록에서 완료된 도전 과제가 제외되도록 개선하였습니다.
    • 도전 과제 추천 시 필터링 로직을 강화하여 완료된 항목이 노출되지 않습니다.

@alynn520 alynn520 self-assigned this Feb 8, 2026
@alynn520 alynn520 added 🐞 bug 버그 이슈 아린 labels Feb 8, 2026
@alynn520 alynn520 linked an issue Feb 8, 2026 that may be closed by this pull request
@coderabbitai
Copy link

coderabbitai bot commented Feb 8, 2026

📝 Walkthrough

Walkthrough

챌린지 리포지토리에 종료되지 않은 챌린지 ID를 필터링하는 findNotFinishedIds 쿼리 메서드를 추가하고, 추천 서비스에서 이를 활용하여 종료된 챌린지를 추천 결과에서 제외하는 로직을 구현했습니다.

Changes

코호트 / 파일(s) 요약
리포지토리 쿼리 메서드 추가
src/main/java/com/hrr/backend/domain/challenge/repository/ChallengeRepository.java
JPQL을 이용한 findNotFinishedIds 메서드 추가: 주어진 ID 목록 내에서 특정 상태가 아닌 챌린지 ID만을 반환하여 종료되지 않은 챌린지를 필터링합니다.
추천 서비스 필터링 로직 추가
src/main/java/com/hrr/backend/domain/recommendation/service/ChallengeRecommendationService.java
모든 챌린지 ID를 수집한 후 findNotFinishedIds를 호출하여 종료된 챌린지를 제외하고, 추천 결과가 비어있을 경우 조기 반환하는 로직을 추가했습니다.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10분

Possibly related PRs

Poem

🚀 마침내 종료된 챌린지는 사라지고
추천 목록엔 활기 넘치는 챌린지만 남는다
쿼리 하나, 필터 하나로
추천은 더욱 스마트해졌네요! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 종료된 챌린지를 추천 결과에서 제외하는 주요 변경사항을 명확하게 설명합니다.
Linked Issues check ✅ Passed PR의 코드 변경사항이 #302 이슈의 요구사항을 충족합니다: ChallengeRepository에 findNotFinishedIds 메서드 추가 및 ChallengeRecommendationService에서 종료된 챌린지 필터링 로직 구현.
Out of Scope Changes check ✅ Passed 모든 변경사항이 #302 이슈의 범위 내에 있습니다: repository 메서드 추가와 service 로직 수정만 포함되어 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch bug/#302-recommendation-end-challenge

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
src/main/java/com/hrr/backend/domain/challenge/repository/ChallengeRepository.java (1)

70-79: 빈 리스트 전달 시 IN 절 예외 가능성 확인 필요

현재 호출부(ChallengeRecommendationService)에서는 allChallenges가 비어있지 않음을 보장한 후 호출하므로 안전합니다. 하지만 이 메서드는 public이므로 다른 곳에서 빈 리스트로 호출될 경우, Hibernate의 IN :ids 절이 빈 컬렉션에 대해 예외를 발생시킬 수 있습니다.

방어적으로 서비스 레이어에서 빈 리스트 체크를 하거나, 메서드 Javadoc에 비어있지 않은 리스트를 전달해야 한다는 전제 조건을 명시해 두면 향후 오용을 방지할 수 있습니다.

참고: Hibernate 6+에서는 빈 IN 절 처리가 개선되었지만, JPA 스펙상 보장되지 않으므로 방어 코드를 권장합니다.

src/main/java/com/hrr/backend/domain/recommendation/service/ChallengeRecommendationService.java (1)

90-109: 구현이 깔끔하고 기존 패턴과 일관성 있게 잘 작성되었습니다 👍

차단된 사용자 챌린지 제외 로직(1.5단계)과 동일한 패턴으로 종료 챌린지 필터링을 추가한 점이 좋습니다. 가독성과 유지보수성 모두 양호합니다.

성능 관련 선택적 개선 제안: 현재 findAllChallengeMeta()로 전체 챌린지를 조회한 뒤 별도 쿼리(findNotFinishedIds)로 종료 챌린지를 필터링하고 있습니다. 만약 종료된 챌린지가 많아질 경우, findAllChallengeMeta() 쿼리 자체에서 FINISHED 상태를 제외하면 DB 라운드트립 1회와 불필요한 데이터 전송을 줄일 수 있습니다.

당장 필요한 변경은 아니지만, 데이터가 커지면 고려해 볼 만한 최적화입니다.


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 and usage tips.

Copy link
Contributor

@yc3697 yc3697 left a comment

Choose a reason for hiding this comment

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

확인했습니다~

@alynn520 alynn520 merged commit 06749c5 into develop Feb 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

아린 🐞 bug 버그 이슈

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] 종료된 챌린지는 추천 결과에서 제외

2 participants