fix(home): 라이브 전체 버튼을 오른쪽에 고정한다
This commit is contained in:
@@ -21,7 +21,7 @@ Figma `home_001` 화면(`24:5514`)을 기준으로 메인 홈 추천 영역을
|
||||
- 추천 탭이 선택된 `HomeMainFragment`에 메인 홈 추천 UI를 구현한다.
|
||||
- Figma에서 기존 widget으로 대응 가능한 항목은 기존 v2 widget을 우선 재사용한다.
|
||||
- 재사용이 어려운 영역만 최소 범위 신규 UI 또는 adapter item으로 정의한다.
|
||||
- 현재 진행 중인 라이브가 1개 이상이면 라이브 가로 목록 마지막에 `전체` 항목을 항상 표시해 전체 라이브 목록으로 이동할 수 있게 한다.
|
||||
- 현재 진행 중인 라이브가 1개 이상이면 가로 목록의 스크롤과 관계없이 오른쪽 끝에 `전체` 항목을 고정해 전체 라이브 목록으로 이동할 수 있게 한다.
|
||||
- `추천 필모그래피`, `또 다른 모습` 섹션은 만들지 않는다.
|
||||
- 최하단 사업자 정보 섹션은 표시하되, 기본 최대 3줄 말줄임과 `더보기`/`접기` 토글을 제공한다.
|
||||
- `HomeActiveCreatorItem.activityType`은 백엔드 code를 앱 내부 enum 또는 mapper로 변환하고, 표시 문구는 string resource 기반 다국어 처리를 적용한다.
|
||||
@@ -56,7 +56,7 @@ Figma `home_001` 화면(`24:5514`)을 기준으로 메인 홈 추천 영역을
|
||||
|
||||
## 6. User Stories
|
||||
- 사용자는 홈에서 현재 라이브 중인 크리에이터와 추천 콘텐츠를 빠르게 탐색하고 싶다.
|
||||
- 사용자는 현재 진행 중인 라이브가 적더라도 `전체` 항목을 통해 전체 라이브 목록 화면으로 이동하고 싶다.
|
||||
- 사용자는 현재 진행 중인 라이브 목록을 어느 위치까지 스크롤했는지와 관계없이 오른쪽 끝의 `전체` 항목을 통해 전체 라이브 목록 화면으로 이동하고 싶다.
|
||||
- 사용자는 배너를 스와이프하거나 터치해 관련 이벤트, 크리에이터, 시리즈, 외부 링크 또는 앱 내부 딥링크로 이동하고 싶다.
|
||||
- 사용자는 최근 활동한 크리에이터의 활동 유형을 `라이브`, `오디오`, `커뮤니티`처럼 이해 가능한 문구로 보고 싶다.
|
||||
- 사용자는 여러 크리에이터를 한 번에 팔로우하기 전에 확인창에서 동작을 검토하고, 확인하거나 취소할 수 있기를 원한다.
|
||||
@@ -148,8 +148,9 @@ data class HomePopularCommunityPostItem(
|
||||
|
||||
#### Requirements
|
||||
- `lives`가 비어 있으면 기존 정책대로 라이브 섹션 전체를 숨기고 `전체` 항목도 표시하지 않는다.
|
||||
- `lives`가 1개 이상 20개 이하이면 모든 라이브 항목 뒤에 `전체` 항목을 표시한다.
|
||||
- `lives`가 21개 이상이면 기존 정책대로 라이브를 최대 20개까지 표시하고 마지막에 `전체` 항목을 표시한다.
|
||||
- `lives`가 1개 이상이면 라이브 목록과 영역을 나누는 형제 뷰로 `전체` 항목을 오른쪽 끝에 고정하며, 라이브 목록의 가로 스크롤에 함께 이동하지 않는다.
|
||||
- 고정 `전체` 항목은 라이브 목록을 가리지 않고 별도 폭을 차지하며, 라이브 목록만 남은 영역에서 스크롤된다.
|
||||
- `lives`가 21개 이상이면 기존 정책대로 라이브를 최대 20개까지 표시하고 고정 `전체` 항목을 함께 표시한다.
|
||||
- `전체` 항목의 기존 크기, 색상, typography와 클릭 시 `HomeOnAirLiveActivity`로 이동하는 동작을 유지한다.
|
||||
- 라이브 item 표시 순서, item 클릭 입장 흐름, 추천 API와 전체 라이브 목록 API 계약은 변경하지 않는다.
|
||||
|
||||
@@ -404,7 +405,7 @@ HomeRecommendation 화면
|
||||
- API 모델은 기존 네트워크 스택과 JSON 파서 규칙을 따른다.
|
||||
- string resource 기반 다국어 처리를 적용하며, UI 표시 문자열을 Kotlin 코드에 직접 하드코딩하지 않는다.
|
||||
- Figma에 있는 기존 widget과 다른 신규 UI는 구현 계획에서 파일 경로와 테스트 범위를 명시한 뒤 최소 범위로 작성한다.
|
||||
- 신규 순수 변환 로직(activity type mapper, count/time formatter 등)은 가능하면 local unit test로 검증한다.
|
||||
- 신규 테스트는 `app/src/test`의 로직/local unit test로 한정한다. UI 변경은 adapter 분기, mapper, formatter, presentation model, 라우팅처럼 화면 표현을 결정하는 로직만 검증하고 레이아웃 속성·계측·스크린샷 테스트는 작성하지 않는다.
|
||||
|
||||
---
|
||||
|
||||
@@ -418,7 +419,7 @@ HomeRecommendation 화면
|
||||
- `HomeActiveCreatorItem.creatorId`가 UI model까지 보존되고, `LIVE` item은 `targetId` 유무에 따라 라이브 룸 또는 크리에이터 채널 route로 분기된다.
|
||||
- 최근 활동 `LIVE`의 `targetId == null && creatorId <= 0L` 입력에서 route가 생성되지 않는다.
|
||||
- 최근 활동 `LIVE`의 라이브 룸 진입이 `LiveActionCoordinator`를 사용해 로그인·본인인증·성인 콘텐츠 보기 설정 정책을 우회하지 않는다.
|
||||
- 현재 진행 중인 라이브가 0개이면 라이브 섹션과 `전체` 항목이 표시되지 않고, 1개 이상이면 최대 20개 라이브 뒤에 `전체` 항목이 표시된다.
|
||||
- 현재 진행 중인 라이브가 0개이면 라이브 섹션과 `전체` 항목이 표시되지 않고, 1개 이상이면 최대 20개의 스크롤 목록과 오른쪽 끝에 고정된 `전체` 항목이 표시된다.
|
||||
- 제외 대상인 `추천 필모그래피`, `또 다른 모습` 섹션이 화면에 생성되지 않는다.
|
||||
- 최근 응원이 많은 크리에이터 모두 팔로우 API success 후 버튼이 `모두 팔로우 완료`와 `ic_new_following` 상태로 변경된다.
|
||||
- 최근 응원이 많은 크리에이터의 기본 상태 모두 팔로우 버튼 터치 직후에는 확인창만 표시되고 API 호출 횟수는 `0`이다.
|
||||
@@ -441,6 +442,7 @@ HomeRecommendation 화면
|
||||
---
|
||||
|
||||
## 12. 검증 기록
|
||||
- 2026-08-03: 사용자 승인으로 현재 진행 중인 라이브의 `전체` 항목을 adapter 마지막 item에서 분리해 오른쪽 끝 고정 형제 뷰로 배치하는 요구사항을 확정했다. 고정 뷰가 라이브 목록을 가리지 않도록 수평 컨테이너에서 영역을 나누고, 빈 목록 섹션 숨김·라이브 최대 20개·기존 디자인·문구·클릭 목적지·로그인 가드·라이브 item 입장 흐름은 유지한다. 구현 검증은 Phase 19의 로직/local unit test와 resource merge·compile 기준으로 진행한다.
|
||||
- 2026-07-31: 현재 진행 중인 라이브 `전체` 항목 상시 표시 요구사항을 TDD로 구현했다. 라이브 1개 입력의 adapter item 수가 기대 2, 실제 1로 실패하는 RED를 확인한 뒤 `HomeLiveAdapter`가 비어 있지 않은 입력에서 `전체` 항목을 추가하도록 최소 수정했다. focused `HomeMainFragmentLayoutTest` 74개와 전체 162 suites·1,199 tests, debug Kotlin compile, ktlint, diff 검증이 성공했으며 0개 숨김·20개 cap·기존 `전체` 디자인과 클릭 경로는 유지했다.
|
||||
- 2026-07-31: 사용자 인터뷰에서 현재 진행 중인 라이브가 0개이면 기존처럼 섹션을 숨기고, 1개 이상이면 최대 20개 라이브 뒤에 `전체` 항목을 항상 표시하는 정책을 확정했다. `HomeLiveAdapter.submitItems()`의 기존 `items.size > MAX_VISIBLE_LIVE_COUNT` 조건과 `HomeMainFragmentLayoutTest`의 21개 초과 회귀 테스트를 확인했으며, 기존 디자인·클릭 목적지·로그인 가드·API 계약은 변경하지 않는 최소 범위를 PRD에 반영했다.
|
||||
- 2026-07-31: PRD와 계획/TASK 보완 후 신규 범위의 placeholder·모순·요구사항 추적성을 자체 검토했다. `git status --short`로 변경 파일이 두 문서뿐임을 확인했고, placeholder 검색과 `git diff --check`는 출력 없이 성공했다. `./gradlew tasks --all`은 최초 sandbox 실행에서 사용자 Gradle cache lock 접근 제한으로 실패했으나 승인된 동일 명령 재실행은 `BUILD SUCCESSFUL`로 완료되어 계획에 기재한 Gradle task 이름의 유효성을 확인했다. production·test·resource 파일은 변경하지 않았다.
|
||||
@@ -528,3 +530,11 @@ HomeRecommendation 화면
|
||||
- 현재 진행 중인 라이브가 1개 이상이면 라이브 개수와 관계없이 목록 마지막에 `전체` 항목을 표시한다.
|
||||
- 라이브는 기존처럼 최대 20개까지 표시하므로 21개 이상일 때도 `라이브 20개 + 전체` 구성을 유지한다.
|
||||
- `전체` 항목의 디자인·클릭 목적지·로그인 가드와 라이브 item의 입장 흐름은 변경하지 않는다.
|
||||
|
||||
### 2026-08-03 변경: 현재 진행 중인 라이브 `전체` 항목 오른쪽 고정
|
||||
- 2026-07-31 변경의 `전체` 상시 표시 정책은 유지하되, adapter 마지막 item으로 배치하는 방식만 대체한다.
|
||||
- `전체` 항목은 가로 스크롤 목록 밖의 형제 뷰로 분리해 오른쪽 끝에 고정하며, 라이브 목록의 스크롤 위치와 관계없이 표시한다.
|
||||
- 라이브 목록과 `전체` 항목은 수평 컨테이너의 영역을 나누며 서로 겹치지 않는다.
|
||||
- 라이브가 0개이면 기존처럼 섹션 전체를 숨기고, 1개 이상이면 라이브 목록을 최대 20개까지 표시한다.
|
||||
- `전체` 항목의 기존 `58dp x 102dp` 크기, 검은 배경, 가운데 정렬, `Typography.Body5`, `soda_400` 문구 색상과 `HomeOnAirLiveActivity` 이동·로그인 가드를 유지한다.
|
||||
- 라이브 item 순서·간격·입장 흐름과 추천/전체 라이브 API 계약은 변경하지 않는다.
|
||||
|
||||
Reference in New Issue
Block a user