Appearance
에피소드 상세 캐릭터 정보 섹션 PRD
Backlog grooming 단계의 산출물. 무엇을 만들지·왜 만들지·핵심 비즈니스 룰을 정의한다. 화면별 디테일(컴포넌트·상태·인터랙션)은 spec.md로.
Status: draft
Created: 2026-05-13
Last updated: 2026-05-13
Linear Project: [앱/웹] 에피소드 상세 페이지 내 캐릭터 정보 섹션 추가 (8a6ed2ee8db2)
Author: agent
앱/웹/스튜디오: 앱 / 웹
1. 목표 및 배경
1.1 문제
- 사용자 정의 (segment): 에피소드 상세에서 플레이 여부를 판단하는 플레이어. DM/친밀도 기능이 ship된 뒤에는 특정 캐릭터와 더 깊게 상호작용하려는 로그인 사용자.
- 상황 (when, where): 사용자가 홈/검색/딥링크 등에서 에피소드 상세에 진입해 에피소드의 분위기·출연 캐릭터·플레이 매력을 판단하는 순간.
- 불편 / 미충족 needs:
- 현재 상세 구조는 캐릭터 정보를 충분히 담을 자리가 부족해, 플레이어가 “누구와 어떤 관계/맥락의 이야기를 하게 되는지” 판단하기 어렵다.
- 디렉터는 캐릭터 정보를 전달하려고 미리보기 이미지에 텍스트를 넣는 식으로 우회하고 있다.
- DM 메신저/친밀도 기능이 도입되어도, 에피소드 플레이 전 캐릭터와 접점을 만들 수 있는 안정적인 surface가 없다.
1.2 근거
- Linear seed: 캐릭터 정보는 에피소드 플레이 결정에 중요한 입력이지만 현재 에피소드 상세에 표현 공간이 부족하다는 문제 제기.
- Linear seed: DM 메신저 도입을 위해 에피소드 플레이 없이도 캐릭터와 접점을 만들 surface가 필요하다는 결정.
- UL 확인:
Episode,Character는 Frontia의 기존 도메인 용어다. 본 PRD는 신규 도메인 엔티티를 만들기보다 기존 에피소드 상세에서 캐릭터 정보를 노출하는 IA/진입 surface를 정의한다. - 정량 근거는 아직 미확보. 에피소드 상세 진입률, 상세→플레이 전환율, 미리보기 이미지 내 캐릭터 텍스트 사용 패턴 확인이 필요하다.
1.3 아이디어 (해결 방향)
- 옵션 1 — 캐릭터 정보만 노출: 에피소드 상세에 출연 캐릭터 카드/섹션을 추가한다. 플레이 판단 컨텍스트는 보강되지만 DM/친밀도 진입 surface 목적은 약하다.
- 옵션 2 — 캐릭터 정보 + 친밀도 + DM 진입을 함께 설계: 캐릭터 설명, 친밀도 상태, “이 캐릭터와 대화하기” CTA를 한 섹션에서 제공한다. 정보 탐색과 후속 상호작용의 연결이 명확하다.
- 추천 옵션과 이유: 옵션 2. 이 작업의 목적은 “캐릭터 정보 섹션” 자체가 아니라 에피소드 플레이 결정 컨텍스트 보강 + 캐릭터 중심 후속 기능의 진입 surface 확보다.
1.4 가설
- 에피소드 상세에서 캐릭터 정보가 명확히 보이면 사용자는 플레이 전 이야기/관계 맥락을 더 잘 이해하고, 상세→플레이 전환율이 상승한다.
- 디렉터가 미리보기 이미지에 캐릭터 설명을 넣는 우회가 줄어들어, 에피소드 카드/상세의 정보 구조가 더 일관된다.
- DM/친밀도 기능이 ship된 뒤 에피소드 상세는 캐릭터와의 대화/관계 심화로 이어지는 핵심 진입 surface가 된다.
1.5 성공 지표
| 지표 | 현재 | 목표 | 측정 방법 |
|---|---|---|---|
| 에피소드 상세 → 플레이 전환율 | 기준선 필요 | 회귀 없이 개선 | 상세 노출 세션 중 플레이 시작 비율 |
| 캐릭터 섹션 노출 대비 카드/CTA 상호작용률 | 신규 | 기준선 수립 | view_character_section 대비 클릭 이벤트 |
| DM CTA 클릭률 | DM ship 전 N/A | DM ship 후 기준선 수립 | DM CTA 노출 대비 클릭 |
| 상세 이탈률 | 기준선 필요 | 악화 없음 | 상세 진입 후 플레이/상호작용 없이 이탈 |
- 메인 지표: 에피소드 상세 → 플레이 전환율.
- 보조 지표: 캐릭터 카드 클릭률, DM CTA 클릭률, 친밀도 영역 노출 대비 상호작용률.
- 가드레일 지표: 에피소드 상세 이탈률, 상세 페이지 로딩/스크롤 성능, 비로그인 사용자의 CTA 혼란.
2. 타깃 사용자
2.1 주요 사용자
- 에피소드 상세에서 플레이 여부를 판단하는 플레이어.
- 특정 캐릭터에 관심이 생겨 에피소드 플레이 전/후로 더 대화하고 싶은 로그인 사용자.
- 자신의 에피소드를 더 잘 설명하고 싶은 디렉터. 단, 본 PRD는 스튜디오 입력/관리 기능을 직접 정의하지 않는다.
2.2 핵심 시나리오
- 사용자가 에피소드 상세에 진입해 출연 캐릭터의 이름·이미지·간단 설명을 보고 플레이할지 판단한다.
- 로그인 사용자가 마음에 드는 캐릭터를 발견하고 “이 캐릭터와 대화하기”를 눌러 DM으로 진입한다.
- 사용자가 이미 친밀도 데이터가 있는 캐릭터를 상세에서 다시 보고, 현재 친밀도 단계/진척을 확인한 뒤 플레이 또는 DM으로 이어간다.
3. 핵심 기능 요구사항
3-1. 클라이언트 (앱/웹)
에피소드 상세 내 캐릭터 정보 섹션
- 주요 동작: 에피소드 상세 페이지에 해당 에피소드의 주요 캐릭터 정보를 섹션 단위로 노출한다.
- 비즈니스 룰:
- 섹션은 에피소드에 연결된 캐릭터가 1명 이상 있을 때 노출한다.
- 캐릭터가 0명이거나 공개 가능한 캐릭터 정보가 없으면 섹션을 숨긴다. 빈 섹션을 보여주지 않는다.
- 캐릭터 카드는 최소한 캐릭터 이미지/이름을 포함한다.
- 캐릭터 설명은 스튜디오에서 디렉터가 직접 입력한 경우에만 노출한다.
- 캐릭터 설명 입력란은 짧은 보조 설명 용도이며, 최대 50글자로 제한한다.
- 같은 캐릭터가 여러 에피소드에 등장하더라도 친밀도와 DM 진입은 캐릭터 단위로 일관되게 연결한다.
- 정렬/강조:
- 스튜디오에서 디렉터가 지정한 정렬 순서를 사용한다.
- 상태별 동작:
- 로그인 사용자: 캐릭터 정보, 친밀도 상태, DM CTA를 표시한다.
- 비로그인 사용자: 캐릭터 정보는 표시한다. DM CTA는 로그인 유도 또는 비활성 안내로 처리한다.
- 캐릭터 이미지 없음: 기본 placeholder를 사용한다.
- 캐릭터 설명 없음: 설명 영역을 축약하거나 숨긴다. “설명 없음” 같은 무의미한 문구는 노출하지 않는다.
친밀도 정보 노출
- 주요 동작: 캐릭터 카드 또는 섹션 내에서 현재 사용자와 캐릭터의 친밀도 상태를 보여준다.
- 비즈니스 룰:
- 친밀도 값/단계/곡선은 별도 친밀도 체계 작업의 정의를 따른다.
- 본 PRD에서는 표시 구조만 정의한다: 단계 라벨, 진척바, 경험치 숫자.
- 친밀도 데이터가 없거나 기능이 미ship이면 친밀도 영역만 숨긴다. 캐릭터 정보 섹션 전체를 막지 않는다.
- 친밀도는
(user, character)기준의 전역 관계로 취급한다. 특정 에피소드에 귀속된 점수처럼 보이지 않게 한다.
“이 캐릭터와 대화하기” CTA
- 주요 동작: 사용자가 캐릭터별 DM 대화로 진입할 수 있는 CTA를 제공한다.
- 비즈니스 룰:
- DM 기능이 ship된 환경에서 로그인 사용자는 에피소드 플레이 이력과 무관하게 CTA를 사용할 수 있다.
- 이유: 본 surface의 목적 중 하나가 “플레이하지 않고도 캐릭터와 접점 만들기”이기 때문이다.
- 비로그인 사용자는 로그인 후 DM으로 이어지는 동선으로 처리한다.
- DM 기능이 미ship이거나 해당 캐릭터가 DM 미지원이면 CTA 영역만 숨기거나 준비 중 상태로 처리한다. 최종 노출 정책은 spec/design에서 확정한다.
- CTA 클릭 후 이동 방식은 기존 DM/메신저 네비게이션 정책을 따른다.
3-2. 어드민
이번 범위에서 별도 어드민 화면은 정의하지 않는다.
- 캐릭터 필드 입력/관리 방식은 기존 스튜디오 캐릭터 관리 정책을 우선 재사용한다.
- 필요한 캐릭터 필드가 현재 스튜디오에 없다면 후속 스튜디오/콘텐츠 관리 작업으로 분리한다.
3-3. 딥링크 / URL 구조
- 에피소드 상세 진입은 기존
/episode/:episodeId경로를 재사용한다. - 캐릭터 DM 진입은 기존 또는 별도 DM deep link 정책을 확인해 spec 단계에서 확정한다.
- 신규 path가 필요하면 본 PRD가 아니라 DM/spec 단계에서 확정 후 딥링크 문서에 반영한다.
3-4. Scope
포함 (In scope)
- 에피소드 상세 내 캐릭터 정보 섹션 노출 정책.
- 캐릭터 카드에 표시할 최소 정보 범위의 PRD 수준 정의.
- 친밀도 표시 영역의 존재 조건과 정보 구조.
- 캐릭터별 DM CTA의 노출/진입 정책.
- 비로그인, 캐릭터 정보 없음, 친밀도/DM 미지원 상태의 처리 방향.
- 성공 지표와 신규/후보 tracking event 정의.
제외 (Out of scope)
- DM 메신저 기능 자체.
- 친밀도 점수 산식, 레벨 곡선, 보상 정책.
- 스튜디오 캐릭터 입력/관리 UI 개편.
- 캐릭터 상세 페이지 신설.
- 추천/랭킹 알고리즘 변경.
4. 에러 처리 및 예외 상황
| 상황 | 처리 방향 |
|---|---|
| 캐릭터가 없는 에피소드 | 캐릭터 섹션 미노출 |
| 캐릭터 정보 일부 누락 | 가능한 필드만 노출하고 빈 라벨/placeholder 문구 남발 금지 |
| 캐릭터 이미지 로드 실패 | 기본 placeholder 노출 |
| 비로그인 사용자가 DM CTA 클릭 | 로그인 유도 후 가능하면 원래 캐릭터 DM 목적지 유지 |
| DM 기능 미지원/미ship | CTA 숨김 또는 준비 중 처리. 섹션 정보 노출은 유지 |
| 친밀도 데이터 없음/미ship | 친밀도 영역 숨김. 캐릭터 정보 노출은 유지 |
| 삭제/비공개 캐릭터 | 해당 캐릭터 카드 제외. 모든 캐릭터가 제외되면 섹션 미노출 |
| 네트워크 오류 | 기존 에피소드 상세 오류 처리 정책을 따른다. 캐릭터 섹션만 실패하면 상세 전체를 막지 않는 방향 우선 |
5. 데이터 분석
5.1 핵심 지표
- 상세→플레이 전환율: 에피소드 상세 진입 세션 중 플레이 시작까지 이어진 비율.
- 캐릭터 섹션 상호작용률: 캐릭터 섹션 노출 대비 캐릭터 카드 클릭/DM CTA 클릭 비율.
- DM 진입률: DM CTA 노출 대비 실제 DM 대화 화면 진입 비율.
- 상세 이탈률: 상세 진입 후 플레이/CTA/다른 주요 행동 없이 이탈한 비율.
5.2 로깅 이벤트
기존 event-docs에서 재사용 가능 이벤트를 먼저 확인해야 한다. 아래는 신규 후보이며, spec 단계에서 기존 이벤트와 매핑한다.
| 타입 | 이름 | 용도 | 파라미터 | 그룹 | 상태 |
|---|---|---|---|---|---|
| Event | view_character_section | 에피소드 상세에서 캐릭터 섹션이 노출됨 | episode_id, character_count, has_affinity, has_dm_cta, surface | episode-detail | 🆕 후보 |
| Event | click_character_card | 캐릭터 카드 클릭 | episode_id, character_id, card_index, surface | episode-detail | 🆕 후보 |
| Event | click_open_character_dm | 캐릭터 DM CTA 클릭 | episode_id, character_id, affinity_level, surface | episode-detail | 🆕 후보 |
6. Ubiquitous Language
| Term | Korean | Definition | Do Not Confuse With | Primary Domain | 상태 |
|---|---|---|---|---|---|
| Episode | 에피소드 | 디렉터가 제작하고 플레이어가 플레이할 수 있는 스토리 콘텐츠 단위 | 특정 유저의 플레이 인스턴스 | Episode Content | 기존 |
| Character | 캐릭터 | 에피소드 콘텐츠와 플레이에 사용되는 이야기 속 인물 | 유저 프로필 | Episode Content | 기존 |
친밀도,DM은 인접 작업에서 도메인 용어로 확정될 가능성이 높다. 본 PRD에서는 후속 작업의 정의를 참조하며 신규 UL 등재는 보류한다.
7. Open Questions
- [x] 캐릭터 설명 정책 — 누구에게: PM
스튜디오에서 디렉터가 입력한 경우에만 노출하며, 최대 50글자로 제한한다. - [ ] 섹션 위치 — 누구에게: Design/PM
에피소드 설명, 플레이 CTA, 댓글/리뷰, 제작자 정보 사이 우선순위 확정 필요. - [x] 캐릭터 정렬 정책 — 누구에게: PM
스튜디오에서 디렉터가 지정한 정렬 순서를 사용한다. - [ ] DM 미ship/부분 ship 상태의 CTA visibility — 누구에게: PM/Engineering
숨김, disabled, 준비 중 안내 중 선택 필요. 사용자 기대만 만들고 실제 대화가 불가한 상태는 피해야 한다. - [ ] 친밀도 단계명/진척 단위 — 누구에게: 친밀도 owner
본 PRD는 표시 구조만 가정. 단계 라벨과 경험치 숫자 단위는 친밀도 체계 PRD를 따른다. - [ ] 기준선 데이터 확보 — 누구에게: Data
에피소드 상세 진입률, 상세→플레이 전환율, 상세 이탈률, 미리보기 이미지 내 캐릭터 텍스트 사용 패턴. - [ ] 로깅 이벤트 재사용 매핑 — 누구에게: Data/Engineering
episode-detail기존 이벤트가 있으면 신규 이벤트 대신 재사용/확장한다.
부록: 메타 정보
Required artifacts
- [x] Spec (
needs-spec) — 화면별 컴포넌트·상태·인터랙션 명세 - [x] Design (
needs-design) — 에피소드 상세 내 섹션 위치/카드/CTA 시안 - [ ] QA scenarios (
needs-qa-scenarios) — Sprint planning에서 작성 - [ ] Migration plan (
needs-migration) — 이번 PRD만으로는 미정. 캐릭터 필드 추가가 필요하면 후속 판단 - [x] Tracking events (
needs-tracking) — 새 분석 이벤트 또는 기존 이벤트 확장 확인 필요 - [ ] 기타: DM/친밀도 인접 PRD와 정책 정합성 확인
진행 패턴 (Refinement 단계 진입 후)
- [x] Pattern 1: Spec → Design
- [ ] Pattern 2: Design → Spec
- [ ] Pattern 3: Spec only
Size & Risks
T-shirt Size
- Size: M
- Confidence: medium
- 추정 근거: 에피소드 상세 UI 변경은 단순해 보이지만 DM/친밀도/스튜디오 캐릭터 데이터와 맞물린 정책 의존성이 있다.
주요 위험 요소
| 위험 | 영향 | 대응 |
|---|---|---|
| 캐릭터 정보 필드가 부실하거나 미입력 | 섹션 품질 저하, 빈 UI 증가 | 최소 필드 기준과 fallback 정책 확정 |
| DM/친밀도 작업과 정책 불일치 | CTA/친밀도 표시가 실제 기능과 어긋남 | 인접 PRD owner와 표시 조건/용어/진입 정책 동기화 |
| 상세 페이지 정보 과밀 | 플레이 CTA 집중도 저하, 이탈 증가 | 섹션 위치와 접힘/요약 정책을 spec/design에서 검증 |
| 신규 이벤트 중복 | analytics 정합성 저하 | event-docs 기존 이벤트 재사용 우선 검토 |
의존성
- 다른 작업: DM 메신저, 친밀도 점수 체계.
- 다른 팀: Design, Data, Engineering.
- 외부 요인: 없음.
References
- Linear issue: DEE-66
- Linear project: [앱/웹] 에피소드 상세 페이지 내 캐릭터 정보 섹션 추가
- Frontia UL wiki:
wiki/foundation/ubiquitous-language.md
🔍 검토 필요
🚨 결정 필요
- 섹션 위치는 플레이 전환에 직접 영향을 주므로 spec/design 전 확정 필요.
- DM CTA를 “항상 활성”으로 둘지, DM 기능 rollout/캐릭터 지원 상태에 따라 숨길지 정책 확정 필요.
⚠️ 추정
- DM CTA는 로그인 사용자에게 에피소드 플레이 이력과 무관하게 활성으로 가정했다.
- 친밀도는
(user, character)전역 관계로 가정했다. - 캐릭터 정렬은 대표/중요도 우선, 없으면 등록 순서로 가정했다.
❓ 외부 agent 호출 필요
- 데이터 agent: 에피소드 상세 진입률, 상세→플레이 전환율, 상세 이탈률, 미리보기 이미지 내 캐릭터 텍스트 사용 패턴.
- 코드 agent: 현재 에피소드 상세에서 캐릭터 데이터/DM deep link/친밀도 데이터를 사용할 수 있는지 확인.
- 디자인: 섹션 위치, 카드 밀도, CTA 노출 방식, 친밀도 표시 UI.
prd-review 보기
Review log
2026-05-13
채택
Q: 이 PRD의 목적이 “캐릭터 정보 섹션 추가”라는 솔루션에 갇혀 있지 않은가?
- A: 목적을 에피소드 플레이 결정 컨텍스트 보강 + 캐릭터 중심 DM/친밀도 진입 surface 확보로 재정의.
- → PRD §1.1~§1.4, §1.5 메인 지표에 반영.
Q: DM CTA가 에피소드 플레이 후에만 열리면 “플레이 없이 접점 마련”이라는 Why와 충돌하지 않는가?
- A: 로그인 사용자는 에피소드 플레이 이력과 무관하게 DM CTA 사용 가능으로 가정. rollout/지원 상태는 별도 open question.
- → PRD §3-1 “이 캐릭터와 대화하기 CTA”, §7, 🔍 검토 필요에 반영.
Q: 친밀도 표시가 본 PRD의 소유 범위를 넘지 않는가?
- A: 점수 산식/곡선/단계명은 친밀도 owner 소관으로 분리하고, 본 PRD는 표시 구조와 노출 조건만 정의.
- → PRD §3-1 “친밀도 정보 노출”, §3-4 Out of scope, §7에 반영.
Q: 캐릭터 없음/정보 누락/DM 미지원 같은 예외 상태가 사용자 관점으로 충분히 정의됐는가?
- A: 섹션 숨김, 필드 축약, placeholder, 로그인 유도, DM/친밀도 영역 부분 숨김을 명시.
- → PRD §3-1 상태별 동작, §4에 반영.
Q: 로깅 이벤트가 기존 컨벤션과 중복될 위험이 있는가?
- A: 신규 이벤트는 후보로만 두고, event-docs 기존 이벤트 재사용 매핑을 Open Question으로 남김.
- → PRD §5.2, §7에 반영.
Skip
- Q: 백엔드/API/저장 구조를 PRD에 더 자세히 적어야 하는가?
- 사유: 이번 PRD는 제품 룰/UX surface 정의가 목적. 구현/API/storage 디테일은 spec/dev design에서 다루는 편이 맞음.
남은 결정 필요
- 캐릭터 카드 필드 셋: 이미지/이름/짧은 설명 외 관계·태그·대표 대사 포함 여부.
- 섹션 위치: 플레이 CTA 전/후, 에피소드 설명 하단, 댓글/제작자 정보와의 우선순위.
- DM 미ship/부분 ship 상태의 CTA visibility: 숨김/disabled/준비 중 안내.
- 기준선 데이터와 이벤트 재사용 매핑.
2026-05-13 피드백 반영
채택
Q: 캐릭터 설명을 장문/세계관 설명까지 허용하면 섹션이 과해지지 않는가?
- A: 캐릭터 설명은 스튜디오에서 디렉터가 입력한 경우에만 노출하고, 최대 50글자로 제한.
- → PRD §3-1 캐릭터 정보 섹션, §7에 반영.
Q: 캐릭터 정렬/강조 정책을 대표 캐릭터/중요도 기준으로 열어둘 필요가 있는가?
- A: 스튜디오에서 디렉터가 지정한 정렬 순서를 사용. 대표 캐릭터 강조/중요도 우선 문구 삭제.
- → PRD §3-1 정렬/강조, §7에 반영.
Q: 비로그인 DM 차단 이벤트가 필요한가?
- A:
block_character_dm_login_required후보 삭제. - → PRD §5.2 로깅 이벤트에서 삭제.
- A: