Repository navigation
Conversation
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit details
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 |
github-actions
Bot
requested review from
jjunh33,
leegain1,
sangrae2325 and
xeoxxn
October 14, 2026 07:25
tnals0924
added this pull request to stack #122
October 14, 2026 07:31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#️⃣연관된 이슈
🎯 해결하려는 문제가 무엇인가요?
정해진 시각에 가는 예약 알림 6종을 보냅니다. 모든 시각은 KST입니다.
calculateRecruitStatus == OPEN)❓ 왜 해결해야 하나요?
#120까지는 사용자 행동 직후 알림만 있고, 시간이 지나서 가야 하는 알림(전날 안내, 마감 임박, 반납 기한)은 보내는 곳이 없었습니다.
⭐ 어떻게 해결했나요?
common.event):EventStartingTomorrow,EventApplyClosingTomorrow,LockerApplyClosingTomorrow,LockerUsageEndingSoon,RentalDueSoon,RentalOverdue. 신청자 기준 알림은 신청자 ID 목록을 싣고, "미신청자" 알림은 신청자 ID를 제외 목록으로 실어 member 쪽이 "활성 회원 − 신청자"를 계산합니다(event 모듈은 회원 전체를 모름).service.impl, package-private): 자기 데이터로 대상을 고르고OutboxWriter로 기록만 합니다. 메서드에@Transactional(아웃박스 기록은 트랜잭션 필수), cron에zone = "Asia/Seoul".EventNotificationScheduler(event 모듈)LockerNotificationScheduler(event 모듈)RentalNotificationScheduler(welfare 모듈). 반납 기한은 기존RentalRecord.dueAt()(물품 반납 정책 기준)으로 계산합니다. 반납 정책이 없는 물품은 기한을 계산할 수 없어 빠집니다.EventRepository: 시작·마감 일시 구간으로 게시 행사 조회, 유효 신청자 IDLockerRepository·LockerApplicationRepository: 마감 일시 구간·이용 종료일로 게시 회차 조회, 회차 신청자 IDRentalHistoryRepository.findAllByStatus,RentalHistoryService.getAllReturnRequiredRentals()(기존 회원별 조회와 같은 짝짓기 로직)NotificationEventListener에 6종 메서드를 추가했습니다.architecture.md6-2절에 예약 이벤트 스케줄러 위치·규칙을 추가했습니다.EventServiceImplTest,LockerServiceImplTest,LockerApplicationServiceImplTest의 가짜 저장소가 포트를 직접 구현해서, 새 메서드에 기존 방식대로UnsupportedOperationException스텁을 추가했습니다.🧩 이 PR의 한계 & 트레이드오프
apply_end_at을 확인하지 않아, "내일 마감" 알림 뒤에도 신청이 막히지 않습니다(기존 동작, 이번 범위 아님).RENTAL상태 이력 전체와 물품을 읽습니다.rental_status인덱스가 없지만 대여 건수가 적어 두지 않았습니다.ModularityTests·DomainImplAccessTests까지 확인했습니다. 로컬에 DB가 없어 새 JPQL·파생 쿼리와 스케줄 실행은 dev에서 확인해야 합니다(대상 행의 날짜를 내일로 바꾼 뒤 10시 실행 확인, 또는 일시적으로 cron을 바꿔 확인).⛓️ 기존 기능에 미치는 영향
outbox_eventsINSERT가 생깁니다.RentalHistoryService에 조회 메서드가 하나 늘었습니다.🔀 Edge Case & 실패 시나리오
📋 검토한 대안과 선택 이유
💬 리뷰 포인트
floorToCheckInterval)