fix(main): 최근 활동 이동을 보정한다
This commit is contained in:
@@ -76,6 +76,7 @@ data class HomeLiveItem(
|
||||
)
|
||||
|
||||
data class HomeActiveCreatorItem(
|
||||
val creatorId: Long,
|
||||
val creatorNickname: String,
|
||||
val creatorProfileImage: String,
|
||||
val activityType: String,
|
||||
@@ -159,6 +160,7 @@ enum class RecommendedActivityType(val code: String) {
|
||||
- `AUDIO` -> `I18n.HomeRecommendation.activityAudio`
|
||||
- `COMMUNITY` -> `I18n.HomeRecommendation.activityCommunity`
|
||||
- 알 수 없는 값은 서버 코드를 그대로 노출하지 않고 보조 문구를 숨긴다.
|
||||
- `LIVE`와 `LIVE_REPLAY`는 표시 문구만 동일하게 사용하며, 탭 이동 분기를 구분할 수 있도록 서로 다른 앱 enum case로 변환한다.
|
||||
|
||||
다국어 기본 문구:
|
||||
- ko: `라이브`, `오디오`, `커뮤니티`
|
||||
@@ -179,6 +181,11 @@ enum class RecommendedActivityType(val code: String) {
|
||||
- 민감 콘텐츠 보기 설정이 꺼져 있으면 `AppState.shared.setPendingContentSettingsGuideMessage(I18n.Settings.adultContentEnableGuide)`로 안내 문구를 예약하고 `AppState.shared.setAppStep(step: .contentViewSettings)`로 이동한다.
|
||||
- 위 조건을 통과한 경우에만 `liveDetail`, `creatorDetail`, `contentDetail`, `characterDetail` 등 실제 상세 이동을 실행한다.
|
||||
- 추천 탭 현재 라이브 아이템은 `roomId`가 항상 존재하는 값으로 취급하고, 아이템 탭 시 상세 화면을 거치지 않고 기존 `LiveViewModel.enterLiveRoom(roomId:)` 흐름을 호출해 방 상세 조회, 입장 전 결제 확인, 비밀방 비밀번호 dialog, `LiveRoomViewV2` 입장을 재사용한다.
|
||||
- 최근 활동 크리에이터에서 서버 원본 `activityType == LIVE`이고 `targetId != null`이면 `targetId`를 라이브룸 `roomId`로 사용해 기존 라이브룸 입장 흐름을 실행한다.
|
||||
- 최근 활동 크리에이터에서 서버 원본 `activityType == LIVE`이고 `targetId == null`이면 `creatorId`를 사용해 크리에이터 채널로 이동한다.
|
||||
- 최근 활동 크리에이터의 `creatorId`는 서버에서 항상 유효한 양수로 제공하지만, 앱에서도 `creatorId > 0`을 확인한 뒤에만 크리에이터 채널 이동을 실행한다. 검사를 통과하지 못하면 이동하지 않는다.
|
||||
- `LIVE_REPLAY`는 `AUDIO`와 동일하게 `targetId`를 콘텐츠 ID로 사용해 콘텐츠 상세 페이지로 이동한다. `targetId`가 없으면 이동하지 않으며, `LIVE`의 `creatorId` fallback은 적용하지 않는다.
|
||||
- 최근 활동 크리에이터의 `AUDIO`, `COMMUNITY`, 알 수 없는 활동 타입은 기존 탭 동작을 유지한다.
|
||||
- 최근 활동 크리에이터에서 `activityType == COMMUNITY`인 아이템은 `targetId`를 커뮤니티 게시물 `postId`로 취급하고, 탭 시 커뮤니티 게시물 상세 페이지로 이동한다.
|
||||
- 인기 커뮤니티 섹션의 커뮤니티 게시물은 `postId` 기준으로 커뮤니티 게시물 상세 페이지로 이동한다. 좋아요, 구매, 오디오 재생 액션은 기존 개별 액션을 유지한다.
|
||||
|
||||
@@ -302,6 +309,9 @@ MainHomeView
|
||||
- `FeedCommunityView`에 `구매완료` 버튼이 표시되지 않는다.
|
||||
- 사업자 정보는 마지막 섹션에서 화면 width를 채우고, 기본 3줄 말줄임표, 더보기, 전체 표시, 접기 전환이 동작한다.
|
||||
- 상세 진입 탭 액션은 기존 홈과 같은 로그인, 한국 사용자 본인인증, 민감 콘텐츠 보기 설정 guard를 통과한 뒤에만 실행된다.
|
||||
- 최근 활동 크리에이터의 `LIVE` 활동은 `targetId`가 있으면 라이브룸으로 이동하고, `targetId`가 없고 `creatorId > 0`이면 크리에이터 채널로 이동한다.
|
||||
- 최근 활동 크리에이터의 `LIVE_REPLAY` 표시 문구는 기존과 같이 `라이브` 계열 I18n 문구를 유지하되, 탭 시에는 `AUDIO`와 동일하게 `targetId` 기반 콘텐츠 상세 페이지로 이동하며 `creatorId` fallback은 적용되지 않는다.
|
||||
- 최근 활동 크리에이터의 `AUDIO`, `COMMUNITY`, 알 수 없는 활동 타입의 기존 동작에 회귀가 없다.
|
||||
- 최근 활동 크리에이터의 `COMMUNITY` 활동과 인기 커뮤니티 섹션의 게시물은 커뮤니티 게시물 상세 페이지로 이동한다.
|
||||
- `MainHomeView`는 추천/랭킹/팔로잉 탭 shell 역할만 하고, 추천 탭 섹션 조립은 `MainHomeRecommendationView`에 분리되어 있다.
|
||||
- 반복 UI는 기존 widget 또는 공용 컴포넌트를 재사용하고 불필요하게 중복 구현하지 않는다.
|
||||
@@ -312,10 +322,10 @@ MainHomeView
|
||||
- 각 섹션별 최대 표시 개수와 가로/세로 스크롤 정책이 Figma 기준 그대로인지, 서버 응답 전체를 모두 표시해야 하는지 확인이 필요하다.
|
||||
- `HomeLiveItem`에 민감/성인 라이브 여부를 판단할 `isAdult` 또는 동등한 필드가 추가되는지, 아니면 서버에서 추천 라이브를 사전 필터링하는지 확인이 필요하다.
|
||||
- 커뮤니티 `audioUrl`을 추천 탭 카드에서 표시/재생해야 하는지 확인이 필요하다.
|
||||
- 각 카드 터치 시 상세 이동 대상이 모두 정의되어 있는지 확인이 필요하다. 단, 최근 활동 `COMMUNITY`와 인기 커뮤니티 게시물은 커뮤니티 게시물 상세 페이지로 확정한다.
|
||||
- 각 카드 터치 시 상세 이동 대상이 모두 정의되어 있는지 확인이 필요하다. 단, 최근 활동 `LIVE`, `LIVE_REPLAY`, `COMMUNITY`, 인기 커뮤니티 게시물의 이동 규칙은 확정한다.
|
||||
|
||||
## 12. Verification Plan
|
||||
- 문서 검증: API URL, 응답 모델, 제외 섹션, FeedCommunityView, 사업자 정보 요구가 PRD와 계획 문서에 반영되었는지 확인한다.
|
||||
- 정적 검증: 신규 추천 API가 기존 `HomeApi`에 추가되지 않았고, Figma URL이 앱 코드에 직접 포함되지 않았는지 확인한다.
|
||||
- 빌드 검증: `docs/agent-guides/build-test-verification.md` 기준으로 가능한 iOS 빌드 또는 최소 정적 검증을 실행한다.
|
||||
- 기능 검증: 추천 API 성공/실패, 빈 섹션, 활동 타입 I18n, 상세 진입 guard, 커뮤니티 카드 상태, 사업자 정보 더보기/접기를 확인한다.
|
||||
- 기능 검증: 추천 API 성공/실패, 빈 섹션, 활동 타입 I18n, 상세 진입 guard, 최근 활동 `LIVE`의 `targetId` 유무별 이동, `creatorId` 양수 검사, `LIVE_REPLAY`의 콘텐츠 상세 이동, 다른 활동 타입의 회귀 여부, 커뮤니티 카드 상태, 사업자 정보 더보기/접기를 확인한다.
|
||||
|
||||
Reference in New Issue
Block a user