7.7 KiB
7.7 KiB
선물 UI 추가 PRD
문서 정보
| 항목 | 내용 |
|---|---|
| 문서 상태 | 구현 완료 |
| 작성일 | 2026-10-06 |
| 최종 수정일 | 2026-10-06 |
| 대상 제품 | 크리에이터 상세 선물 버튼, 마이 탭 선물함 버튼 |
| 작성자·결정권자 | 사용자 요청 기준 |
| 관련 API Contract | 해당 없음 |
| 관련 구현 계획 | docs/20261006_선물_UI_추가/plan-task.md |
| 관련 review | 없음 |
1. Overview
한국에서 접속하고 앱 언어가 한국어인 사용자가 크리에이터 상세와 마이 탭에서 선물 관련 진입점을 볼 수 있게 한다. 이번 범위는 UI 진입점 추가까지만 포함하며 실제 선물 보내기/선물함 화면 이동은 후속 작업에서 연결한다.
2. Problem Statement
- 선물 기능 연결 전에도 사용자가 진입점을 인지할 수 있는 UI가 필요하다.
- 크리에이터 상세의 선물 진입점은 현재
DM 보내기와 같은 레벨의 액션으로 보여야 한다. - 마이 탭의 선물함은 기존 보관함, 차단목록 등 카테고리 버튼과 같은 UI 레벨에 있어야 한다.
문제를 해결했다는 판단은 조건에 맞는 사용자에게 두 진입점이 기존 UI 규칙대로 노출되고, 탭해도 아직 별도 기능으로 이동하지 않는 것으로 한다.
3. Goals
3.1 제품 목표
- 크리에이터 상세에서
DM 보내기노출 조건과 동일한 크리에이터에 대해 한국 접속, 한국어 설정, 타인 채널 조건일 때선물 보내기버튼을 표시한다. - 마이 탭 카테고리 그리드의 첫 항목으로
선물함버튼을 표시한다. - 후속 기능 연결을 위해 탭 액션 위치만 남기고 실제 화면 이동/API 호출은 하지 않는다.
3.2 UX 목표
선물 보내기버튼은DM 보내기와 같은 형태, 간격, 텍스트 스타일을 사용한다.선물함버튼은 기존 카테고리 버튼과 같은 4열 그리드, 아이콘 박스, 텍스트 스타일을 사용한다.
4. Non-Goals
- 선물 보내기 화면, 선물함 화면, 라우팅, API, 데이터 모델 구현은 제외한다.
- 신규 디자인 시스템, 공용 컴포넌트 추출, 기존 버튼 리팩터링은 제외한다.
- 새 의존성 추가와 프로젝트 설정 변경은 제외한다.
5. Target Users and Permissions
| 사용자 | 목표 | 주요 작업 | 사용 환경 |
|---|---|---|---|
| 한국 접속 및 한국어 설정 사용자 | 크리에이터에게 선물하거나 선물함을 확인할 진입점을 인지 | 버튼 확인 및 탭 | iOS 앱 |
권한과 인증 흐름은 이번 범위에서 변경하지 않는다. 선물 보내기 버튼 노출은 기존 DM 보내기 노출 조건인 creator.isDmAvailable을 재사용한다.
6. 핵심 사용자 흐름
- 사용자가 크리에이터 상세에 진입한다.
- 앱이 내 채널 여부,
creator.isDmAvailable, 접속 국가, 앱 언어를 기준으로선물 보내기버튼 노출 여부를 결정한다. - 조건이 맞으면
DM 보내기오른쪽에 같은 형태의선물 보내기버튼이 보인다. - 로그인 사용자가 마이 탭에 진입하면 카테고리 그리드 첫 항목에
선물함버튼이 보인다. - 두 버튼의 탭 액션은 후속 구현 전까지 아무 동작도 하지 않는다.
7. 정보 구조와 라우팅
크리에이터 상세 헤더 액션 영역
DM 보내기
선물 보내기
마이 탭 카테고리 그리드
선물함
보관함
차단목록
...기존 항목
신규 route는 만들지 않는다.
8. 기능 요구사항
| ID | 상태 | 요구사항 | 수용 기준 | 계약/Goal 연결 |
|---|---|---|---|---|
GIFT-001 |
확정 | 크리에이터 상세에 선물 보내기 버튼을 추가한다. |
내 채널이 아니고 creator.isDmAvailable == true, 한국 접속, LanguageHeaderProvider.current == "ko"일 때만 DM 보내기 오른쪽에 표시된다. |
P1-T2 |
GIFT-002 |
확정 | 한국 접속 판정은 기존 패턴을 사용한다. | UserDefaults.countryCode를 trim/uppercase 후 빈 값 또는 KR이면 한국 접속으로 본다. |
P1-T2 |
GIFT-003 |
확정 | 한국어 설정 판정은 기존 언어 헤더를 사용한다. | LanguageHeaderProvider.current == "ko"일 때 한국어 설정으로 본다. |
P1-T2 |
GIFT-004 |
확정 | 마이 탭 카테고리 그리드 첫 항목에 선물함을 추가한다. |
4열 설정은 유지되고, ic_my_present 아이콘과 선물함 텍스트가 보관함 앞에 표시된다. |
P1-T3 |
GIFT-005 |
확정 | 두 버튼의 탭 액션은 후속 구현 전까지 inert placeholder로 둔다. | 탭해도 화면 이동, API 호출, 상태 변경이 없다. | P1-T2, P1-T3 |
GIFT-006 |
확정 | 크리에이터 상세의 선물 보내기 버튼은 아이콘 없이 텍스트만 표시한다. |
캡슐 스타일은 유지하되 ic_my_present 등 아이콘을 포함하지 않는다. |
P1-T2 |
9. 반응형 기능 범위
| 기능 | iPhone | iPad | 비고 |
|---|---|---|---|
| 크리에이터 상세 버튼 | 전체 | 전체 | 기존 헤더 액션 레이아웃 유지 |
| 마이 탭 선물함 | 전체 | 전체 | 기존 4열 그리드 유지 |
10. UI/UX Expectations
- 크리에이터 상세 버튼은
CreatorChannelTalkActionSection의 기존 캡슐 버튼 스타일을 그대로 따른다. - 마이 탭 버튼은
CategoryButtonItem을 그대로 사용한다. - 새 아이콘은 기존 asset
ic_my_present를 사용한다. - 새 텍스트는
I18n에 추가해 기존 다국어 선택 방식을 따른다.
11. API 계약
해당 없음. 신규 API 요청, 응답, 에러 계약은 이번 범위에 없다.
12. 보안과 데이터 취급
- 인증 토큰, 사용자 정보, 선물 데이터 저장 로직을 변경하지 않는다.
- 버튼 탭으로 네트워크 요청을 발생시키지 않는다.
13. 성능과 품질 요구사항
- 신규 의존성을 추가하지 않는다.
- 기존 SwiftUI view 구조에서 조건부 렌더링만 추가한다.
xcodebuildDebug build를 기본 검증으로 사용한다.
14. 성공 기준
14.1 기능 수용 기준
DM 보내기가 보이는 타인 크리에이터 채널에서 한국 접속 및 한국어 설정이면선물 보내기도 보인다.- 내 채널에서는
선물 보내기가 보이지 않는다. creator.isDmAvailable == false이면선물 보내기가 보이지 않는다.- 한국 접속이 아니거나 한국어 설정이 아니면
선물 보내기가 보이지 않는다. - 마이 탭 카테고리 그리드 첫 항목에
선물함이 보인다. - 두 새 버튼을 탭해도 화면 이동/API 호출이 없다.
14.2 UI/UX 수용 기준
선물 보내기는 아이콘 없이DM 보내기와 같은 캡슐 형태로 표시된다.선물함은 기존 카테고리 버튼과 같은 형태로 표시된다.- 한 줄에 보이는 카테고리 개수는 기존 4열 설정 그대로다.
14.3 추적성 완료 기준
- 모든 확정 요구사항이
plan-task.md의 Task와 연결된다. - 검증 결과가
plan-task.md에 누적된다.
15. Open Questions
없음.
Decision Log
| 일시 | 결정 | 근거 |
|---|---|---|
| 2026-10-06 | 선물 보내기는 DM 보내기 노출 조건인 isDmAvailable을 재사용한다. |
사용자 답변: “해당 조건과 동일하게 설정하면 된다.” |
| 2026-10-06 | 한국 접속은 기존 countryCode 판정, 한국어 설정은 LanguageHeaderProvider.current == "ko"를 사용한다. |
기존 코드 검색 결과 isKoreanCountry 패턴과 언어 헤더 구조 확인 |
| 2026-10-06 | 크리에이터 상세 선물 보내기는 아이콘 없이 타인 채널에서만 표시한다. |
사용자 추가 요청 |