7.0 KiB
7.0 KiB
20260327 멤버 콘텐츠 선호 기본값 조정
목적
MemberContentPreference신규 생성 기본값을 다음 정책으로 고정한다.- 기존 회원 +
member.auth != null인 경우:isAdultContentVisible = true,contentType = ContentType.ALL - 그 외:
isAdultContentVisible = false,contentType = ContentType.ALL
- 기존 회원 +
구현 체크리스트
- 기본값 시드 로직을
member.auth기준 정책으로 단순화한다.- QA: row 미존재 + 인증/미인증 케이스에서 저장값이 각각
true/ALL,false/ALL인지 테스트로 확인
- QA: row 미존재 + 인증/미인증 케이스에서 저장값이 각각
- 레거시 조회 파라미터(
isAdultContentVisible,contentType)가 신규 row 기본값에 영향을 주지 않도록 정리한다.- QA:
resolveForQuery호출 시 파라미터 전달 여부와 무관하게 정책 기본값으로 생성되는지 확인
- QA:
- 관련 단위/통합 테스트 기대값을 정책에 맞게 수정한다.
- QA:
MemberContentPreferenceServiceTest,MemberContentPreferenceIntegrationTest통과
- QA:
- 회귀 검증을 실행한다.
- QA:
./gradlew test --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceServiceTest" --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceIntegrationTest",./gradlew build성공
- QA:
구현 완료 후 기록
1차 구현
- 무엇을:
MemberContentPreferenceService.initializeDefaultPreference의 기본 seed를member.auth != null기준으로 변경해 인증 회원은true/ALL, 그 외는false/ALL로 생성되도록 수정했다.resolveForQuery의 신규 row 생성 seed 계산에서 legacy 파라미터를 제거하고member.auth기반 고정 정책(true/ALL또는false/ALL)만 사용하도록 정리했다.MemberContentPreferenceServiceTest,MemberContentPreferenceIntegrationTest의 관련 시나리오를 정책에 맞게 수정했다.
- 왜:
- 요청사항이 “기존 회원가입 +
member.auth != null이면true/ALL, 그 외는false/ALL”로 명확하여, 신규 row 기본값이 요청 파라미터에 영향을 받지 않도록 일관된 기준으로 통일해야 했기 때문이다.
- 요청사항이 “기존 회원가입 +
- 어떻게:
- 명령:
./gradlew test --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceServiceTest.shouldSeedPreferenceToTrueAndAllWhenRowMissingAndAuthenticatedRegardlessOfLegacyParams"./gradlew test --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceServiceTest" --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceIntegrationTest"./gradlew build
- 결과:
- 정책 핵심 시나리오 단일 테스트 통과.
- 대상 단위/통합 테스트 통과.
- 전체 build(테스트/ktlint 포함) 통과.
.kt확장자용 LSP 서버가 현재 환경에 없어lsp_diagnostics는 실행 불가였고, 대신 Gradle 검증으로 정합성을 확인했다.
- 명령:
연계 작업(동일 기능)
2차 구현 - resolveForQuery 조회 파라미터 제거
- 무엇을:
MemberContentPreferenceService.resolveForQuery시그니처에서 미사용 파라미터 2개 (isAdultContentVisible,contentType)를 제거하고member단일 파라미터로 정리했다.- 시그니처 변경에 맞춰 서비스/컨트롤러/테스트의
resolveForQuery호출부 인자 전달 코드를 일괄 정리했다.
- 왜:
- 실제로 사용되지 않는 파라미터를 제거해 함수 계약을 단순화하고, 호출부 가독성과 유지보수성을 높이기 위해서다.
- 어떻게:
- 명령:
./gradlew compileKotlin compileTestKotlin./gradlew test --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceServiceTest" --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceIntegrationTest"./gradlew buildlsp_diagnostics(filePath="src/main/kotlin", extension=".kt")
- 결과:
- 시그니처 변경 직후 컴파일 에러로 표시된 호출부를 모두 정리한 뒤
compileKotlin/compileTestKotlin성공. - 관련 단위/통합 테스트 통과.
- 전체 build(ktlint/test 포함) 성공.
- 현재 환경에는 Kotlin LSP 서버가 없어
lsp_diagnostics는 실행 불가였고, Gradle 컴파일/테스트/빌드로 정합성을 확인했다.
- 시그니처 변경 직후 컴파일 에러로 표시된 호출부를 모두 정리한 뒤
- 명령:
3차 구현 - 수정 파일 미사용 파라미터 정리
- 무엇을:
resolveForQuery(member = member)로 단순화된 이후 미사용 상태가 된resolvePreference헬퍼 파라미터를 12개 파일에서 제거했다.- 헬퍼 호출부를 정리했고, null 회원 분기에서 실제로 파라미터를 사용하는 서비스/컨트롤러
(
HomeService,LiveApiService,AudioContentController,AudioContentMainTabHomeController)는 기존 전달 로직을 유지했다.
- 왜:
- 사용되지 않는 파라미터는 경고와 혼선을 유발해 유지보수 비용을 높이므로, 실제 사용하는 함수 계약만 남겨 코드 의도를 명확히 하기 위해서다.
- 어떻게:
- 명령:
./gradlew compileKotlin./gradlew test --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceServiceTest" --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceIntegrationTest"./gradlew buildlsp_diagnostics(filePath="src/main/kotlin", extension=".kt")
- 결과:
compileKotlin성공.- 관련 단위/통합 테스트 성공.
- 전체 build(ktlint/test 포함) 성공.
- 현재 환경에 Kotlin LSP 서버가 없어
lsp_diagnostics는 실행 불가였고, Gradle 컴파일/테스트/빌드 결과로 정합성을 확인했다.
- 명령:
4차 수정 - 잔여 미사용 파라미터 추가 정리
- 무엇을:
- 3차 정리 이후에도 남아 있던 수정 파일 내 함수 미사용 파라미터를 추가 제거했다.
resolvePreference(member: Member)만 사용하는 컨트롤러들의@RequestParam("isAdultContentVisible"),@RequestParam("contentType")를 제거하고 import를 정리했다.ExplorerService.getCreatorProfile의 미사용 파라미터isAdultContentVisible을 제거하고ExplorerController호출부를 함께 수정했다.
- 왜:
- 실제 로직에서 사용되지 않는 파라미터를 제거해 함수 계약을 단순화하고, 유지보수 시 혼선을 줄이기 위해서다.
- 어떻게:
- 명령:
./gradlew compileKotlin compileTestKotlin./gradlew test --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceServiceTest" --tests "kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceIntegrationTest"./gradlew buildlsp_diagnostics(filePath="src/main/kotlin", extension=".kt")
- 결과:
compileKotlin,compileTestKotlin성공.- 관련 단위/통합 테스트 성공.
- 전체 build(ktlint/test 포함) 성공.
- 현재 환경에 Kotlin LSP 서버가 없어
lsp_diagnostics는 실행 불가였고, Gradle 검증으로 정합성을 확인했다.
- 명령: