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

3.0 KiB

20260330 라이브 캡쳐/녹화 가능여부 반영

구현 체크리스트

  • 라이브 정보 응답 모델(GetRoomInfoResponse)에 isCaptureRecordingAvailable 필드를 추가한다.
    • QA: GetRoomInfoResponse 역직렬화 시 필드가 누락되어도 기본값으로 동작한다.
  • LiveRoomActivity의 캡쳐/녹화 정책을 isCaptureRecordingAvailable || isHost || isStaff 기준으로 적용한다.
    • QA: 정책 함수와 FLAG_SECURE/녹화 콜백/강제 음소거 계산이 동일 기준으로 동작한다.
  • 라이브 생성 경로(LiveRoomCreateActivity, LiveRoomCreateViewModel, CreateLiveRoomRequest)에 설정 UI/상태/요청 필드를 추가한다.
    • QA: 생성 화면 선택값이 CreateLiveRoomRequest.isCaptureRecordingAvailable로 전송된다.
  • 라이브 수정 경로에서는 해당 설정을 변경하지 않도록 유지한다(생성 시에만 설정).
    • QA: LiveRoomInfoEditDialog/EditLiveRoomInfoRequest에 신규 항목을 추가하지 않는다.
  • 변경 파일에 대해 정적 진단/테스트/빌드를 수행하고 결과를 기록한다.
    • 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)에는 미추가로 확인됨.