Files
sodalive-android/docs/20260330_라이브캡쳐녹화가능여부반영.md

34 lines
3.0 KiB
Markdown

# 20260330 라이브 캡쳐/녹화 가능여부 반영
## 구현 체크리스트
- [x] 라이브 정보 응답 모델(`GetRoomInfoResponse`)에 `isCaptureRecordingAvailable` 필드를 추가한다.
- QA: `GetRoomInfoResponse` 역직렬화 시 필드가 누락되어도 기본값으로 동작한다.
- [x] `LiveRoomActivity`의 캡쳐/녹화 정책을 `isCaptureRecordingAvailable || isHost || isStaff` 기준으로 적용한다.
- QA: 정책 함수와 `FLAG_SECURE`/녹화 콜백/강제 음소거 계산이 동일 기준으로 동작한다.
- [x] 라이브 생성 경로(`LiveRoomCreateActivity`, `LiveRoomCreateViewModel`, `CreateLiveRoomRequest`)에 설정 UI/상태/요청 필드를 추가한다.
- QA: 생성 화면 선택값이 `CreateLiveRoomRequest.isCaptureRecordingAvailable`로 전송된다.
- [x] 라이브 수정 경로에서는 해당 설정을 변경하지 않도록 유지한다(생성 시에만 설정).
- QA: `LiveRoomInfoEditDialog`/`EditLiveRoomInfoRequest`에 신규 항목을 추가하지 않는다.
- [x] 변경 파일에 대해 정적 진단/테스트/빌드를 수행하고 결과를 기록한다.
- QA: `lsp_diagnostics` 오류 0, 관련 테스트 및 빌드 명령 성공.
## 검증 기록
- `lsp_diagnostics` (`.kt`)
- 무엇/왜/어떻게: 수정한 Kotlin 파일 정적 진단을 도구로 확인해 타입/문법 오류를 사전 점검했다.
- 실행 명령: `lsp_diagnostics(filePath=<modified .kt>, severity="all")`
- 결과: 현재 실행 환경에 Kotlin LSP가 없어(`No LSP server configured for extension: .kt`) 도구 기반 진단을 수행할 수 없었다.
- Ktlint + 테스트 + 빌드 1차
- 무엇/왜/어떻게: 코드 스타일/단위 테스트/디버그 빌드를 한 번에 검증해 회귀 가능성을 확인했다.
- 실행 명령: `./gradlew :app:ktlintCheck :app:testDebugUnitTest :app:assembleDebug`
- 결과: `:app:ktlintMainSourceSetCheck` 실패. 기존 `LiveRoomActivity.kt` 전역 스타일 위반(다수 라인)과 기존 `LiveRoomCreateViewModel.kt` unused import 경고로 실패했고, 이번 변경 기능 자체 컴파일/테스트 실패는 아님.
- 테스트 + 빌드 2차
- 무엇/왜/어떻게: 스타일 태스크 제외 후 기능 반영 코드가 실제로 컴파일/테스트를 통과하는지 재검증했다.
- 실행 명령: `./gradlew :app:testDebugUnitTest :app:assembleDebug`
- 결과: `BUILD SUCCESSFUL`.
- 수동 기능 검증(정책 반영 범위 확인)
- 무엇/왜/어떻게: 생성 전용 제약과 라이브룸 정책 반영 범위를 텍스트 검색으로 직접 확인했다.
- 실행 명령:
- `grep("isCaptureRecordingAvailable", app/src/main/java/**/*.kt)`
- `grep("isCaptureRecordingAvailable", app/src/main/java/.../live/room/update/*.kt)`
- 결과: 신규 필드는 `GetRoomInfoResponse`, `CreateLiveRoomRequest`, `LiveRoomCreateViewModel`, `LiveRoomCreateActivity`, `LiveRoomActivity`에만 존재하며, 수정 경로(`live/room/update`)에는 미추가로 확인됨.