docs(content): 전체 탭 pagination 안정화 요구를 기록한다

This commit is contained in:
2026-07-12 01:24:02 +09:00
parent c2b212c1ce
commit d53167c48e
2 changed files with 61 additions and 0 deletions

View File

@@ -26,6 +26,8 @@
- 2026-07-10 후속 변경: 전체 탭 sort-bar에는 좌측 `전체` 라벨도 표시하지 않는다.
- 2026-07-10 후속 변경: 전체 탭 정렬 조건에서 `소장순`을 제거한다.
- 2026-07-10 후속 변경: `무료` 타입 선택 시 정렬 조건에서 `높은 가격순`, `낮은 가격순`을 표시하지 않는다.
- 2026-07-12 후속 변경: 추가 페이지 로딩 시 `RecyclerView` adapter를 반복 재설정하지 않아 스크롤 위치가 위로 튀지 않게 한다.
- 2026-07-12 후속 변경: 전체 탭 오디오/시리즈 adapter는 append 갱신 시 `DiffUtil` 기반으로 변경분만 반영한다.
---
@@ -253,6 +255,8 @@ data class MainContentSeriesResponse(
- 일본어 요일 UI의 `RANDOM` 표기는 `その他`로 표시한다.
- 영어 요일 UI의 `RANDOM` 표기는 `OTHER`로 표시한다.
- 시리즈 카드 성인 배지는 Figma Large/Small 태그 크기와 기존 오디오 성인 배지 표현을 따른다.
- 추가 페이지 로딩 중에는 현재 `RecyclerView` adapter를 유지하고, 같은 콘텐츠 계열의 상태 재렌더링만으로 adapter를 다시 대입하지 않는다.
- 첫 페이지 loading/empty/error 렌더링처럼 목록을 비우는 상태에서도 lifecycle cleanup이 아닌 이상 adapter를 `null`로 분리하지 않는다.
### 재사용 가능한 V2 위젯 후보
- `kr.co.vividnext.sodalive.v2.widget.CapsuleTabBarView`
@@ -284,6 +288,7 @@ data class MainContentSeriesResponse(
- 응답 처리는 기존 `ApiResponse<T>`와 Rx 타입(`Single`, `Flowable`) 패턴을 우선 검토한다.
- 공개 API 스키마는 사용자 요청에 명시된 계약을 그대로 따른다.
- `BuildConfig` 값이나 민감 정보는 로그/Toast/크래시 메시지에 노출하지 않는다.
- 전체 탭 pagination append는 `notifyDataSetChanged()` 전체 갱신이 아니라 `DiffUtil.calculateDiff(...)` 결과를 dispatch하는 방식으로 처리한다.
---
@@ -306,3 +311,4 @@ data class MainContentSeriesResponse(
## 12. Verification Log
- 2026-06-25: 사용자 후속 요구사항에 따라 전체 탭 오디오/시리즈 카드가 fixed Small `122dp` card width에 의존하지 않고 RecyclerView 3열 가용 item width를 사용해야 함을 문서화했다. 오디오 썸네일은 item width 기준 1:1, 시리즈 썸네일은 item width 기준 122:172 비율을 유지한다.
- 2026-06-25: 후속 UI 보정 검증으로 focused source/widget tests, `mergeDebugResources`, `compileDebugKotlin`, `ktlintCheck`, `git diff --check`가 모두 PASS했다. 전체 탭 adapter의 fixed Small 호출 제거와 동적 grid width API 사용, 오디오 1:1 및 시리즈 122:172 썸네일 계약을 테스트로 고정했다.
- 2026-07-12: 사용자 후속 요구사항에 따라 전체 탭 다음 페이지 로딩 시 adapter 반복 재설정으로 스크롤이 상단으로 튀는 문제를 수정 대상으로 추가했다. 같은 콘텐츠 계열에서는 adapter를 유지하고, 오디오/시리즈 전체 탭 adapter는 `DiffUtil` 기반으로 변경분만 반영해야 한다.