Skip to content

Conversation

@jueunk617
Copy link
Collaborator

📌 개요

Spring Events를 활용한 이벤트 기반 알림 시스템을 구축했습니다. 비즈니스 로직과 알림 로직을 완전히 분리하여 확장 가능하고 유지보수하기 쉬운 구조로 설계했습니다.

🔨 작업 내용

1. 기존 알림 시스템 개선

  • 전체 알림 읽음 처리 버그 수정
    • UnsupportedOperationException 해결 (Page → List 직접 조회)
    • 배치 처리로 DB 호출 횟수 감소 (saveAll 사용)

2. 공통 인프라 구축

  • AsyncConfig 설정
    • 알림 전용 ThreadPool 생성 (notificationExecutor)
    • 비동기 처리로 비즈니스 로직 성능 보장

3. 스터디룸 알림 이벤트 시스템

StudyRoomNoticeCreatedEvent : 공지사항 등록
MemberRoleChangedEvent : 권한 변경
MemberKickedEvent : 멤버 추방
OwnerTransferredEvent : 방장 위임

4. 학습 알림 이벤트 시스템

StudyRecordCreatedEvent : 학습 기록 등록
DailyGoalAchievedEvent : 일일 목표 달성

5. 학습 알림 이벤트 시스템

CommentCreatedEvent : 댓글 작성
ReplyCreatedEvent : 대댓글 작성
PostLikedEvent : 게시글 좋아요
CommentLikedEvent : 댓글 좋아요

6. 비즈니스 로직 연동

RoomService

  • changeUserRole() - 권한 변경/방장 위임 이벤트 발행
  • kickMember() - 멤버 추방 이벤트 발행

StudyRecordService

  • createStudyRecord() - 학습 기록/일일 목표 이벤트 발행
  • getTodayStudyPlans() - StudyPlanService 활용한 반복 계획 처리

CommentService

  • createComment() - 댓글 작성 이벤트 발행
  • createReply() - 대댓글 작성 이벤트 발행

🔗 관련 이슈

Closes #188

📝 참고 사항

일일 목표 달성 기준

오늘 계획한 모든 StudyPlan에 대해 StudyRecord가 존재하면 달성
반복 계획 포함 (StudyPlanService.getStudyPlansForDate() 활용)

남은 작업

  • 테스트 코드 작성
  • 알림 설정 기능 구현
  • 공지사항/좋아요 기능은 아직 구현되지 않아 구현 완료되면 이벤트 발행 로직 추가할 예정

✅ 체크리스트

  • 기능 동작 확인
  • 테스트 코드 작성
  • 문서/주석 추가 및 최신화

- UnsupportedOperationException 해결 (Page → List 직접 조회)
- 배치 처리로 DB 호출 횟수 감소 (saveAll 사용)
- 스터디룸 알림 이벤트 클래스 구현
- StudyRoomNotificationEventListener 구현
- RoomMemberRepository에 findUserIdsByRoomId() 추가
- 학습 알림 이벤트 클래스 구현
- StudyNotificationEventListener 구현
- StudyRecordRepository에 목표 달성 체크 메서드 추가
- 커뮤니티 알림 이벤트 클래스 구현
- CommunityNotificationEventListener 구현
- 스터디룸: 권한 변경, 추방, 방장 위임 시
- 학습: 기록 등록, 일일 목표 달성 시
- 커뮤니티: 댓글/대댓글 작성 시
- ApplicationEventPublisher Mock 추가
- 멤버 추방 테스트에 Room 조회 Mock 추가
@jueunk617 jueunk617 self-assigned this Oct 7, 2025
@github-actions github-actions bot changed the title Feat: 알림 발생 지점 연동 Feat: 알림 발생 지점 연동 (#188) Oct 7, 2025
@jueunk617 jueunk617 merged commit cdfb3f6 into dev Oct 7, 2025
3 checks passed
@github-actions github-actions bot deleted the Feat/188 branch October 7, 2025 07:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants