PRD: 추천 탭 배너 조회 조건 보정
문서 정보
| 항목 |
내용 |
| 문서 상태 |
구현 완료 |
| 작성일 |
2026-08-05 |
| 최종 수정일 |
2026-08-05 |
| 대상 제품 |
메인 홈 추천 탭, 메인 콘텐츠 추천 탭 |
| 작성자·결정권자 |
사용자 |
| 관련 구현 계획 |
docs/20260805_추천탭_배너_조회조건/plan-task.md |
| 관련 기존 문서 |
docs/20260529_메인_홈_추천_API/prd.md, docs/20260623_메인_콘텐츠_추천_탭_API/prd.md |
1. Overview
메인 홈 추천 API와 메인 콘텐츠 추천 API의 배너 조회에 회원의 성인 콘텐츠 조회 가능 여부를 반영하고, 두 화면이 서로 다른 탭의 배너를 조회하도록 조건을 보정한다.
2. Problem Statement
- 두 추천 API가 모두
content_banner.tab_id IS NULL인 같은 배너를 조회한다.
- 두 추천 API의 배너 조회가
content_banner.is_adult를 필터링하지 않아 성인 콘텐츠 조회 불가 사용자에게 성인 배너가 노출될 수 있다.
문제를 해결했다는 판단은 두 API의 탭 조건과 성인 배너 노출 조건이 Repository 테스트로 구분되어 검증되는 것으로 한다.
3. Goals
- 성인 콘텐츠 조회 불가 사용자는
is_adult = false인 배너만 조회한다.
- 성인 콘텐츠 조회 가능 사용자는 성인·비성인 배너를 모두 조회한다.
- 메인 홈 추천 API는 기존처럼
tab_id IS NULL인 배너를 조회한다.
- 메인 콘텐츠 추천 API는
tab_id = 2인 배너를 조회한다.
4. Non-Goals
- 공개 API endpoint와 응답 DTO를 변경하지 않는다.
- 배너 언어 필터, 정렬, 최대 조회 개수, 대상 활성/차단 정책을 변경하지 않는다.
- 배너 또는 탭 데이터와 DB 스키마를 변경하지 않는다.
5. 기능 요구사항
| ID |
상태 |
요구사항 |
수용 기준 |
Goal 연결 |
BANNER-001 |
확정 |
GET /api/v2/home/recommendations의 배너는 tab_id IS NULL 조건을 유지한다. |
탭이 없는 활성 배너만 조회하고 tab_id = 2 배너는 조회하지 않는다. |
P1-T1 |
BANNER-002 |
확정 |
GET /api/v2/audio/recommendations의 배너는 tab_id = 2 조건을 사용한다. |
tab_id = 2인 활성 배너만 조회하고 탭이 없는 배너는 조회하지 않는다. |
P1-T1 |
BANNER-003 |
확정 |
두 API 모두 회원의 성인 콘텐츠 조회 가능 여부를 배너 조회에 반영한다. |
조회 불가이면 비성인 배너만, 조회 가능이면 성인·비성인 배너를 모두 반환한다. |
P1-T1 |
BANNER-004 |
확정 |
기존 배너 활성/차단/대상 유효성/정렬/limit 정책을 유지한다. |
기존 관련 Repository 테스트가 계속 통과한다. |
P1-GATE |
6. API 계약
| Method |
Path |
변경 내용 |
GET |
/api/v2/home/recommendations |
응답 스키마 변경 없이 배너의 성인 조회 조건만 추가한다. |
GET |
/api/v2/audio/recommendations |
응답 스키마 변경 없이 배너 탭 조건을 tab_id = 2로 변경하고 성인 조회 조건을 추가한다. |
7. 성공 기준
8. Open Questions
9. Decision Log
| 날짜 |
ID |
상태 |
결정 |
근거 |
영향 요구사항·Goal |
| 2026-08-05 |
DEC-001 |
확정 |
성인 조회 불가이면 비성인 배너만, 조회 가능이면 성인·비성인 배너를 모두 조회한다. |
사용자 답변 A |
BANNER-003, P1-T1 |
| 2026-08-05 |
DEC-002 |
확정 |
홈 추천은 tab_id IS NULL, 콘텐츠 추천은 tab_id = 2를 사용한다. |
사용자 직접 요구사항 |
BANNER-001, BANNER-002, P1-T1 |