[fix] 지원서 이전 모집상태와 비교하지않고 알림을 보내는 문제를 수정한다#832
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning
|
| 코호트 / 파일(s) | 변경 요약 |
|---|---|
임포트 정리 backend/src/main/java/moadong/club/service/RecruitmentStateChecker.java |
Firebase Cloud Messaging 및 기타 미사용 임포트 제거; java.time.ZonedDateTime, java.util.List 등 필요한 임포트 정리 |
상태 비교 및 조기 반환 추가 backend/src/main/java/moadong/club/util/RecruitmentStateCalculator.java |
calculate 메서드에서 클럽의 이전 recruitment 상태(oldStatus)를 캡처하고 신규 상태(newStatus)를 계산한 뒤 두 상태가 동일하면 조기 반환. 상태가 변경된 경우에만 메시지 구성 및 푸시 전송 진행; 클럽의 recruitment 상태 갱신 포함 |
Sequence Diagram(s)
sequenceDiagram
participant Scheduler
participant RecruitmentStateCalculator
participant MessageService
Scheduler->>RecruitmentStateCalculator: calculate(club)
rect rgb(220,240,255)
Note over RecruitmentStateCalculator: oldStatus 캡처\nnewStatus 계산
RecruitmentStateCalculator->>RecruitmentStateCalculator: oldStatus == newStatus ?
alt 동일
RecruitmentStateCalculator-->>Scheduler: 조기 반환 (알림 미전송)
else 변경
RecruitmentStateCalculator->>RecruitmentStateCalculator: 클럽 상태 업데이트
RecruitmentStateCalculator->>MessageService: 메시지 구성 및 전송
MessageService-->>RecruitmentStateCalculator: 전송 결과
end
end
Estimated code review effort
🎯 2 (Simple) | ⏱️ ~10 minutes
- 검토 필요 지점:
calculate에서 oldStatus 캡처 시점과 동시성(여러 스레드/스케줄러 간) 관련 가능성 확인- 상태 비교 조건(동일 판정 기준)과 상태 업데이트 동작 일관성 검증
Possibly related issues
- [fix] MOA-315 지원서 이전 모집상태와 비교하지않고 알림을 보내는 문제를 수정한다 #831: 이전/신규 모집 상태 비교 및 조기 반환으로 중복 알림을 방지하려는 동일한 목적의 이슈입니다.
Possibly related PRs
- [fix] 스케줄러는 db를 참조하여 모집현황을 갱신한다 #401: 리크루트 상태 갱신 및 스케줄러 관련 변경을 다루며, RecruitmentStateChecker/Calculator 관련 로직과 코드 레벨 연관성이 있습니다.
Suggested reviewers
- Zepelown
- PororoAndFriends
- alsdddk
- yw6938
Pre-merge checks and finishing touches
❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | You can run @coderabbitai generate docstrings to improve docstring coverage. |
✅ Passed checks (2 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | PR 제목이 변경사항의 핵심을 명확히 설명합니다: 이전 모집상태와의 비교 로직 누락으로 인한 반복 알림 발송 문제를 수정하는 내용입니다. |
✨ 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
fix/add-recruitment-status-check-diff
📜 Recent review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
backend/src/main/java/moadong/club/util/RecruitmentStateCalculator.java(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-05-19T05:45:52.957Z
Learnt from: lepitaaar
Repo: Moadong/moadong PR: 406
File: backend/src/main/java/moadong/club/service/ClubApplyService.java:34-38
Timestamp: 2025-05-19T05:45:52.957Z
Learning: The code duplication between createClubApplication and editClubApplication methods in ClubApplyService.java is acknowledged but will be addressed in a future refactoring, as per the developer's plan.
Applied to files:
backend/src/main/java/moadong/club/util/RecruitmentStateCalculator.java
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.
Comment @coderabbitai help to get the list of available commands and usage tips.
Test Results78 tests 75 ✅ 15s ⏱️ Results for commit 90a5e33. ♻️ This comment has been updated with latest results. |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
backend/src/main/java/moadong/club/util/RecruitmentStateCalculator.java (1)
30-32: 메서드 가시성을 재검토하세요.
diffRecruitmentStatus메서드가public으로 선언되어 있지만, 현재 이 클래스 내부에서만 사용되는 것으로 보입니다. 외부에서 호출할 필요가 없다면private으로 변경하는 것이 캡슐화 측면에서 더 좋습니다.-public static boolean diffRecruitmentStatus(ClubRecruitmentStatus oldStatus, ClubRecruitmentStatus newStatus) { +private static boolean diffRecruitmentStatus(ClubRecruitmentStatus oldStatus, ClubRecruitmentStatus newStatus) { return oldStatus == newStatus; }단, 앞선 리뷰 코멘트에서 제안한 대로 이 메서드를 아예 제거하고 직접 비교하는 것을 더 권장합니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
backend/src/main/java/moadong/club/service/RecruitmentStateChecker.java(1 hunks)backend/src/main/java/moadong/club/util/RecruitmentStateCalculator.java(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: test
🔇 Additional comments (1)
backend/src/main/java/moadong/club/service/RecruitmentStateChecker.java (1)
14-15: LGTM! 임포트 정리가 적절합니다.사용하지 않는 Firebase 관련 임포트를 제거하고 실제로 사용되는
ZonedDateTime과List임포트를 추가한 것은 코드 위생에 좋습니다.
#️⃣연관된 이슈
#831
📝작업 내용
문제상황
무수한 알림이 와............
알림을 보내는 기준은 기존 모집 상태와 바뀐 모집상태가 달라지게 되면 알림을 보내야합니다.
하지만 기존 코드에는 이전과 바뀔 상태를 비교하는 로직이 빠져있었고 그에 따라 스케쥴러 시간마다 알림이 보내졌습니다..........
diffing 함수 만들어서 고쳤습니다!
중점적으로 리뷰받고 싶은 부분(선택)
논의하고 싶은 부분(선택)
🫡 참고사항
Summary by CodeRabbit
버그 수정
최적화