Files
sodalive-ios/docs/20260330_라이브캡쳐녹화가능여부설정추가.md

4.4 KiB

20260330 라이브 캡쳐/녹화 가능 여부 설정 추가

작업 체크리스트

  • 라이브 정보 응답 모델에 isCaptureRecordingAvailable 필드 추가 및 매핑 확인
  • LiveRoomViewV2 캡쳐/녹화 보호 조건에 라이브 설정값 반영
  • 캡쳐/녹화 불가 라이브에서 방장/스탭 예외 허용 유지
  • 라이브 생성 경로에만 설정값 전송되도록 반영
  • 라이브 수정(편집) 경로에서 해당 설정 변경 불가 상태 유지 확인
  • 진단/빌드/테스트/수동 QA 수행

수용 기준 (Acceptance Criteria)

  • GetRoomInfoResponse(또는 동등 라이브 정보 모델)에 isCaptureRecordingAvailable가 존재한다.
  • 라이브 설정값이 true면 일반 참여자도 캡쳐/녹화 보호가 비활성화된다.
  • 라이브 설정값이 false면 일반 참여자는 기존 캡쳐/녹화 보호가 유지된다.
  • 라이브 설정값이 false여도 방장/스탭은 캡쳐/녹화 보호 대상이 아니다.
  • 설정값은 라이브 생성 요청에서만 설정 가능하고, 라이브 수정 요청에서는 변경되지 않는다.
  • 변경 파일 lsp_diagnostics를 수행했고 SodaLive/SodaLive-dev Debug build가 성공한다.

검증 기록

1차 검증 (2026-03-30)

  • 무엇/왜/어떻게:
    • 무엇: 라이브 정보/생성 요청에 isCaptureRecordingAvailable를 추가하고, LiveRoomViewV2의 캡쳐 보호 조건을 라이브 설정값 + 방장/스탭 예외로 갱신.
    • 왜: 캡쳐/녹화 가능 여부를 라이브 생성 시점에만 제어하면서, 비허용 라이브에서도 운영 권한(방장/스탭) 예외를 유지하기 위해.
    • 어떻게: 모델(GetRoomInfoResponse, CreateLiveRoomRequest, GetRecentRoomInfoResponse), 생성 UI/ViewModel(LiveRoomCreateView, LiveRoomCreateViewModel), 보호 로직(LiveRoomViewV2)을 최소 수정으로 연결.
  • 실행 명령:
    • lsp_diagnostics(filePath: SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift, severity: all)
    • lsp_diagnostics(filePath: SodaLive/Sources/Live/Room/GetRoomInfoResponse.swift, severity: all)
    • lsp_diagnostics(filePath: SodaLive/Sources/Live/Room/Create/CreateLiveRoomRequest.swift, severity: all)
    • lsp_diagnostics(filePath: SodaLive/Sources/Live/Room/Create/GetRecentRoomInfoResponse.swift, severity: all)
    • lsp_diagnostics(filePath: SodaLive/Sources/Live/Room/Create/LiveRoomCreateViewModel.swift, severity: all)
    • lsp_diagnostics(filePath: SodaLive/Sources/Live/Room/Create/LiveRoomCreateView.swift, severity: all)
    • lsp_diagnostics(filePath: SodaLive/Sources/I18n/I18n.swift, severity: all)
    • xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build && xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build
    • xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test; xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test
    • grep("isCaptureRecordingAvailable", include: *.swift, path: SodaLive/Sources/Live/Room)
    • grep("captureRecordingSetting|captureRecordingAllowed|captureRecordingNotAllowed", include: *.swift, path: SodaLive/Sources)
    • grep("isCaptureRecordingAvailable", include: *.swift, path: SodaLive/Sources/Live/Room/Edit)
  • 결과:
    • lsp_diagnostics:
      • LiveRoomViewV2.swift, GetRecentRoomInfoResponse.swift, I18n.swiftNo diagnostics found
      • 일부 파일(CreateLiveRoomRequest.swift, LiveRoomCreateViewModel.swift, LiveRoomCreateView.swift, GetRoomInfoResponse.swift)은 SourceKit 모듈/심볼 해석 한계(No such module, Cannot find type ... in scope)가 보고됨
    • 빌드: SodaLive, SodaLive-dev 모두 ** BUILD SUCCEEDED **
    • 테스트: Scheme SodaLive is not currently configured for the test action., Scheme SodaLive-dev is not currently configured for the test action.
    • 수동 QA(코드 경로):
      • 생성 UI에 캡쳐/녹화 허용 토글 추가 확인 (LiveRoomCreateView)
      • 생성 요청에만 isCaptureRecordingAvailable 전송 확인 (CreateLiveRoomRequest, LiveRoomCreateViewModel)
      • 편집 경로에 해당 필드 미존재 확인 (Live/Room/Edit grep 결과 없음)
      • 라이브룸 보호 분기 확인: isCaptureRecordingAvailable == true면 보호 비활성화, false면 방장/스탭 예외 외 참여자 보호 유지 (LiveRoomViewV2)