fix(content): 무료 콘텐츠 포인트 사용 조건을 보정한다
This commit is contained in:
@@ -72,7 +72,7 @@
|
||||
- `mostCommentedAudios`: 최대 5개
|
||||
- `recommendedAudios`: 최대 20개
|
||||
- 특정 섹션 데이터가 부족하면 가능한 개수만 내려주고 전체 API는 성공 처리한다.
|
||||
- 무료/포인트/추천 오디오 섹션 사이에는 같은 오디오가 중복 노출될 수 있다.
|
||||
- 무료 오디오와 포인트 오디오는 가격 조건상 중복 노출하지 않는다. 무료/추천 또는 포인트/추천 섹션 사이의 중복은 허용한다.
|
||||
|
||||
#### Edge Cases
|
||||
- 한 섹션 조회 실패가 전체 API 실패로 이어질지는 구현 계획 단계에서 기존 v2 통합 조회 API의 로깅/실패 정책과 비교해 결정한다.
|
||||
@@ -134,7 +134,7 @@
|
||||
|
||||
#### Requirements
|
||||
- 포인트 사용 가능 오디오 중 랜덤으로 최대 15개 조회한다.
|
||||
- 포인트 오디오는 `isPointAvailable = true`인 공개 오디오로 정의한다.
|
||||
- 포인트 오디오는 `isPointAvailable = true`이면서 `price > 0`인 공개 오디오로 정의한다.
|
||||
- Response는 공통 오디오 카드 응답을 사용한다.
|
||||
|
||||
### Feature H. 최근 댓글이 많은 오디오
|
||||
@@ -285,7 +285,8 @@ data class CommentedAudioResponse(
|
||||
- 최신성 점수의 일수는 날짜 경계가 아니라 시간까지 포함한 24시간 경과 일수 기준으로 계산한다.
|
||||
- New & Hot lazy 보강은 스냅샷 row가 없을 때 Redis marker 기준 KST 날짜별 1회만 시도하고, 보강 후 후보가 0개인 정상 상황에서는 같은 날짜의 다음 조회가 전체 refresh를 반복하지 않는다.
|
||||
- 공통 오디오 카드 응답의 `isOriginalSeries`는 시리즈 미소속 오디오이면 클라이언트 편의를 위해 `false`로 내려준다.
|
||||
- 무료/포인트/추천 오디오처럼 서로 다른 추천 섹션에 같은 콘텐츠가 동시에 포함되어도 서버에서 중복 제거하지 않는다.
|
||||
- 무료 오디오와 포인트 오디오는 각각 `price == 0`, `isPointAvailable == true && price > 0` 조건으로 분리한다.
|
||||
- 무료/추천 또는 포인트/추천처럼 그 밖의 추천 섹션 간 중복은 서버에서 제거하지 않는다.
|
||||
- `mostCommentedAudios` 스냅샷 저장은 같은 크리에이터의 오디오를 최대 1개만 포함한다. 같은 크리에이터 후보가 여러 개이면 `findMostCommentedSnapshots`의 최근 댓글 많은 오디오 점수가 가장 높은 후보를 남기고, `AudioRecommendationSnapshotRefreshService.replaceMostCommentedSnapshots`는 그 결과만 저장한다.
|
||||
|
||||
---
|
||||
@@ -302,3 +303,14 @@ data class CommentedAudioResponse(
|
||||
|
||||
## 12. Open Questions
|
||||
- 없음
|
||||
|
||||
---
|
||||
|
||||
## 13. 후속 요구사항 정정
|
||||
|
||||
| 날짜 | 상태 | 정정 내용 | 기준 문서 |
|
||||
|---|---|---|---|
|
||||
| 2026-07-31 | 확정 | 무료 콘텐츠와 포인트 결제 가능 콘텐츠를 분리하고 `pointAudios`에서 `price == 0`을 제외한다 | `docs/20260731_무료_콘텐츠_포인트_결제_불가/prd.md` |
|
||||
|
||||
- 공통 `AudioCardResponse.isPointAvailable`은 저장값을 그대로 노출하지 않고 `storedIsPointAvailable && price > 0`으로 응답한다.
|
||||
- 이 정정은 기존 완료 기록을 삭제하지 않으며 후속 구현과 검증은 새 통합 `plan-task.md`에서 추적한다.
|
||||
|
||||
Reference in New Issue
Block a user