Files
sodalive-backend-spring-boot/docs/20260619_cdn_url_공통화/plan-task.md

3.2 KiB

CDN URL 변환 공통화 구현 계획

Phase 1: 공통 함수 동작 고정

  • Task 1.1: 공통 CDN URL 변환 테스트 작성
    • 파일: src/test/kotlin/kr/co/vividnext/sodalive/v2/common/domain/CdnUrlExtensionsTest.kt
    • RED: null, blank, 절대 URL, 상대 path 입력의 기대 동작을 검증하는 실패 테스트를 작성하고 실패를 확인한다.
    • GREEN: src/main/kotlin/kr/co/vividnext/sodalive/v2/common/domain/CdnUrlExtensions.kt에 최소 구현을 추가하고 통과를 확인한다.
    • REFACTOR: 함수명/패키지/import를 정리하고 단일 테스트를 다시 실행한다.
    • 검증 명령: ./gradlew test --tests kr.co.vividnext.sodalive.v2.common.domain.CdnUrlExtensionsTest
    • 검증 기록:
      • RED: ./gradlew test --tests kr.co.vividnext.sodalive.v2.common.domain.CdnUrlExtensionsTest 실행 결과, Unresolved reference: toCdnUrl로 실패해 공통 함수 미구현 상태를 확인했다.
      • GREEN: 같은 명령 재실행 결과 BUILD SUCCESSFUL로 통과했다.

Phase 2: 서비스 중복 함수 제거

  • Task 2.1: 4개 서비스가 공통 함수를 사용하도록 변경
    • 파일:
      • src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryService.kt
      • src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryService.kt
      • src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/audio/application/CreatorChannelAudioQueryService.kt
      • src/main/kotlin/kr/co/vividnext/sodalive/v2/ranking/application/CreatorRankingQueryService.kt
    • RED: Task 1.1 테스트로 절대 URL 유지 동작을 먼저 고정한다.
    • GREEN: private toCdnUrl 중복 선언을 제거하고 공통 함수를 import해 사용한다.
    • REFACTOR: 변경 파일의 불필요한 import/중복 코드를 제거하고 회귀 테스트를 실행한다.
    • 검증 명령:
      • ./gradlew test --tests kr.co.vividnext.sodalive.v2.common.domain.CdnUrlExtensionsTest
      • ./gradlew test --tests kr.co.vividnext.sodalive.v2.ranking.application.CreatorRankingQueryServiceTest
    • 검증 기록:
      • rg "fun String\\?\\.toCdnUrl|toCdnUrl\\(\\)" src/main/kotlin/kr/co/vividnext/sodalive/v2 src/test/kotlin/kr/co/vividnext/sodalive/v2 -n 실행 결과, 공통 함수 선언 1곳만 남은 것을 확인했다.
      • ./gradlew test --tests kr.co.vividnext.sodalive.v2.ranking.application.CreatorRankingQueryServiceTest 실행 결과 BUILD SUCCESSFUL로 ranking 서비스 회귀 테스트가 통과했다.

검증 기록

  • ./gradlew ktlintCheck 첫 실행은 private 함수 제거 후 남은 클래스 종료 전 빈 줄로 실패했다.
  • 지적된 CreatorChannelAudioQueryService.kt, CreatorChannelLiveQueryService.kt의 빈 줄만 제거한 뒤 ./gradlew ktlintCheck를 재실행했고 BUILD SUCCESSFUL로 통과했다.
  • 문서 변경 규칙 확인을 위해 ./gradlew tasks --all을 실행했고 BUILD SUCCESSFUL로 통과했다.
  • 최종 관련 테스트로 ./gradlew test --tests kr.co.vividnext.sodalive.v2.common.domain.CdnUrlExtensionsTest --tests kr.co.vividnext.sodalive.v2.ranking.application.CreatorRankingQueryServiceTest 를 실행했고 BUILD SUCCESSFUL로 통과했다.