### Problem - ArticleKeywordEventListener 클래스에는 이벤트 수신 및 알림 발송 이외의 비즈니스 로직이 산재되어 있음 - 키워드 구독자 조회 및 필터링 - 매칭된 사용자 ID 교집합 계산 - 이미 알림을 받은 사용자 제외 - 자기 게시글 알림 제외 - 알림 발송 후 알림 이력 저장 - 신입생이 입학하는 매년 초기에 게시글 키워드 알림 개수가 급격하게 증가하고 최소 한 건의 오류 제보 발생 - 향후 발생하는 오류를 막기 위해 테스트 코드를 작성하였지만, 단위 테스트에서는 과도한 mock을 해야하는 상황과 통합 테스트 과정에서는 테스트를 제외시킨 상황 - 또한, ArticleKeywordEventListener의 단위 테스트가 비즈니스 로직 테스트를 진행하는 것은 적절치 않다고 판단 ### Proposed Change - ArticleKeywordEventListener에서 비즈니스 로직을 서비스로 분리 - ArticleKeywordEventListener를 서비스 호출 + 알림 발송만 남도록 정리 - ArticleKeywordEventListener 단위 테스트에서 비즈니스 로직 테스트 삭제 - 분리된 서비스에 대한 단위 테스트 작성 ### Tasks - ArticleKeywordEventListener 클래스 리펙토링 - 키워드 알림 단위 테스트 및 통합 테스트 작성 ### Acceptance Criteria - ArticleKeywordEventListener 코드 라인 수 : 140줄 → 30줄 내외 - 분리된 키워드 알림 비즈니스 로직 테스트 커버리지 95%
Problem
Proposed Change
Tasks
Acceptance Criteria