## 어떤 기능인가요? > 선행: #113 (아웃박스 릴레이) member 모듈 `notification` 도메인에 알림 발송 공통 처리를 만든다. 이벤트 리스너는 이 처리를 불러 알림함 저장과 FCM 발송을 한 번에 한다. ## 📝 작업 상세 내용 - [ ] `NotificationCategory`(`BILLILGE`/`EVENT`/`LOCKER`/`NOTICE`), `NotificationType`(10종 문구 템플릿), 을/를·이/가 조사 유틸 - [ ] `MemberNotificationSetting.isEnabled(category)` - [ ] 알림함 저장소 (`notifications`) - [ ] 푸시 대상 조회 — 회원·알림 설정 조인, 카테고리를 켜고 토큰이 있는 활성 회원 - [ ] 무효 FCM 토큰을 토큰 값으로 일괄 정리 - [ ] `NotificationDispatcher` — 대상 결정 → 알림함 저장(설정과 무관) → 푸시(설정 켠 회원만, 토큰 중복 제거) → 무효 토큰 정리 ## 📁 참고 자료 (선택) - 푸시 제목은 문구표의 굵은 첫 문장, 본문은 둘째 문장 (한 문장짜리는 제목만) - 푸시 data: `{type, category, targetId}` - 전체 발송 대상은 활성 회원(`is_deleted = 0`) 전체 - `RETRYABLE`은 로그만 남기고 다시 보내지 않는다
Activity