# 20260327 제외 API 콘텐츠 설정 파라미터 제거 ## 개요 - `PATCH /member/content-preference`를 제외한 모든 API 요청에서 `isAdultContentVisible`, `contentType` 파라미터를 제거한다. - 콘텐츠 설정 동기화 API(`PATCH /member/content-preference`)의 요청/응답 구조와 호출 흐름은 유지한다. ## 요구사항 요약 - 유지 대상 API: `PATCH /member/content-preference` - 제거 대상: 유지 대상 API를 제외한 나머지 API 요청 파라미터의 `isAdultContentVisible`, `contentType` ## 완료 기준 (Acceptance Criteria) - [x] AC1: `PATCH /member/content-preference` 외 API 정의에서 `isAdultContentVisible`/`contentType` 요청 파라미터가 제거된다. - [x] AC2: 제거에 따라 연쇄되는 Repository/Request 모델 시그니처가 정합성 있게 정리된다. - [x] AC3: `PATCH /member/content-preference` 요청/응답 필드(`isAdultContentVisible`, `contentType`)는 유지된다. - [x] AC4: 정적 진단/빌드/수동 QA(검색 검증) 결과가 통과 또는 사유와 함께 기록된다. ## 구현 체크리스트 - [x] API 타깃(`HomeApi`, `LiveApi`, `SearchApi`, `ContentApi`, `SeriesApi`, `SeriesMainApi`, `ExplorerApi`) 파라미터 제거 - [x] 연관 Repository 메서드 시그니처 및 호출부 인자 정리 - [x] `PATCH /member/content-preference` 체인(`UserApi`, `UpdateContentPreferenceRequest/Response`, `ContentSettingsViewModel`) 유지 확인 - [x] 진단/빌드/수동 QA 실행 - [x] 검증 기록 문서화 ## 검증 계획 - [x] 정적 진단: - `lsp_diagnostics` on modified Swift files - [x] 빌드: - `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build` - `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` - [x] 테스트 시도: - `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test` - `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test` - [x] 수동 QA: - `grep` 기반으로 `/member/content-preference` PATCH 외 API 요청 파라미터 잔존 여부 확인 ## 검증 기록 - 일시: 2026-03-27 - 무엇: 제외 API 콘텐츠 설정 파라미터 제거 작업 계획 문서 작성 - 왜: 변경 범위와 완료 기준을 선행 고정해 요청사항을 정확히 반영하기 위함 - 어떻게: docs 규칙에 맞춰 완료 기준/체크리스트/검증 계획 수립 - 실행 명령/도구: `apply_patch(문서 생성)` - 결과: 구현 계획 문서 생성 완료 - 일시: 2026-03-27 - 무엇: `PATCH /member/content-preference` 제외 API의 `isAdultContentVisible`/`contentType` 요청 파라미터 제거 - 왜: 콘텐츠 설정 PATCH API를 제외한 다른 API에서 두 파라미터를 전송하지 않도록 하기 위함 - 어떻게: - API 타깃(`HomeApi`, `LiveApi`, `SearchApi`, `ContentApi`, `SeriesApi`, `SeriesMainApi`, `ExplorerApi`) case 시그니처와 `task` 파라미터 딕셔너리에서 두 필드를 제거 - 연관 Repository 호출부에서 `UserDefaults` 기반 인자 전달 제거 - `GetRoomListRequest`의 `isAdultContentVisible` 필드 및 `LiveViewModel` 생성 인자 제거 - `PATCH /member/content-preference` 체인(`UserApi.updateContentPreference`, `UpdateContentPreferenceRequest/Response`) 유지 검증 - 실행 명령/도구: - 정적 진단: `lsp_diagnostics` (수정 파일 전체) - 빌드: - `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` - 수동 QA(검색 검증): - `grep("isAdultContentVisible\\s*:", path="SodaLive/Sources")` - `grep("contentType\\s*:", path="SodaLive/Sources")` - `grep("updateContentPreference|member/content-preference", path="SodaLive/Sources/User/UserApi.swift")` - 결과: - 빌드: `SodaLive`, `SodaLive-dev` Debug 빌드 모두 `BUILD SUCCEEDED` - 테스트: 두 스킴 모두 `Scheme ... is not currently configured for the test action`으로 실행 불가(테스트 액션 미구성) - `lsp_diagnostics`: SourceKit 환경에서 외부 모듈(`Moya`, `CombineMoya`) 해석 한계로 모듈 미해결 에러가 반환됨 - 수동 QA: `isAdultContentVisible`/`contentType`는 설정 동기화 체인과 응답 모델/화면 상태에만 남고, `/member/content-preference` PATCH 외 API 요청 파라미터에서는 제거됨