docs(ranking): 홈 API 패키지 계획을 갱신한다
This commit is contained in:
@@ -224,13 +224,14 @@
|
||||
|
||||
#### Requirements
|
||||
- 랭킹 계산과 조회는 Controller나 Facade 내부에 직접 구현하지 않고 별도 application/domain 컴포넌트로 분리한다.
|
||||
- 크리에이터 랭킹은 추천 기능과 독립된 성격이므로 `v2.recommend`가 아니라 별도 `kr.co.vividnext.sodalive.v2.ranking` 하위 패키지에 작성한다.
|
||||
- 크리에이터 랭킹 기능 본체는 추천 기능과 독립된 성격이므로 `v2.recommend`가 아니라 별도 `kr.co.vividnext.sodalive.v2.ranking` 하위 패키지에 작성한다.
|
||||
- 예시 컴포넌트는 다음 책임을 갖는다.
|
||||
- 기간 계산 정책: KST 기준 지난 주 기간을 산출한다.
|
||||
- 점수 정책: 원천 지표의 raw value에 가중치를 적용해 카테고리/최종 점수를 계산한다.
|
||||
- 집계 포트: `UseCan`, 콘텐츠 반응, `CreatorCheers`, `CreatorFollowing` 원천 데이터를 조회한다.
|
||||
- 스냅샷 생성 서비스: 원천 지표를 집계하고 랭킹 스냅샷을 저장한다.
|
||||
- 조회 서비스: 저장된 스냅샷을 상위 20명 응답으로 조립한다.
|
||||
- 조회 서비스: 저장된 스냅샷을 상위 20명 ranking 조회 결과로 조립한다.
|
||||
- 홈 API 조합 Facade: ranking 조회 결과를 클라이언트 공개 응답 DTO로 변환한다.
|
||||
- 추후 캐싱을 추가할 수 있도록 조회 서비스는 스냅샷 조회 포트와 캐시 포트를 분리할 수 있는 경계를 둔다.
|
||||
|
||||
#### Edge Cases
|
||||
@@ -241,8 +242,9 @@
|
||||
|
||||
## 8. Technical Constraints
|
||||
- Kotlin, Spring Boot 2.7.14, Java 17, Gradle Wrapper 구조를 유지한다.
|
||||
- 신규 공개 API 구현 코드는 기존 v2 패키지 관례를 따라 `kr.co.vividnext.sodalive.v2.ranking` 하위에 작성한다.
|
||||
- 랭킹 계산, 스냅샷 생성, 스냅샷 조회, 차단 마스킹 등 기능 본체는 `kr.co.vividnext.sodalive.v2.ranking` 하위에 작성한다.
|
||||
- 클라이언트 endpoint는 홈 내부 랭킹 탭에서 호출하므로 `/api/v2/home/rankings/creators`를 사용한다.
|
||||
- 클라이언트 공개 API 표면인 Controller와 API 조합 Facade는 기존 홈 API 관례를 따라 `kr.co.vividnext.sodalive.v2.api.home` 하위에 작성하고, 크리에이터 랭킹 응답 DTO는 `kr.co.vividnext.sodalive.v2.api.home.dto.ranking` 하위에 작성한다.
|
||||
- 기존 엔티티 후보는 `UseCan`, `CanUsage`, `AudioContent`, `AudioContentLike`, `AudioContentComment`, `CreatorCheers`, `CreatorFollowing`, `Member` 등이다.
|
||||
- 기존 공개 API 스키마는 변경하지 않는다.
|
||||
- 계산 기간은 서버 기본 timezone이 아니라 명시적인 KST 기준으로 산출하고, DB 조회 시에는 UTC 기간으로 변환한다.
|
||||
|
||||
Reference in New Issue
Block a user