docs(cdn): CDN URL 공통화 계획을 기록한다
This commit is contained in:
36
docs/20260619_cdn_url_공통화/prd.md
Normal file
36
docs/20260619_cdn_url_공통화/prd.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# 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로 작성한다.
|
||||
Reference in New Issue
Block a user