🛠️ 계획된 개발 기능
월간 AI 리포트가 정상적으로 생성되면 사용자에게 앱 내 알림과 웹 푸시를 전송합니다.
현재 월간 리포트 생성 후 구독 조건을 만족하는 사용자에게 이메일은 자동으로 발송되지만, 앱에서는 리포트 생성 완료 사실을 안내하지 않습니다.
기존 notification-service를 활용하여 사용자가 새 월간 리포트 생성 여부를 확인할 수 있도록 합니다.
🛠 기능 구현 세부사항
- 사용자·연월의
AI_REPORT 저장이 성공한 이후 알림을 생성합니다.
- 리포트 생성에 실패하면 알림을 생성하지 않습니다.
- 기존
NotificationCommandClient와 NotificationCreateCommand를 재사용합니다.
- 알림 유형은
AI_REPORT를 사용합니다.
- 알림 제목과 본문은 다음 형식을 사용합니다.
제목: 월간 AI 리포트가 생성되었어요
본문: 2026년 7월 소비 분석과 맞춤 추천을 확인해 보세요.
- 월간 배치 재실행 시 동일 사용자·동일 연월에 중복 알림이 생성되지 않도록 멱등성 키를 사용합니다.
AI_REPORT_CREATED:{userId}:{yearMonth}
- notification-service의 기존 eventId 중복 방지 로직을 재사용합니다.
- 기존 alarm_agree 정책을 유지합니다.
- 알림 수신에 동의하지 않은 사용자는 알림 저장과 웹 푸시를 건너뜁니다.
- 이메일 발송 여부와 리포트 생성 알림은 분리합니다.
- 이메일 미등록, 구독 미대상 또는 SMTP 실패로 이메일이 발송되지 않더라도 리포트가 정상 생성됐다면 알림을 생성합니다.
- 알림 생성 실패가 리포트 저장, 자동 이메일 발송 또는 다른 사용자의 월간 배치를 중단시키지 않도록 실패를 격리합니다.
- BFF 알림 조회 응답에서 AI_REPORT 유형이 정상적으로 전달되는지 확인합니다.
- 프론트에서 알림 선택 시 해당 연월의 월간 리포트 화면으로 이동할 수 있는지 확인합니다.
🛠 참고사항
- 새로운 알림 테이블이나 별도 발송 이력을 추가하지 않습니다.
- 기존 Notification Client와 DTO를 재사용합니다.
- 월간 리포트 생성 및 소비 집계 로직은 변경하지 않습니다.
- 월간 배치 스케줄러 실행 시간은 변경하지 않습니다.
- 자동 이메일 발송 대상과 정책은 변경하지 않습니다.
- 이메일 재시도 기능은 추가하지 않습니다.
- 사용자 alarm_agree 정책은 변경하지 않습니다.
- PDF, FastAPI 및 BFF의 기존 API 계약은 불필요하게 변경하지 않습니다.
- 알림 화면 이동에 추가 정보가 필요하다면 프론트 및 BFF 담당자와 계약을 먼저 합의합니다.
📝 check-lists
🛠️ 계획된 개발 기능
월간 AI 리포트가 정상적으로 생성되면 사용자에게 앱 내 알림과 웹 푸시를 전송합니다.
현재 월간 리포트 생성 후 구독 조건을 만족하는 사용자에게 이메일은 자동으로 발송되지만, 앱에서는 리포트 생성 완료 사실을 안내하지 않습니다.
기존 notification-service를 활용하여 사용자가 새 월간 리포트 생성 여부를 확인할 수 있도록 합니다.
🛠 기능 구현 세부사항
AI_REPORT저장이 성공한 이후 알림을 생성합니다.NotificationCommandClient와NotificationCreateCommand를 재사용합니다.AI_REPORT를 사용합니다.AI_REPORT_CREATED:{userId}:{yearMonth}
🛠 참고사항
📝 check-lists