feat(creator): 일본어 보기 방식 label을 숨긴다
This commit is contained in:
+3
@@ -13,6 +13,7 @@ import kr.co.vividnext.sodalive.base.BaseFragment
|
|||||||
import kr.co.vividnext.sodalive.databinding.FragmentCreatorChannelCommunityBinding
|
import kr.co.vividnext.sodalive.databinding.FragmentCreatorChannelCommunityBinding
|
||||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||||
|
import kr.co.vividnext.sodalive.settings.language.LanguageManager
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.community.model.CreatorChannelCommunityMenuItem
|
import kr.co.vividnext.sodalive.v2.creator.channel.community.model.CreatorChannelCommunityMenuItem
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.community.model.CreatorChannelCommunityViewMode
|
import kr.co.vividnext.sodalive.v2.creator.channel.community.model.CreatorChannelCommunityViewMode
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.community.ui.CreatorChannelCommunityGridAdapter
|
import kr.co.vividnext.sodalive.v2.creator.channel.community.ui.CreatorChannelCommunityGridAdapter
|
||||||
@@ -134,6 +135,8 @@ class CreatorChannelCommunityFragment : BaseFragment<FragmentCreatorChannelCommu
|
|||||||
layoutCreatorChannelCommunitySortBar.isVisible = true
|
layoutCreatorChannelCommunitySortBar.isVisible = true
|
||||||
tvCreatorChannelCommunityTotalCount.text = state.communityPostCount.moneyFormat()
|
tvCreatorChannelCommunityTotalCount.text = state.communityPostCount.moneyFormat()
|
||||||
tvCreatorChannelCommunityViewModeLabel.setText(state.viewMode.labelResId)
|
tvCreatorChannelCommunityViewModeLabel.setText(state.viewMode.labelResId)
|
||||||
|
tvCreatorChannelCommunityViewModeLabel.isVisible =
|
||||||
|
LanguageManager.getEffectiveLanguage(requireContext()) != LanguageManager.LANG_JA
|
||||||
ivCreatorChannelCommunityViewMode.setImageResource(state.viewMode.iconResId)
|
ivCreatorChannelCommunityViewMode.setImageResource(state.viewMode.iconResId)
|
||||||
rvCreatorChannelCommunity.isVisible = true
|
rvCreatorChannelCommunity.isVisible = true
|
||||||
bindCommunityAdapter(state)
|
bindCommunityAdapter(state)
|
||||||
|
|||||||
+3
@@ -156,6 +156,9 @@ class CreatorChannelCommunityFragmentLayoutTest {
|
|||||||
assertTrue(fragment.contains("viewModel.loadMore()"))
|
assertTrue(fragment.contains("viewModel.loadMore()"))
|
||||||
assertTrue(fragment.contains("viewModel.retryCommunity()"))
|
assertTrue(fragment.contains("viewModel.retryCommunity()"))
|
||||||
assertTrue(fragment.contains("viewModel.toggleViewMode()"))
|
assertTrue(fragment.contains("viewModel.toggleViewMode()"))
|
||||||
|
assertTrue(fragment.contains("LanguageManager.getEffectiveLanguage(requireContext())"))
|
||||||
|
assertTrue(fragment.contains("LanguageManager.LANG_JA"))
|
||||||
|
assertTrue(fragment.contains("tvCreatorChannelCommunityViewModeLabel.isVisible ="))
|
||||||
assertTrue(fragment.contains("LinearLayoutManager"))
|
assertTrue(fragment.contains("LinearLayoutManager"))
|
||||||
assertTrue(
|
assertTrue(
|
||||||
fragment.contains("GridLayoutManager(requireContext(), 3") ||
|
fragment.contains("GridLayoutManager(requireContext(), 3") ||
|
||||||
|
|||||||
@@ -572,7 +572,35 @@
|
|||||||
- 검증 기록:
|
- 검증 기록:
|
||||||
- 2026-07-12: RED로 `CreatorChannelCommunityMapperTest.유료 미구매 타인 게시글은 reaction 현황과 댓글을 숨긴다`를 추가했고, production 변경 전 `showReaction` 미구현 컴파일 실패를 확인했다. 이후 UI 모델/mapper/list adapter에 `showReaction`과 잠금 조건을 반영했다.
|
- 2026-07-12: RED로 `CreatorChannelCommunityMapperTest.유료 미구매 타인 게시글은 reaction 현황과 댓글을 숨긴다`를 추가했고, production 변경 전 `showReaction` 미구현 컴파일 실패를 확인했다. 이후 UI 모델/mapper/list adapter에 `showReaction`과 잠금 조건을 반영했다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Phase 8: 일본어 보기 방식 label 숨김 후속
|
||||||
|
|
||||||
|
- [x] **Task 8.1: 일본어 커뮤니티 보기 방식 label 숨김**
|
||||||
|
- 대상 파일:
|
||||||
|
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragment.kt`
|
||||||
|
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragmentLayoutTest.kt`
|
||||||
|
- 작업:
|
||||||
|
- `LanguageManager.getEffectiveLanguage(requireContext()) == LanguageManager.LANG_JA`이면 `tvCreatorChannelCommunityViewModeLabel`을 숨긴다.
|
||||||
|
- 일본어가 아니면 기존처럼 보기 방식 label을 표시한다.
|
||||||
|
- 전체 count, 보기 방식 icon, 토글 버튼 동작은 유지한다.
|
||||||
|
- 검증 계획:
|
||||||
|
- `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityFragmentLayoutTest"`
|
||||||
|
- `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.*"`
|
||||||
|
- `./gradlew :app:mergeDebugResources :app:compileDebugKotlin`
|
||||||
|
- `git diff --check`
|
||||||
|
- 수동 확인:
|
||||||
|
- 일본어 설정에서 커뮤니티 탭 전체 개수 우측 끝의 `リスト`/`グリッド` label이 보이지 않는지 사용자가 직접 확인한다.
|
||||||
|
- 한국어/영어 설정에서는 기존 label 표시가 유지되는지 사용자가 직접 확인한다.
|
||||||
|
- 검증 기록:
|
||||||
|
- 2026-08-14: RED로 `CreatorChannelCommunityFragmentLayoutTest`에 `LanguageManager.getEffectiveLanguage(requireContext())`, `LanguageManager.LANG_JA`, `tvCreatorChannelCommunityViewModeLabel.isVisible =` source 계약을 추가했고, production 변경 전 `커뮤니티 fragment source는 pagination view mode owner padding과 상세 이동 계약을 사용한다`가 `CreatorChannelCommunityFragmentLayoutTest.kt:159` assertion으로 실패함을 확인했다.
|
||||||
|
- 2026-08-14: `CreatorChannelCommunityFragment.bindContent()`에서 `LanguageManager.getEffectiveLanguage(requireContext()) != LanguageManager.LANG_JA`일 때만 보기 방식 label을 표시하도록 변경했다. 전체 count, 보기 방식 icon, 토글 버튼 동작은 변경하지 않았다.
|
||||||
|
- 2026-08-14: GREEN으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityFragmentLayoutTest"` PASS, 회귀로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.*"` PASS를 확인했다. 최초 GREEN 실행 1회는 테스트 결과 출력 전 120초 timeout으로 중단되어 300초 제한으로 동일 명령을 재실행했다.
|
||||||
|
- 2026-08-14: `./gradlew :app:mergeDebugResources :app:compileDebugKotlin` PASS, `git diff --check` PASS를 확인했다. `./gradlew :app:mergeDebugResources :app:compileDebugKotlin :app:ktlintCheck`는 기존 변경 범위 밖의 `CreatorChannelActivitySourceTest.kt:1320`, `CreatorChannelFanTalkFragmentLayoutTest.kt:85/88/89/223` line length/argument formatting 위반으로 FAIL했고, 이번 변경 파일의 ktlint 위반은 보고되지 않았다. `.editorconfig disabled_rules` deprecation 경고는 기존 설정 경고다.
|
||||||
|
- 2026-08-14: 리뷰 보고서 `docs/20260621_크리에이터_채널_커뮤니티_탭/reviews/phase8-japanese-view-mode-label-review.md`를 작성했고, 차단 이슈와 확정 발견 사항 없음으로 판정했다.
|
||||||
|
|
||||||
## Verification Log
|
## Verification Log
|
||||||
|
- 2026-08-14: Phase 8 일본어 커뮤니티 보기 방식 label 숨김을 완료했다. RED는 `CreatorChannelCommunityFragmentLayoutTest` source 계약 실패로 확인했고, 구현 후 focused layout test와 community 패키지 회귀 테스트가 `BUILD SUCCESSFUL`로 PASS했다. `mergeDebugResources`와 `compileDebugKotlin`, `git diff --check`도 PASS했다. visual-qa와 실제 화면 조작은 사용자 요청에 따라 실행하지 않았으며, 일본어/한국어/영어 설정의 실제 화면 표시는 사용자 수동 확인 항목으로 남겼다. `ktlintCheck`는 기존 변경 범위 밖 테스트 파일의 line length/argument formatting 위반으로 FAIL했다. 리뷰 보고서 `reviews/phase8-japanese-view-mode-label-review.md`는 차단 이슈 없음으로 종료했다.
|
||||||
- 2026-07-12: Phase 7 유료 미구매 리스트형 게시글 reaction/comment 숨김 변경을 완료했다. RED는 `CreatorChannelCommunityMapperTest.유료 미구매 타인 게시글은 reaction 현황과 댓글을 숨긴다`의 `showReaction` 미구현 컴파일 실패로 확인했고, 구현 후 focused 테스트, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.*"`, `./gradlew :app:mergeDebugResources :app:compileDebugKotlin :app:ktlintCheck`가 모두 `BUILD SUCCESSFUL`로 PASS했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고는 기존 설정 경고다.
|
- 2026-07-12: Phase 7 유료 미구매 리스트형 게시글 reaction/comment 숨김 변경을 완료했다. RED는 `CreatorChannelCommunityMapperTest.유료 미구매 타인 게시글은 reaction 현황과 댓글을 숨긴다`의 `showReaction` 미구현 컴파일 실패로 확인했고, 구현 후 focused 테스트, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.*"`, `./gradlew :app:mergeDebugResources :app:compileDebugKotlin :app:ktlintCheck`가 모두 `BUILD SUCCESSFUL`로 PASS했다. `ktlintCheck`의 `.editorconfig disabled_rules` deprecation 경고는 기존 설정 경고다.
|
||||||
- 계획 문서 생성 단계에서는 코드 변경을 수행하지 않았다. 구현 후 통합 검증, 회귀 검증, 최종 수동 확인 기록을 이 섹션에 누적한다.
|
- 계획 문서 생성 단계에서는 코드 변경을 수행하지 않았다. 구현 후 통합 검증, 회귀 검증, 최종 수동 확인 기록을 이 섹션에 누적한다.
|
||||||
|
|
||||||
|
|||||||
@@ -139,6 +139,7 @@ Sort-bar는 전체 커뮤니티 게시글 수와 현재 보기 방식을 표시
|
|||||||
- 썸네일형 label은 `썸네일형`이며 icon은 `ic_new_grid`를 사용한다.
|
- 썸네일형 label은 `썸네일형`이며 icon은 `ic_new_grid`를 사용한다.
|
||||||
- 우측 보기 방식 영역을 터치하면 `리스트형 -> 썸네일형 -> 리스트형` 순서로 토글한다.
|
- 우측 보기 방식 영역을 터치하면 `리스트형 -> 썸네일형 -> 리스트형` 순서로 토글한다.
|
||||||
- 보기 방식 label은 한국어/영어/일본어 다국어 문자열 리소스로 관리한다.
|
- 보기 방식 label은 한국어/영어/일본어 다국어 문자열 리소스로 관리한다.
|
||||||
|
- 일본어로 설정된 경우에는 우측 보기 방식 label(`リスト`/`グリッド`)을 표시하지 않고 icon과 토글 동작은 유지한다.
|
||||||
- 보기 방식 변경 시 스크롤 위치 유지 여부는 구현 계획 단계에서 기존 탭 목록 상태 정책을 확인해 결정한다.
|
- 보기 방식 변경 시 스크롤 위치 유지 여부는 구현 계획 단계에서 기존 탭 목록 상태 정책을 확인해 결정한다.
|
||||||
|
|
||||||
#### Edge Cases
|
#### Edge Cases
|
||||||
|
|||||||
@@ -0,0 +1,92 @@
|
|||||||
|
# Phase 8 일본어 보기 방식 Label 숨김 리뷰
|
||||||
|
|
||||||
|
## 1. 리뷰 정보
|
||||||
|
|
||||||
|
| 항목 | 내용 |
|
||||||
|
|---|---|
|
||||||
|
| 리뷰 대상 | Phase 8 / Task 8.1 |
|
||||||
|
| 기준 commit 또는 working tree | working tree 변경분 |
|
||||||
|
| 리뷰 일자 | 2026-08-14 |
|
||||||
|
| 리뷰어 | Sisyphus-Junior |
|
||||||
|
| 기준 문서 | `docs/20260621_크리에이터_채널_커뮤니티_탭/prd.md`, `docs/20260621_크리에이터_채널_커뮤니티_탭/plan-task.md` |
|
||||||
|
| 리뷰 상태 | 판정 완료 |
|
||||||
|
|
||||||
|
## 2. 리뷰 목적과 범위
|
||||||
|
|
||||||
|
### 목적
|
||||||
|
|
||||||
|
- 일본어 설정에서 커뮤니티 탭 Sort-bar 우측 보기 방식 label만 숨기는지 확인한다.
|
||||||
|
- 전체 count, 보기 방식 icon, 토글 동작이 유지되는지 확인한다.
|
||||||
|
- 기존 문서와 검증 기록이 변경 범위를 정확히 반영하는지 확인한다.
|
||||||
|
|
||||||
|
### 포함 범위
|
||||||
|
|
||||||
|
- 코드: `CreatorChannelCommunityFragment.kt`
|
||||||
|
- 테스트: `CreatorChannelCommunityFragmentLayoutTest.kt`
|
||||||
|
- 문서: Phase 8 요구사항, Task, Verification Log
|
||||||
|
|
||||||
|
### 제외 범위
|
||||||
|
|
||||||
|
- visual-qa와 실제 기기 화면 조작. 사용자가 수동으로 진행한다.
|
||||||
|
- 커뮤니티 탭 레이아웃, icon, 토글 로직의 시각적 재설계.
|
||||||
|
|
||||||
|
## 3. 판정 기준
|
||||||
|
|
||||||
|
| 심각도 | 기준 |
|
||||||
|
|---|---|
|
||||||
|
| Blocker | 일본어 label이 계속 표시되거나 비일본어 label이 숨겨지는 문제 |
|
||||||
|
| High | count, icon, toggle 동작 회귀 |
|
||||||
|
| Medium | 문서·검증 기록 누락으로 완료 판단이 어려운 문제 |
|
||||||
|
| Low | 비차단 유지보수성 또는 테스트 강도 개선 의견 |
|
||||||
|
|
||||||
|
## 4. 검토한 근거
|
||||||
|
|
||||||
|
### 문서와 코드
|
||||||
|
|
||||||
|
- 요구사항: `prd.md`의 일본어 `リスト`/`グリッド` label 숨김 요구.
|
||||||
|
- 계획: `plan-task.md` Phase 8 / Task 8.1.
|
||||||
|
- 코드: `CreatorChannelCommunityFragment.bindContent()`의 `LanguageManager.getEffectiveLanguage(requireContext()) != LanguageManager.LANG_JA` visibility 조건.
|
||||||
|
- 테스트: `CreatorChannelCommunityFragmentLayoutTest`의 source 계약.
|
||||||
|
|
||||||
|
### 실행한 검증
|
||||||
|
|
||||||
|
| 명령 또는 수동 검증 | 결과 | 핵심 증거 |
|
||||||
|
|---|---|---|
|
||||||
|
| `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityFragmentLayoutTest"` | 성공 | GREEN 재실행 `BUILD SUCCESSFUL` |
|
||||||
|
| `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.community.*"` | 성공 | community 패키지 회귀 `BUILD SUCCESSFUL` |
|
||||||
|
| `./gradlew :app:mergeDebugResources :app:compileDebugKotlin` | 성공 | resource merge, Kotlin compile `BUILD SUCCESSFUL` |
|
||||||
|
| `git diff --check` | 성공 | 출력 없음 |
|
||||||
|
| `./gradlew :app:mergeDebugResources :app:compileDebugKotlin :app:ktlintCheck` | 실패 | 변경 범위 밖 기존 테스트 파일 line length/argument formatting 위반 |
|
||||||
|
| visual-qa / 실제 화면 조작 | 제외 | 사용자 수동 진행 요청 |
|
||||||
|
|
||||||
|
## 5. 발견 사항 요약
|
||||||
|
|
||||||
|
확정 발견 사항 없음.
|
||||||
|
|
||||||
|
| ID | 심각도 | 상태 | 제목 | 소유 Task | 후속 goal |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| - | - | - | 확정 발견 사항 없음 | - | 전환 항목 없음 |
|
||||||
|
|
||||||
|
## 6. 발견 사항 상세
|
||||||
|
|
||||||
|
확정 발견 사항 없음.
|
||||||
|
|
||||||
|
비차단 관찰: 테스트는 source 문자열 계약이므로 조건 연산자 자체를 깊게 실행 검증하지는 않는다. 다만 실제 diff의 `!= LanguageManager.LANG_JA` 조건이 요구사항을 충족하고, 기존 테스트 파일이 같은 source-contract 방식을 사용하므로 이번 변경의 차단 이슈는 아니다.
|
||||||
|
|
||||||
|
## 7. 확정 항목의 plan·goal 전환
|
||||||
|
|
||||||
|
전환 항목 없음.
|
||||||
|
|
||||||
|
## 8. 리뷰 종료 판정
|
||||||
|
|
||||||
|
| 판정 항목 | 결과 | 근거 |
|
||||||
|
|---|---|---|
|
||||||
|
| 리뷰 범위 전체 확인 | 충족 | 코드, 테스트, 문서 변경분 확인 |
|
||||||
|
| 후보 항목 판정 완료 | 충족 | 확정 발견 사항 없음 |
|
||||||
|
| 확정 항목 plan 반영 | 해당 없음 | 전환 항목 없음 |
|
||||||
|
| 보류 항목의 담당·재개 조건 기록 | 해당 없음 | 보류 항목 없음 |
|
||||||
|
| 검증 명령과 결과 기록 | 충족 | Phase 8 검증 기록에 RED/GREEN/회귀/빌드/공백/ktlint 결과 기록 |
|
||||||
|
|
||||||
|
**최종 결론:** 확정 발견 사항 없음.
|
||||||
|
|
||||||
|
**남은 항목:** visual-qa와 실제 일본어/한국어/영어 화면 확인은 사용자 수동 QA로 진행한다.
|
||||||
Reference in New Issue
Block a user