Files
sodalive-android/docs/20260713_크리에이터_채널_채팅_DM_로그인_가드/prd.md

4.5 KiB

PRD: 크리에이터 채널 채팅/DM 로그인 가드

1. Overview

크리에이터 채널 화면 진입과 상단의 대화하기 버튼 진입 전에 필요한 로그인/인증 가드를 적용한다.

2. Problem

  • 현재 크리에이터 채널 화면은 비로그인 상태에서도 진입을 시도할 수 있다.
  • 현재 대화하기 버튼은 인증 조건을 통과하지 않은 상태에서도 채팅방 생성 API를 호출할 수 있다.
  • 현재 DM 버튼은 화면이 로그인 상태를 보장하지 않으면 비로그인 상태에서도 DM 화면으로 진입할 수 있다.
  • 사용자는 보호된 기능 접근 시 API 오류 대신 로그인 화면 또는 인증 안내를 기대한다.

3. Goals

  • 크리에이터 채널 화면은 비로그인 상태에서 로그인 화면으로 이동하고 종료한다.
  • 대화하기 버튼은 국가별 인증/성인 콘텐츠 접근 조건을 통과한 뒤 채팅방 생성 API를 호출한다.
  • DM 버튼은 화면 레벨 로그인 보장을 전제로 기존 이동 경로를 유지한다.
  • 기존 owner/non-owner 분기와 채팅방 생성 성공 후 이동 로직은 변경하지 않는다.

4. Non-Goals

  • 채팅방 생성 API, Repository, ViewModel 구조는 변경하지 않는다.
  • 로그인 필수 정책은 이 화면에만 적용하고 다른 크리에이터 채널 관련 화면으로 확장하지 않는다.
  • UI 레이아웃, 문구, 디자인은 변경하지 않는다.
  • 레거시 코드나 다른 화면의 로그인 가드는 수정하지 않는다.

5. Target Users

  • 크리에이터 채널에서 AI 캐릭터 채팅을 시작하려는 사용자
  • 크리에이터 채널에서 DM을 보내거나 확인하려는 사용자

6. User Stories

  • 비로그인 사용자는 크리에이터 채널 화면 진입 시 로그인 화면으로 이동한다.
  • 한국 로그인 사용자 중 본인인증 미완료 사용자는 대화하기를 누르면 본인인증 안내를 본다.
  • 비한국 로그인 사용자 중 성인 콘텐츠 표시 설정이 꺼진 사용자는 대화하기를 누르면 콘텐츠 설정 화면으로 이동한다.
  • 로그인 및 인증 조건을 통과한 사용자는 대화하기를 누르면 기존처럼 채팅방 생성 후 채팅방으로 이동한다.
  • 로그인 사용자는 DM을 누르면 기존 owner/non-owner 분기에 따라 동일하게 이동한다.

7. Core Features

Feature A: 화면 진입 로그인 guard

Requirements

  • CreatorChannelActivity 진입 시 로그인 여부를 확인한다.
  • 비로그인 상태라면 showLoginActivity()를 호출하고 현재 화면을 종료한다.

Edge Cases

  • creatorId가 유효하지 않으면 기존처럼 로그인 화면 이동 없이 종료한다.

Feature B: 대화하기 국가별 인증/성인 콘텐츠 guard

Requirements

  • CreatorChannelActivitytvChatButton 클릭 시 기존 ensureLoginAndAdultAuth를 사용한다.
  • 한국 사용자이고 본인인증이 완료되지 않은 경우 본인인증 다이얼로그를 표시한다.
  • 성인 콘텐츠 표시 설정(isAdultContentVisible)이 꺼진 경우 콘텐츠 설정 화면으로 이동한다.
  • guard 통과 후에만 homeActionDelegate?.createChatRoom(characterId)를 호출한다.

Edge Cases

  • currentHeader 또는 characterId가 없으면 기존처럼 아무 동작도 하지 않는다.
  • 인증/성인 콘텐츠 접근 조건을 통과하지 못하면 API를 호출하지 않는다.

Feature C: DM 이동 유지

Requirements

  • CreatorChannelActivitytvDmButton은 화면 레벨 로그인 보장을 전제로 기존 owner/non-owner 이동 경로를 유지한다.

Edge Cases

  • owner인 경우 기존처럼 MainV2Activity.newChatDmIntent(this)로 이동한다.
  • owner가 아닌 경우 기존처럼 DmChatRoomActivity.newIntentByCreatorId(this, creatorId)로 이동한다.

8. UX / UI Expectations

  • 버튼 노출, 텍스트, 레이아웃은 변경하지 않는다.
  • 비로그인 사용자는 오류 토스트 대신 로그인 화면으로 이동한다.

9. Technical Constraints

  • 변경 파일은 CreatorChannelActivity.kt와 이번 작업 문서로 제한한다.
  • 기존 showLoginActivity()startAuthFlow()를 재사용한다.
  • 기존 ensureLoginAndAdultAuth()대화하기 인증 guard에도 재사용한다.

10. Metrics

  • 별도 지표 추가 없음.

11. Open Questions

  • 없음. 사용자 확인으로 화면 자체를 로그인 필수로 만들고, 대화하기는 국가별 인증/성인 콘텐츠 guard를 적용하기로 확정했다.