4.7 KiB
4.7 KiB
20260327 콘텐츠 설정 PATCH 변경 필드 옵셔널 전송
개요
userApi.updateContentPreference요청 시contentType,isAdultContentVisible를 항상 같이 보내지 않고, 실제 변경된 필드만 PATCH payload에 포함되도록 수정한다.- 요청 모델을 optional 파라미터로 변경하고, 기존 UI/동기화 동작은 유지한다.
요구사항 요약
- 대상 API:
PATCH /member/content-preference - 변경 사항:
- 요청 DTO의
contentType,isAdultContentVisible를 optional로 전환 - 토글 변경 시에는
isAdultContentVisible만 전송 - 콘텐츠 타입 변경 시에는
contentType만 전송
- 요청 DTO의
완료 기준 (Acceptance Criteria)
- AC1:
UpdateContentPreferenceRequest가 optional 필드를 사용한다. - AC2: 토글 변경 요청 payload에
isAdultContentVisible만 포함된다. - AC3: 콘텐츠 타입 변경 요청 payload에
contentType만 포함된다. - AC4: 기존 debounce/로딩/에러 처리 흐름이 유지된다.
- AC5: 빌드/진단 검증 결과가 문서에 기록된다.
구현 체크리스트
UpdateContentPreferenceRequestoptional 필드 전환ContentSettingsViewModel요청 생성 로직을 변경 필드 기반으로 분기UserApi/UserRepository호출부 영향 점검- 수정 파일 진단 및 워크스페이스 빌드/테스트 실행
- 검증 결과 문서화
검증 계획
- 정적 진단:
lsp_diagnostics("SodaLive/Sources/Settings/Content/UpdateContentPreferenceRequest.swift")lsp_diagnostics("SodaLive/Sources/Settings/Content/ContentSettingsViewModel.swift")
- 빌드:
xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug buildxcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build
- 테스트 시도:
xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" testxcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test
검증 기록
-
일시: 2026-03-27
- 무엇: 콘텐츠 설정 PATCH 변경 필드 옵셔널 전송 작업 계획 문서 작성
- 왜: 구현 범위와 검증 절차를 선행 고정하여 요청사항을 정확히 반영하기 위함
- 어떻게: 기존 docs 포맷 기준으로 완료 기준/체크리스트/검증 계획 수립
- 실행 명령/도구:
apply_patch(문서 생성) - 결과: 구현 계획 문서 생성 완료
-
일시: 2026-03-27
- 무엇:
updateContentPreference를 변경 필드만 전송하도록 optional request + diff 기반 전송 로직 적용 - 왜: PATCH 호출 시
contentType/isAdultContentVisible를 항상 함께 보내지 않고 실제 변경 필드만 서버에 전달하기 위함 - 어떻게:
UpdateContentPreferenceRequest를Bool?/ContentType?로 변경하고isEmpty계산 프로퍼티 추가ContentSettingsViewModel에lastSyncedState를 추가해 이전 동기화 상태 대비 변경 필드를 계산makeUpdateContentPreferenceRequest(from:to:)에서 변경된 값만 request에 채우고, 빈 요청은 API 호출 생략- 서버 성공 응답 시
applyServerState에서lastSyncedState를 갱신해 후속 diff 기준 일관성 유지 - search-mode 준수를 위해 explore 에이전트 2개 병렬 실행으로 호출 흐름/optional 패턴 교차 확인
- 실행 명령/도구:
- Background agents:
task(subagent_type="explore", description="Trace content-preference flow")task(subagent_type="explore", description="Find optional PATCH patterns")
- 코드/진단:
lsp_diagnostics("SodaLive/Sources/Settings/Content/UpdateContentPreferenceRequest.swift")lsp_diagnostics("SodaLive/Sources/Settings/Content/ContentSettingsViewModel.swift")
- 빌드/테스트:
xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug buildxcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug buildxcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" testxcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test
- Background agents:
- 결과:
SodaLive/SodaLive-devDebug 빌드 모두BUILD SUCCEEDED- 테스트는 두 스킴 모두
Scheme ... is not currently configured for the test action으로 실행 불가(테스트 액션 미구성) lsp_diagnostics는 SourceKit 모듈 해석 한계로 다수 에러를 반환했으나, 실제 xcodebuild 통과로 컴파일 정상 확인- 코드상으로 토글 변경 시
isAdultContentVisible만, 타입 변경 시contentType만 request에 포함되도록 반영 완료
- 무엇: