Files
sodalive-backend-spring-boot/docs/20260805_추천탭_배너_조회조건/prd.md

4.0 KiB

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. 성공 기준

  • 홈 추천 배너가 tab_id IS NULL 조건을 유지한다.
  • 콘텐츠 추천 배너가 tab_id = 2 조건만 사용한다.
  • 성인 콘텐츠 조회 불가/가능 사용자의 배너 결과가 확정 정책과 일치한다.
  • 기존 배너 응답 스키마와 활성/차단/정렬/limit 정책이 유지된다.

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