- `LiveRoomInfo`에 `isChatFrozen` 필드(기본 false) 추가하여 Redis에 상태 저장 가능 - `GetRoomInfoResponse`에 `isChatFrozen` 노출 및 `LiveRoomService.getRoomInfo` 매핑 반영 - 요청 DTO `SetChatFreezeRequest(roomId, isChatFrozen)` 추가 - `PUT /live/room/info/set/chat-freeze` 엔드포인트 추가(크리에이터 권한 검증 포함)
33 lines
1.7 KiB
Markdown
33 lines
1.7 KiB
Markdown
# 라이브 룸 채팅 얼림 상태 저장/조회 추가
|
|
|
|
## 체크리스트
|
|
- [x] 데이터 모델(LiveRoomInfo)에 `isChatFrozen` 필드(Boolean, 기본 false) 추가
|
|
- [x] 요청 DTO `SetChatFreezeRequest(roomId, isChatFrozen)` 추가
|
|
- [x] 서비스 `setChatFreeze` 구현(권한: 크리에이터만)
|
|
- [x] 컨트롤러 `PUT /live/room/info/set/chat-freeze` 엔드포인트 추가
|
|
- [x] `GetRoomInfoResponse`에 `isChatFrozen`(Boolean, 기본 false) 추가 및 조회 응답 포함
|
|
- [x] 단위 테스트는 불필요 판단으로 제거(수동 테스트 가이드로 대체)
|
|
- [x] `./gradlew build`로 컴파일 확인
|
|
- [x] `./gradlew ktlintCheck` 실행 및 포맷 확인
|
|
|
|
## 검증 기록
|
|
### 1차 구현
|
|
- 무엇을: 채팅 얼림 상태 저장/조회 기능 구현
|
|
- 왜: 라이브 룸 채팅 제어 기능 제공을 위해
|
|
- 어떻게:
|
|
- 빌드/테스트 명령 실행: `./gradlew clean build` 성공, `./gradlew ktlintCheck` 예정
|
|
- API 수동 점검 예정: `PUT /live/room/info/set/chat-freeze` 요청 본문 `{ "roomId": 1, "isChatFrozen": true }` → 200 OK, 이후 `GET /live/room/info/{id}` 응답에 `isChatFrozen: true` 포함 확인
|
|
|
|
### 수동 테스트 방법
|
|
- 사전조건: 방 생성 및 시작되어 Redis에 `LiveRoomInfo`가 존재해야 함
|
|
- 1) 채팅 얼림 설정
|
|
- 요청: `PUT /live/room/info/set/chat-freeze`
|
|
- 헤더: `Authorization: Bearer <creator_token>`
|
|
- 바디: `{ "roomId": <roomId>, "isChatFrozen": true }`
|
|
- 기대: 200 OK, 본문은 `ApiResponse.ok` 규격
|
|
- 2) 룸 정보 조회에서 반영 확인
|
|
- 요청: `GET /live/room/info/{roomId}`
|
|
- 기대: 응답 JSON 내 `isChatFrozen: true`
|
|
- 3) 해제 시나리오 재검증
|
|
- `isChatFrozen`을 false로 요청 후 조회 시 `false` 확인
|