3.3 KiB
3.3 KiB
20260328_멤버정보응답하위호환수정.md
개요
- 이전 서버의
/member/info응답에countryCode,isAdultContentVisible,contentType가 없어도 신규 앱이 동일하게 동작하도록 하위 호환을 보장한다.
요구사항 해석(확정)
GetMemberInfoResponse의 신규 필드 3개는 구서버 응답에서 누락될 수 있으므로 nullable로 처리한다.MainViewModel.getMemberInfo()동기화 시 누락된 값은 로컬 저장값(없으면 안전 기본값)으로 대체한다.
완료 기준 (Acceptance Criteria)
- AC1: 구서버 응답(JSON에 신규 3개 필드 누락) 역직렬화가 실패하지 않는다.
- AC2: 구서버 응답 수신 시
SharedPreferenceManager.countryCode/isAdultContentVisible/contentPreference가 null로 오염되지 않고 기존 동작을 유지한다. - AC3: 관련 단위 테스트와 디버그 빌드가 성공한다.
구현 체크리스트
app/src/main/java/kr/co/vividnext/sodalive/settings/notification/GetMemberInfoResponse.kt- 신규 필드(
countryCode,isAdultContentVisible,contentType)를 nullable + default null로 변경
- 신규 필드(
app/src/main/java/kr/co/vividnext/sodalive/main/MainViewModel.kt- 멤버 정보 동기화 시 신규 필드 null-safe fallback 적용
app/src/test/java/kr/co/vividnext/sodalive/settings/notification/GetMemberInfoResponseCompatibilityTest.kt- 구서버 응답 누락 필드 역직렬화 및 fallback 동작 검증 테스트 추가
- 검증 실행
lsp_diagnostics(수정 파일)./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.settings.notification.GetMemberInfoResponseCompatibilityTest"./gradlew :app:testDebugUnitTest./gradlew :app:assembleDebug
검증 기록
-
기록 템플릿(후속 누적):
- YYYY-MM-DD
- 무엇/왜/어떻게:
- 실행 명령/도구:
명령 또는 사용 도구
- 결과:
- YYYY-MM-DD
-
2026-03-28
- 무엇/왜/어떻게: 구서버(
/member/info)에서 신규 필드 3종이 누락돼도 신규 앱이 동일 동작하도록 응답 모델 nullable 처리 + 멤버 정보 동기화 fallback 로직을 적용했고, 역직렬화 호환 테스트를 추가했다. - 실행 명령/도구:
apply_patch(GetMemberInfoResponse.kt, MainViewModel.kt, GetMemberInfoResponseCompatibilityTest.kt, docs/20260328_멤버정보응답하위호환수정.md)lsp_diagnostics(GetMemberInfoResponse.kt, MainViewModel.kt, GetMemberInfoResponseCompatibilityTest.kt)./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.settings.notification.GetMemberInfoResponseCompatibilityTest"./gradlew :app:testDebugUnitTest./gradlew :app:assembleDebug./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.settings.notification.GetMemberInfoResponseCompatibilityTest" :app:assembleDebugread(app/build/test-results/testDebugUnitTest/TEST-kr.co.vividnext.sodalive.settings.notification.GetMemberInfoResponseCompatibilityTest.xml)
- 결과:
lsp_diagnostics는.ktLSP 서버 미구성으로 실행 불가를 확인했다.- 호환성 테스트 2건(구서버 누락 필드 역직렬화/신규 필드 정상 매핑)이 모두 통과했다.
- 전체 단위 테스트와 디버그 빌드가 모두 성공했고, 마지막 재검증 명령에서도 성공을 재확인했다.
- 무엇/왜/어떻게: 구서버(