3.3 KiB
3.3 KiB
20260327 멤버 콘텐츠 선호 신규 생성 정책 수정
목적
resolveForQuery레거시 파라미터를 기존 row 갱신 용도로 사용하지 않고, row 미존재 최초 생성 시에만 제한적으로 사용한다.- 최종 목표인 "MemberContentPreference 저장값만 조회에 사용" 방향으로 정책을 단순화한다.
최종 정책
MemberContentPreference없음 +member.auth != null- 요청 파라미터(
isAdultContentVisible,contentType)가 있으면 전달값으로 생성한다. - 요청 파라미터가 없으면
isAdultContentVisible = true,contentType = ContentType.ALL로 생성한다.
- 요청 파라미터(
MemberContentPreference없음 +member.auth == nullisAdultContentVisible = false,contentType = ContentType.ALL로 생성한다.
MemberContentPreference있음resolveForQuery로 들어온 요청 파라미터는 무시하고 저장값만 사용한다.
구현 체크리스트
MemberContentPreferenceService생성 경로(initializeDefaultPreference)가 초기값을 정책 기반으로 받을 수 있도록 수정- QA:
resolveForQuery호출 시 row 유/무에 따른 생성값이 테스트에서 일치하는지 확인
- QA:
resolveForQuery에서 기존 row에 대한 레거시 파라미터 반영/캐시 무효화 제거- QA: 기존 row + 파라미터 입력 시 저장값 불변 및 캐시 미무효화 테스트 통과
- 관련 단위/통합 테스트 갱신
- QA:
MemberContentPreferenceServiceTest,MemberContentPreferenceIntegrationTest통과
- QA:
- 회귀 검증 실행
- QA:
./gradlew test,./gradlew ktlintCheck,./gradlew build성공
- QA:
구현 완료 후 기록
1차 구현
- 무엇을:
MemberContentPreferenceService에PreferenceSeed를 도입해 row 미존재 시 초기 생성값을 호출 목적에 맞게 주입하도록 변경했다.resolveForQuery는 더 이상 기존 row를 요청 파라미터로 갱신하지 않고, 저장값 조회 전용으로 동작하도록 수정했다.- row 미존재 시 seed 정책을 다음과 같이 반영했다.
member.auth != null+ legacy 파라미터 존재: 전달값 기반 생성member.auth != null+ legacy 파라미터 미존재:true/ALL생성member.auth == null: 파라미터와 무관하게false/ALL생성
MemberContentPreferenceServiceTest,MemberContentPreferenceIntegrationTest를 정책에 맞게 갱신/추가했다.
- 왜:
- 기존 row를 조회 API 파라미터로 계속 갱신하면 "저장값 단일 기준" 목표와 충돌하므로, 레거시 파라미터 역할을 row 최초 생성 시점으로 한정하기 위해서다.
- 기존 회원 중 row 미존재 사용자의 초기 생성 경로를 명시적으로 제어해 운영 일관성을 확보하기 위해서다.
- 어떻게:
- 명령:
./gradlew test --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceServiceTest" --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceIntegrationTest"./gradlew test && ./gradlew ktlintCheck && ./gradlew build
- 결과:
- 정책 관련 단위/통합 테스트 통과.
- 전체 회귀 검증(
test,ktlintCheck,build) 통과. .kt대상 LSP 서버가 현재 환경에 없어 Kotlin LSP 진단은 수행 불가였고, 대신 Gradle 검증으로 대체했다.
- 명령: