docs(creator): 라이브 정렬 팝업 검증을 기록한다
This commit is contained in:
@@ -412,7 +412,7 @@
|
||||
|
||||
### Phase 5: 정렬 컨텍스트 메뉴 구현
|
||||
|
||||
- [ ] **Task 5.1: Sort popup 구현**
|
||||
- [x] **Task 5.1: Sort popup 구현**
|
||||
- 생성 후보:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/ui/CreatorChannelLiveSortPopup.kt`
|
||||
- `app/src/main/res/layout/view_creator_channel_live_sort_menu.xml`
|
||||
@@ -425,8 +425,13 @@
|
||||
- 새 정렬 선택 시 ViewModel에 정렬 변경을 전달한다.
|
||||
- 검증:
|
||||
- 작은 화면에서 메뉴가 화면 밖으로 벗어나지 않도록 위치 보정 기준을 코드에 남긴다.
|
||||
- 검증 기록:
|
||||
- 2026-06-17: Figma `290:9041` 기준으로 `view_creator_channel_live_sort_menu.xml`, `bg_creator_channel_live_sort_popup.xml`, `bg_creator_channel_live_sort_selected.xml`을 추가했다. Popup 배경은 `gray_900` fill, `gray_700` 1dp stroke, `radius_14`로 구성하고, 선택 row는 `gray_800` 배경으로 표시한다.
|
||||
- 2026-06-17: `CreatorChannelLiveSortPopup`을 추가해 `ContentSort.entries`와 기존 `toSortOptionUiModel(selectedSort)`/`toLabelResId()` 매핑을 재사용하도록 했다. `PopupWindow`는 `isOutsideTouchable = true`, `isFocusable = true`로 외부 터치 dismiss를 지원하고, 같은 정렬 선택은 dismiss만 수행하며 새 정렬 선택은 `viewModel.changeSort(sort)`로 전달한다.
|
||||
- 2026-06-17: 작은 화면에서 popup 오른쪽이 visible display frame 밖으로 나가는 경우 `calculateHorizontalOffset()`으로 음수 x offset을 계산해 `showAsDropDown()`에 전달하도록 위치 보정 기준을 코드에 남겼다.
|
||||
- 2026-06-17: `CreatorChannelLiveFragment`는 `layoutCreatorChannelLiveSortButton` 클릭 시 현재 `Content` 상태의 `selectedSort`로 popup을 표시하고, `onDestroyView()`에서 `sortPopup?.dismiss()`로 window leak을 방지한다.
|
||||
|
||||
- [ ] **Task 5.2: Sort 동작 테스트 보강**
|
||||
- [x] **Task 5.2: Sort 동작 테스트 보강**
|
||||
- 수정:
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveViewModelTest.kt`
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveMapperTest.kt`
|
||||
@@ -438,6 +443,11 @@
|
||||
- `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.*"`
|
||||
- 기대 결과:
|
||||
- sort 관련 테스트가 PASS한다.
|
||||
- 검증 기록:
|
||||
- 2026-06-17: production 구현 전 `CreatorChannelLiveFragmentLayoutTest`에 popup layout/resource/source wiring 테스트를 먼저 추가했다. RED 실행 결과 `view_creator_channel_live_sort_menu`, `layout_creator_channel_live_sort_options` 미존재로 `:app:compileDebugUnitTestKotlin FAILED`가 발생해 실패를 확인했다.
|
||||
- 2026-06-17: 기존 `CreatorChannelLiveMapperTest`는 `ContentSort`별 label resource 매핑을 이미 검증하고, 기존 `CreatorChannelLiveViewModelTest`는 정렬 변경 첫 페이지 재로딩 및 같은 정렬 재선택 no-op을 이미 검증하고 있어 중복 테스트를 추가하지 않았다.
|
||||
- 2026-06-17: 구현 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveFragmentLayoutTest"` 실행 결과 `BUILD SUCCESSFUL`로 통과했다.
|
||||
- 2026-06-17: `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `./gradlew :app:ktlintCheck` 실행 결과 모두 `BUILD SUCCESSFUL`로 통과했다. 기존 `.editorconfig`의 `disabled_rules` deprecation 경고와 기존 Kotlin deprecation/annotation 경고는 Phase 5 변경과 무관하다.
|
||||
|
||||
---
|
||||
|
||||
@@ -658,3 +668,7 @@
|
||||
- 2026-06-17: Live pager 연결 보정 후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*Live*"` PASS, `./gradlew :app:compileDebugKotlin` PASS, `./gradlew :app:ktlintCheck` PASS. `ktlintCheck`에서는 기존 `.editorconfig`의 `disabled_rules` deprecation 경고가 계속 출력되었다.
|
||||
- 2026-06-17: 리뷰 지적 2건 보정. Live 탭 API는 Live 탭 선택 시점 lazy load로 변경했고, Empty/Error는 Live page root와 Activity page minimumHeight 보정으로 탭 viewport 중앙 정렬을 보장했다. 최종 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveFragmentLayoutTest"` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*Live*"` PASS, `./gradlew :app:mergeDebugResources` PASS, `./gradlew :app:compileDebugKotlin` PASS, `./gradlew :app:ktlintCheck` PASS. 초기 병렬 RED 확인 중 Kotlin incremental cache 경합 로그가 출력됐으나 daemon 정리 후 순차 검증은 모두 통과했다.
|
||||
- 2026-06-17: 추가 리뷰 지적 2건 보정. `ViewPager2.offscreenPageLimit`을 복구해 Home 탭의 `HomeActionDelegate` 기반 상단 액션/refresh 경로를 유지하고, Live load-more 성공 시 첫 페이지의 current live/count/sort metadata를 보존하도록 변경했다. 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLivePaginationTest"` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*Live*"` PASS, `./gradlew :app:compileDebugKotlin` PASS, `./gradlew :app:ktlintCheck` PASS. `ktlintCheck`에서는 기존 `.editorconfig`의 `disabled_rules` deprecation 경고가 계속 출력되었다.
|
||||
- 2026-06-17: Phase 5 코드 리뷰 및 검증. Figma `290:9041` 컨텍스트 메뉴와 스크린샷을 재확인해 `gray_900` 배경, `gray_700` stroke, `radius_14`, 선택 row `gray_800`, 16sp medium, 12/8 padding 기준이 구현에 반영됐음을 확인했다. PRD/계획의 서버 정렬 계약은 `ContentSort` 5개 옵션이므로 Figma의 `추천순` row는 이번 범위에서 제외했다.
|
||||
- 2026-06-17: Phase 5 코드 리뷰에서 수정 필요 결함은 발견하지 못했다. `CreatorChannelLiveSortPopup`은 외부 터치 dismiss, 같은 정렬 재선택 dismiss-only, 새 정렬 선택 시 `viewModel.changeSort(sort)` 전달, 우측 화면 밖 보정, `onDestroyView()` dismiss 경로를 갖는다.
|
||||
- 2026-06-17: Phase 5 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.CreatorChannelLiveFragmentLayoutTest"` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.live.*"` PASS, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*Live*"` PASS, `./gradlew :app:mergeDebugResources` PASS, `./gradlew :app:compileDebugKotlin` PASS, `./gradlew :app:ktlintCheck` PASS를 확인했다.
|
||||
- 2026-06-17: 추가 상위 회귀 검증 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"` 최초 실행은 drawable 3개 추가 후 resource id 캐시가 맞지 않아 `CreatorChannelHomeMapperTest`, `CreatorChannelTitleBarStateTest`의 drawable id assertion이 3씩 밀려 실패했다. 해당 클래스들을 `--rerun-tasks`로 강제 재컴파일하자 통과했고, 이후 동일 채널 전체 회귀 명령을 순차 재실행해 `BUILD SUCCESSFUL`로 통과했다. 병렬 `--rerun-tasks` 중 Kotlin incremental cache 경합 로그가 출력됐으나 최종 순차 검증은 통과했다.
|
||||
|
||||
Reference in New Issue
Block a user