3.3 KiB
3.3 KiB
20260330 라이브룸 스탭 캡쳐/녹화 권한 확장
작업 체크리스트
LiveRoomViewV2의 기존 캡쳐/녹화 권한 분기(방장 전용) 확인- 스탭(
managerList/MANAGER) 판별 방식 확인 및 적용 기준 확정 - 캡쳐/녹화 허용 대상을 방장+스탭으로 확장
- LSP/빌드/테스트/수동 QA 검증 수행
- 검증 결과 기록
수용 기준 (Acceptance Criteria)
- 방장 또는 스탭인 경우 라이브룸 화면에서 캡쳐/녹화 보호가 적용되지 않는다.
- 방장/스탭이 아닌 참여자는 기존 캡쳐/녹화 보호가 유지된다.
- 캡쳐 감지 오버레이 및 강제 음소거 로직은 방장/스탭이 아닌 참여자에게만 동작한다.
- 변경 파일 LSP 진단 오류가 없다.
- Debug 빌드가 성공한다 (
SodaLive,SodaLive-dev).
검증 기록
1차 검증 (2026-03-30)
- 무엇/왜/어떻게:
- 무엇: 라이브룸 캡쳐/녹화 보호 예외 대상을
방장에서방장 + 스탭으로 확장하고,managerList변경 시 보호 상태를 즉시 재동기화하도록 변경. - 왜: 스탭 권한이 입장 시 고정이 아니라 방송 중 방장에 의해 동적으로 부여/해제되므로, 중간 권한 변경 시에도 캡쳐/녹화 허용 여부가 즉시 반영되어야 함.
- 어떻게:
LiveRoomViewV2에isCurrentUserStaff계산 프로퍼티를 추가하고shouldEnforceScreenCaptureProtection를!(isCurrentUserHost || isCurrentUserStaff)로 변경. 또한.onChange(of: viewModel.liveRoomInfo?.managerList)에서syncScreenCaptureProtectionState()를 호출해 동적 권한 변경을 반영.
- 무엇: 라이브룸 캡쳐/녹화 보호 예외 대상을
- 실행 명령:
lsp_diagnostics(filePath: /Users/klaus/Develop/sodalive/iOS/SodaLive/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift, severity: all)xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build && xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug buildgrep("\*\* BUILD SUCCEEDED \*\*", include: tool_d3db4bd4c001vPzVKsa2VZSVFE)xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test; xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" testgrep("isCurrentUserStaff|shouldEnforceScreenCaptureProtection|onChange\\(of: viewModel.liveRoomInfo\\?\\.managerList\\)", LiveRoomViewV2.swift)
- 결과:
lsp_diagnostics:No diagnostics found- 빌드:
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(코드 경로):
- 권한 분기 확인:
shouldEnforceScreenCaptureProtection = !(isCurrentUserHost || isCurrentUserStaff) - 동적 권한 반영 확인:
.onChange(of: viewModel.liveRoomInfo?.managerList) { syncScreenCaptureProtectionState() } - 보호/해제 동작 확인:
syncScreenCaptureProtectionState()에서 보호 비대상(방장/스탭)일 때isScreenCaptureProtected = false및releaseForcedCaptureMute()호출
- 권한 분기 확인:
- 제한사항: CLI 환경 특성상 실기기에서 실제 스크린샷/화면녹화 버튼 조작 E2E는 수행하지 못했으며, 최종 사용자 시나리오는 실기기 확인이 필요.