📌 상위 Epic
#499
설명
AS A 사용자
I WANT 캐치마인드 게임이 끝나면 결과 알림을 받고 싶다
SO THAT 내 순위와 점수를 확인하고 다음 게임에 도전할 수 있다
인수 조건
알림 메시지 스키마
게임 종료
```json
{
"type": "GAME_END",
"userId": "xxx",
"payload": {
"roomId": "room-xxx",
"gameSessionId": "game-xxx",
"rank": 1,
"totalPlayers": 4,
"score": 150,
"correctGuesses": 5,
"isWinner": true,
"endedAt": "2026-01-23T20:00:00Z"
}
}
```
연속 정답
```json
{
"type": "GAME_STREAK",
"userId": "xxx",
"payload": {
"roomId": "room-xxx",
"streak": 3,
"message": "3연속 정답! 🔥"
}
}
```
Tasks
트리거 위치
GameAutoCloseHandler.handleRequest() - 게임 자동 종료 시
GameService.stopGame() - 수동 종료 시
WebSocketMessageHandler - 정답 처리 시 streak 체크
예상 작업량
3 Story Points
📌 상위 Epic
#499
설명
AS A 사용자
I WANT 캐치마인드 게임이 끝나면 결과 알림을 받고 싶다
SO THAT 내 순위와 점수를 확인하고 다음 게임에 도전할 수 있다
인수 조건
알림 메시지 스키마
게임 종료
```json
{
"type": "GAME_END",
"userId": "xxx",
"payload": {
"roomId": "room-xxx",
"gameSessionId": "game-xxx",
"rank": 1,
"totalPlayers": 4,
"score": 150,
"correctGuesses": 5,
"isWinner": true,
"endedAt": "2026-01-23T20:00:00Z"
}
}
```
연속 정답
```json
{
"type": "GAME_STREAK",
"userId": "xxx",
"payload": {
"roomId": "room-xxx",
"streak": 3,
"message": "3연속 정답! 🔥"
}
}
```
Tasks
트리거 위치
GameAutoCloseHandler.handleRequest()- 게임 자동 종료 시GameService.stopGame()- 수동 종료 시WebSocketMessageHandler- 정답 처리 시 streak 체크예상 작업량
3 Story Points