📌 상위 Epic
#499
설명
AS A 사용자
I WANT 테스트나 뉴스 퀴즈를 완료하면 결과 알림을 받고 싶다
SO THAT 내 학습 성과를 즉시 확인할 수 있다
인수 조건
알림 메시지 스키마
단어 테스트
```json
{
"type": "TEST_COMPLETE",
"userId": "xxx",
"payload": {
"testId": "test-xxx",
"score": 85,
"correctCount": 17,
"totalCount": 20,
"isPerfect": false,
"completedAt": "2026-01-23T19:00:00Z"
}
}
```
뉴스 퀴즈
```json
{
"type": "NEWS_QUIZ_COMPLETE",
"userId": "xxx",
"payload": {
"articleId": "article-xxx",
"articleTitle": "House approves...",
"score": 100,
"correctCount": 5,
"totalCount": 5,
"isPerfect": true,
"completedAt": "2026-01-23T19:30:00Z"
}
}
```
Tasks
트리거 위치
TestHandler.submitAnswer() - 마지막 문제 제출 시
NewsQuizService.submitQuiz() - 퀴즈 제출 시
예상 작업량
3 Story Points
📌 상위 Epic
#499
설명
AS A 사용자
I WANT 테스트나 뉴스 퀴즈를 완료하면 결과 알림을 받고 싶다
SO THAT 내 학습 성과를 즉시 확인할 수 있다
인수 조건
알림 메시지 스키마
단어 테스트
```json
{
"type": "TEST_COMPLETE",
"userId": "xxx",
"payload": {
"testId": "test-xxx",
"score": 85,
"correctCount": 17,
"totalCount": 20,
"isPerfect": false,
"completedAt": "2026-01-23T19:00:00Z"
}
}
```
뉴스 퀴즈
```json
{
"type": "NEWS_QUIZ_COMPLETE",
"userId": "xxx",
"payload": {
"articleId": "article-xxx",
"articleTitle": "House approves...",
"score": 100,
"correctCount": 5,
"totalCount": 5,
"isPerfect": true,
"completedAt": "2026-01-23T19:30:00Z"
}
}
```
Tasks
트리거 위치
TestHandler.submitAnswer()- 마지막 문제 제출 시NewsQuizService.submitQuiz()- 퀴즈 제출 시예상 작업량
3 Story Points