Skip to content

feat: Epic #499 - Real-time Notification System#510

Merged
DDINGJOO merged 4 commits into
developfrom
feature/499/notification-system
Jan 23, 2026
Merged

feat: Epic #499 - Real-time Notification System#510
DDINGJOO merged 4 commits into
developfrom
feature/499/notification-system

Conversation

@DDINGJOO

Copy link
Copy Markdown
Contributor

Summary

  • SNS/SQS 기반 실시간 알림 인프라 구축
  • Lambda Function URL + Response Streaming으로 SSE 구현
  • Streak Reminder 스케줄러 (매일 21시 KST)
  • 게임 종료, 배지 획득, 학습 완료 등 알림 연동
  • News/Notification 도메인 리팩토링 (Config 클래스 분리, DRY 원칙)

Changes

Notification Domain

  • NotificationConfig - SSE 설정 상수
  • NotificationType - 알림 타입 enum
  • NotificationMessage - 알림 DTO (Record + Builder)
  • NotificationPublisher - SNS 발행 서비스 (Singleton)
  • NotificationStreamHandler - SSE 스트리밍 Lambda
  • StreakReminderHandler - 연속 학습 리마인더 Lambda

News Domain

  • NewsConfig - TTS, 페이지네이션, 퀴즈 피드백 상수
  • NewsKey.extractDateFromPk() - 중복 메서드 통합
  • Services 리팩토링 (NewsLearningService, NewsQueryService, NewsQuizService)

Infrastructure (template.yaml)

  • NotificationTopic (SNS)
  • NotificationQueue (SQS + DLQ)
  • NotificationStreamFunction (Lambda Function URL)
  • StreakReminderFunction (EventBridge Schedule)

Test Plan

  • NotificationConfigSpec
  • NotificationTypeSpec
  • NotificationMessageSpec
  • NewsConfigSpec
  • NewsKeySpec
  • 빌드 성공 확인

…ming

- Add NotificationTopic and NotificationQueue SNS/SQS infrastructure
- Implement NotificationPublisher service for publishing notifications
- Create NotificationStreamHandler for SSE via Lambda Function URL
- Integrate badge earned notifications in BadgeService
- Add daily study completion notifications in DailyStudyCommandService
- Add test/quiz result notifications in TestCommandService and NewsQuizService
- Add SQS client to AwsClients and JsonUtil helper methods

Closes #500, #501, #502, #505, #506
@github-actions github-actions Bot added backend Backend code changes layer:entity Entity/Domain layer layer:dto DTO layer layer:repository Repository/DAO layer layer:service Service layer layer:util Utility/Helper layer layer:config Configuration layer layer:test Test code labels Jan 23, 2026
@github-actions

github-actions Bot commented Jan 23, 2026

Copy link
Copy Markdown

Jira: MESP-282

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend Backend code changes layer:config Configuration layer layer:dto DTO layer layer:entity Entity/Domain layer layer:repository Repository/DAO layer layer:service Service layer layer:test Test code layer:util Utility/Helper layer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant