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

37 lines
1.6 KiB
Markdown

# PRD: CDN URL 변환 공통화
## 1. Overview
v2 서비스에서 중복 선언된 `String?.toCdnUrl()` 확장 함수를 공통 유틸로 분리한다.
## 2. Problem
- `CreatorChannelHomeQueryService`, `CreatorChannelLiveQueryService`, `CreatorChannelAudioQueryService`,
`CreatorRankingQueryService`에 유사한 CDN URL 변환 로직이 private 함수로 중복되어 있다.
- ranking 구현은 절대 URL을 그대로 유지하지 않아 다른 3곳과 동작이 다르다.
## 3. Goals
- 4개 서비스가 하나의 공통 `toCdnUrl` 함수를 사용한다.
- `null` 또는 blank 입력은 `null`을 반환한다.
- `http://`, `https://` 절대 URL은 그대로 반환한다.
- 상대 path는 `cloudFrontHost/path` 형식으로 반환한다.
## 4. Non-Goals
- QueryDSL 조회 로직이나 공개 API 스키마는 변경하지 않는다.
- 기존 CDN host 설정 방식은 변경하지 않는다.
- 다른 레거시 CDN URL 조합 코드는 이번 범위에서 정리하지 않는다.
## 5. Core Features
### Feature A: 공통 CDN URL 변환
#### Requirements
- `kr.co.vividnext.sodalive.v2` 하위 공통 패키지에 재사용 가능한 함수를 둔다.
- 기존 서비스 매핑 흐름은 유지하고 private 중복 함수만 제거한다.
#### Edge Cases
- `null`, `""`, `" "` 입력은 `null`이어야 한다.
- `https://...`, `http://...` 입력은 host를 덧붙이지 않아야 한다.
- `"profile/a.png"` 입력은 `"https://cdn.test/profile/a.png"`가 되어야 한다.
## 6. Technical Constraints
- Kotlin 확장 함수로 구현한다.
- 테스트는 JUnit 5로 작성한다.