# 내 채널 팔로워 목록 연결 PRD ## 문서 정보 | 항목 | 내용 | |---|---| | 문서 상태 | 구현 완료 | | 작성일 | `2026-08-03` | | 최종 수정일 | `2026-08-03` | | 대상 제품 | v2 크리에이터 채널 내 채널 팔로워 목록 연결 | | 작성자·결정권자 | 사용자, Sisyphus | | 관련 API Contract | 기존 레거시 `UserFollowerListActivity` / `ExplorerApi.getFollowerList` 재사용 | | 관련 구현 계획 | `docs/20260803_내_채널_팔로워_목록_연결/plan-task.md` | | 관련 review | `docs/20260803_내_채널_팔로워_목록_연결/reviews/phase1-follower-list-link-review.md` | ## 1. Overview 내 채널 소유자는 v2 크리에이터 채널 상단의 `팔로워 n명` 영역을 눌러 자신을 팔로우하는 사용자 목록을 확인할 수 있어야 한다. 신규 v2 화면을 만들지 않고 기존 레거시 `UserFollowerListActivity`를 그대로 연결한다. ## 2. Problem Statement 현재 v2 크리에이터 채널은 `팔로워 n명`을 표시하지만 클릭 동작이 없다. 사용자는 내 채널을 팔로우하는 사용자 목록으로 이동하려면 레거시 프로필 경로를 우회해야 한다. 문제를 해결했다는 판단은 내 채널에서 `팔로워 n명`을 터치했을 때 `Constants.EXTRA_USER_ID`에 현재 `creatorId`가 담긴 `UserFollowerListActivity`가 실행되는 것으로 한다. ## 3. Goals ### 3.1 제품 목표 - 내 채널 소유자는 채널 상단 `팔로워 n명`에서 팔로워 목록 화면으로 이동할 수 있다. - 기존 레거시 팔로워 목록 화면과 API 계약을 재사용한다. - 타인 채널에서는 이번 연결을 노출하지 않는다. ### 3.2 UX 목표 - 기존 문구, 배치, 수치 표시를 변경하지 않는다. - 팔로워 수가 0명이어도 같은 목록 화면으로 진입한다. - 별도 안내, 다이얼로그, 신규 화면을 추가하지 않는다. ## 4. Non-Goals - `FollowingCreatorActivity` 연결은 구현하지 않는다. 이 화면은 현재 사용자가 팔로잉한 크리에이터 목록이다. - 신규 v2 팔로워 목록 화면을 만들지 않는다. - 레거시 `UserFollowerListActivity`, 레거시 API, 레거시 레이아웃은 수정하지 않는다. - `팔로워 n명` 문구를 `팔로잉 n명`으로 변경하지 않는다. - 타인 채널의 팔로워 수 클릭 동작은 추가하지 않는다. ## 5. Target Users and Permissions | 사용자 | 목표 | 주요 작업 | 사용 환경 | |---|---|---|---| | 내 채널 소유자 | 내 채널을 팔로우하는 사용자 확인 | `팔로워 n명` 터치 후 목록 조회 | Android 앱 | 권한 기준은 기존 `CreatorChannelActivity` 진입의 로그인 가드와 `UserFollowerListActivity`의 기존 API 인증을 따른다. ## 6. 핵심 사용자 흐름 1. 사용자가 본인 크리에이터 채널에 진입한다. 2. 채널 상단 헤더의 `팔로워 n명`을 터치한다. 3. 앱은 기존 `UserFollowerListActivity`를 실행하며 `Constants.EXTRA_USER_ID`에 현재 `creatorId`를 전달한다. 4. 레거시 화면이 기존 방식대로 팔로워 목록을 조회하고 표시한다. ## 7. 정보 구조와 라우팅 ```text CreatorChannelActivity tvFollowerCount click -> UserFollowerListActivity extra: Constants.EXTRA_USER_ID = creatorId ``` ## 8. 기능 요구사항 | ID | 상태 | 요구사항 | 수용 기준 | 계약/Goal 연결 | |---|---|---|---|---| | `FOLLOWER-LINK-001` | 확정 | 내 채널 소유자가 `팔로워 n명`을 누르면 레거시 팔로워 목록으로 이동한다. | `UserFollowerListActivity` Intent가 생성되고 `Constants.EXTRA_USER_ID`에 현재 `creatorId`가 전달된다. | `P1-T1` | | `FOLLOWER-LINK-002` | 확정 | 타인 채널에서는 이번 클릭 연결이 동작하지 않는다. | `currentHeader.isOwner != true`이면 목록 Activity를 시작하지 않는다. | `P1-T1` | | `FOLLOWER-LINK-003` | 확정 | 팔로워 수 0명도 동일하게 목록 화면으로 진입한다. | 클릭 조건에 `followerCount > 0` 제한이 없다. | `P1-T1` | ## 9. UI/UX Expectations - 기존 `tv_follower_count` 표시를 그대로 사용한다. - 레이아웃, 색상, 문구, 접근성 리소스는 변경하지 않는다. - 클릭 가능성 외 시각적 embellishment는 추가하지 않는다. ## 10. API 계약 신규 API 계약은 없다. `UserFollowerListActivity`가 기존 `ExplorerApi.getFollowerList(userId, page, size, Authorization)` 흐름을 재사용한다. ## 11. 보안과 데이터 취급 - 전달 값은 기존 내부 식별자 `creatorId`뿐이다. - 토큰, API URL, 민감정보를 로그나 Toast에 추가로 노출하지 않는다. ## 12. 성공 기준 - [x] `CreatorChannelActivitySourceTest`가 클릭 연결, owner 제한, extra 전달 계약을 검증한다. - [x] focused unit test가 RED 후 GREEN으로 통과한다. - [x] `:app:assembleDebug`가 성공한다. - [x] 실제 Android 표면 검증 또는 실행 환경 부재 사유가 계획 문서에 기록된다. ## 13. Open Questions | ID | 상태 | 결정 필요 사항 | 현재 권고 | 결정 주체 | 결정 기한/시점 | 영향 Goal | |---|---|---|---|---|---|---| | 없음 | 확정 | 추가 결정 없음 | 권장 설계 승인됨 | 사용자 | 완료 | `P1-T1` | ## 14. 요구사항 추적표 | 요구사항 범위 | API Contract | 계획 Phase | Goal | 자동 검증 | 수동 검증 | |---|---|---:|---|---|---| | `FOLLOWER-LINK-001~003` | 기존 레거시 API 재사용 | 1 | `P1-T1`, `P1-GATE` | `CreatorChannelActivitySourceTest` | 내 채널 `팔로워 n명` 터치 | ## 15. Decision Log | 날짜 | ID | 상태 | 결정 | 근거 | 영향 요구사항·계약·Goal | |---|---|---|---|---|---| | `2026-08-03` | `DEC-001` | 확정 | `FollowingCreatorActivity`가 아닌 `UserFollowerListActivity`로 연결한다. | 전자는 내가 팔로잉한 크리에이터 목록이고, 후자는 채널 팔로워 목록이다. | `FOLLOWER-LINK-001`, `P1-T1` | | `2026-08-03` | `DEC-002` | 확정 | v2 신규 화면을 만들지 않고 레거시 화면을 재사용한다. | 사용자 명시 요청. | `FOLLOWER-LINK-001`, `P1-T1` |