fix(live): 전체 라이브 제목을 On Air로 통일한다
This commit is contained in:
@@ -339,3 +339,45 @@
|
||||
|
||||
- 2026-07-06 Phase 5 검증: 홈 추천 라이브 클릭 source test를 RED 상태로 먼저 확인한 뒤, `HomeMainFragment`에서 로그인 guard, 상세 조회, `roomDetail.isAdult` 기반 성인 guard, 기존 v2 `CreatorChannelLiveCoordinator` 입장 위임을 연결했다. 이후 `HomeMainFragmentLoginGuardSourceTest`, `HomeOnAirLiveEntryPolicyTest`, `compileDebugKotlin`, `git diff --check`가 모두 통과했다.
|
||||
- 2026-07-06 Phase 5 리뷰 반영: 코드 품질 리뷰에서 `getRoomDetail` 콜백 lifecycle guard 부재와 여러 ViewModel의 `LoadingDialog` 직접 제어 race가 지적되어, 콜백 초입에 `if (!isAdded || view == null) return@getRoomDetail`를 추가하고 recommendation/ranking/following/live entry loading state를 `updateLoadingDialog()`로 통합했다. 이후 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLoginGuardSourceTest" --no-daemon`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.live.onair.HomeOnAirLiveEntryPolicyTest" --no-daemon`, `./gradlew :app:compileDebugKotlin --no-daemon`, `git diff --check`가 모두 통과했다.
|
||||
|
||||
---
|
||||
|
||||
### Phase 6: 전체 라이브 리스트 상단 제목 정정
|
||||
|
||||
**Phase 결과:** 메인 홈 추천 라이브 섹션의 `전체`에서 진입한 화면 상단에 locale과 관계없이 `On Air`가 표시된다.
|
||||
|
||||
#### Task 6.1: `live_now` locale 리소스 정정
|
||||
|
||||
**Goal 실행 `P6-T1`:** 기존 화면 연결을 유지하면서 기본·영어·일본어 `live_now` 값을 `On Air`로 통일한다.
|
||||
|
||||
- **시작 조건:** `prd.md` §13 승인과 `HomeOnAirLiveActivity`의 `R.string.live_now` 소비 확인.
|
||||
- **완료 증거:** 세 locale 리소스 값 대조, debug resource merge, focused 회귀 테스트, `git diff --check` 결과.
|
||||
- **범위 밖:** Activity/layout/navigation 변경, 홈 추천 섹션 제목 변경, 레거시 `screen_live_now_all_title` 변경.
|
||||
- **TDD 예외 사유:** 실행 로직이나 분기가 없는 UI 카피 전용 변경이며 영어 리소스는 이미 목표값이다. 신규 source test는 XML 구현 문자열을 중복 고정하므로 추가하지 않는다.
|
||||
- **대체 검증 방법:** 변경 전 기본·일본어 값이 각각 `지금 라이브 중`, `ただいま配信中`임을 확인하고, 변경 후 기본·영어·일본어 값을 직접 대조한 뒤 resource merge와 기존 진입 경로 회귀 테스트를 실행한다.
|
||||
|
||||
**Files:**
|
||||
- Modify: `app/src/main/res/values/strings.xml`
|
||||
- Modify: `app/src/main/res/values-ja/strings.xml`
|
||||
- Verify unchanged: `app/src/main/res/values-en/strings.xml`
|
||||
- Verify unchanged: `app/src/main/java/kr/co/vividnext/sodalive/v2/live/onair/HomeOnAirLiveActivity.kt`
|
||||
|
||||
- [x] 기본 locale의 `live_now` 값을 `On Air`로 변경한다.
|
||||
- [x] 일본어 locale의 `live_now` 값을 `On Air`로 변경한다.
|
||||
- [x] 영어 locale과 세 locale의 최종값이 모두 `On Air`인지 확인한다.
|
||||
- [x] `./gradlew --no-daemon :app:mergeDebugResources`를 실행한다.
|
||||
- [x] `./gradlew --no-daemon :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.main.home.HomeMainFragmentLoginGuardSourceTest" --tests "kr.co.vividnext.sodalive.v2.live.onair.HomeOnAirLiveEntryPolicyTest"`를 실행한다.
|
||||
- [x] 가능한 연결 기기/에뮬레이터에서 진입 화면 상단 제목을 확인하고, 불가능하면 사유를 Verification Log에 기록한다.
|
||||
- [x] `git diff --check`와 변경 파일 범위를 확인한다.
|
||||
|
||||
#### Phase 6 검증 시나리오
|
||||
- Happy path: 기본 locale에서 `HomeOnAirLiveActivity`가 소비하는 `live_now`의 병합값이 정확히 `On Air`다.
|
||||
- Edge: 영어·일본어 locale에서도 `live_now`가 정확히 `On Air`이며 빈 목록/오류 상태와 독립적인 toolbar 설정은 유지된다.
|
||||
- Adjacent regression: 홈 추천 `전체` 진입 경로와 `screen_live_now_all_title` 값은 변경되지 않는다.
|
||||
|
||||
## Verification Log 추가 기록
|
||||
- 2026-08-03 Phase 6 계획: 기존 PRD §7의 `On Air` 제목 요구사항과 구현의 기본·일본어 `live_now` 값 불일치를 확인했다. 사용자 승인에 따라 리소스 값만 정정하고 화면 코드와 레거시 제목은 유지한다.
|
||||
- 2026-08-03 Phase 6 구현: 기본·일본어 `live_now` 값을 `On Air`로 정정했고 영어값이 이미 `On Air`임을 확인했다. `screen_live_now_all_title`은 세 locale 모두 기존값을 유지했다.
|
||||
- 2026-08-03 Phase 6 자동 검증: `xmllint --noout` 성공, `./gradlew --no-daemon :app:mergeDebugResources` BUILD SUCCESSFUL, focused 2개 테스트 클래스 BUILD SUCCESSFUL, 전체 `:app:testDebugUnitTest` BUILD SUCCESSFUL, `:app:assembleDebug` BUILD SUCCESSFUL을 확인했다. 병합 산출물의 기본·일본어 `live_now`도 `On Air`였다.
|
||||
- 2026-08-03 Phase 6 실제 화면 검증: `Pixel_9_Pro` AVD에 debug APK를 설치하고 정상 홈 화면을 열었으나 현재 API 응답에 라이브 항목이 없어 `전체` 진입점이 렌더링되지 않았다. 내부 Activity 직접 실행은 `android:exported=false`로 거부됐고, 일회성 계측 QA는 첫 시도에서 DEX 공백 메서드명 제약, 두 번째 시도에서 로그인 화면 전환으로 Activity가 종료돼 assertion 전에 실패했다. 임시 계측 테스트는 제거했으며 대상 화면 스크린샷 검증은 미완료로 기록한다.
|
||||
- 2026-08-03 Phase 6 리뷰 반영: Oracle 리뷰 `REV-P6-001`에서 실제 `git diff --check` 성공과 미완료 체크박스의 문서 불일치를 확인했다. 체크박스를 완료로 정정했고 프로덕션 변경이 리소스 2개 각 1줄뿐이며 기본·영어·일본어 `live_now`가 모두 `On Air`임을 재확인했다.
|
||||
|
||||
@@ -156,3 +156,11 @@ data class HomeOnAirLiveResponse(
|
||||
- 로그인 통과 후 `LiveViewModel.getRoomDetail(roomId)`를 호출하고, 상세 응답의 `isAdult == true`이면 `requiresAdultContentAccess = true`로 성인 인증/성인 콘텐츠 설정 guard를 한 번 더 통과한 뒤 입장한다.
|
||||
- 실제 입장 분기는 기존 `LiveFragment.enterLiveRoom`과 동일한 `manager.id`, `price`, `isPaid`, `isPrivateRoom`, `beginDateTimeUtc` 기준을 따른다.
|
||||
- 기존 레거시 `LiveFragment`, `LiveViewModel`, `LiveRepository`는 직접 수정하지 않는다.
|
||||
|
||||
---
|
||||
|
||||
## 13. Follow-up: 전체 라이브 리스트 상단 제목 정정
|
||||
- 메인 홈 추천 탭 최상단 라이브 섹션의 `전체`를 터치해 여는 `HomeOnAirLiveActivity` 상단 제목은 locale과 관계없이 정확히 `On Air`로 표시한다.
|
||||
- 기존 `R.string.live_now` 연결, 화면 구조, 뒤로가기, 목록 상태와 라이브 입장 동작은 유지한다.
|
||||
- 홈 추천 섹션 제목과 레거시 `screen_live_now_all_title`은 변경하지 않는다.
|
||||
- 성공 기준은 기본·영어·일본어 리소스의 `live_now` 값이 모두 `On Air`이고 debug resource merge가 성공하는 것이다.
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
# Phase 6 On Air 제목 변경 리뷰
|
||||
|
||||
## 1. 리뷰 정보
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 리뷰 대상 | Phase 6 / Task 6.1 |
|
||||
| 기준 commit 또는 working tree | `dd4a5167a9e9d6e55fd0629534342e8df66fe3f5` 기준 working tree |
|
||||
| 리뷰 일자 | 2026-08-03 |
|
||||
| 리뷰어 | Oracle |
|
||||
| 기준 문서 | `prd.md` §13, `plan-task.md` Phase 6 |
|
||||
| 리뷰 상태 | 수정 검증 완료 |
|
||||
|
||||
## 2. 리뷰 목적과 범위
|
||||
|
||||
- `HomeOnAirLiveActivity` 상단 제목이 locale과 관계없이 정확히 `On Air`인지 확인한다.
|
||||
- 기본·영어·일본어 리소스, 기존 Activity 바인딩, 인접 레거시 제목과 문서 추적성을 검토한다.
|
||||
- 화면 구조, 내비게이션, API와 라이브 입장 로직은 변경 대상에서 제외한다.
|
||||
|
||||
## 3. 판정 기준
|
||||
|
||||
- 확정 PRD와 구현이 일치해야 한다.
|
||||
- 프로덕션 변경은 필요한 locale 리소스에만 한정해야 한다.
|
||||
- 자동 검증 결과와 `plan-task.md` 체크박스가 일치해야 한다.
|
||||
|
||||
## 4. 검토한 근거
|
||||
|
||||
- `HomeOnAirLiveActivity.kt:51`의 `R.string.live_now` 바인딩.
|
||||
- `values/strings.xml:164`, `values-en/strings.xml:165`, `values-ja/strings.xml:165`의 `On Air` 값.
|
||||
- 세 locale의 `screen_live_now_all_title` 기존값 유지.
|
||||
- `mergeDebugResources`, 전체 `testDebugUnitTest`, `assembleDebug`, `git diff --check` 성공.
|
||||
- `Pixel_9_Pro` AVD 실제 화면 검증 제한과 제거된 일회성 계측 QA 기록.
|
||||
|
||||
## 5. 발견 사항 요약
|
||||
|
||||
| ID | 심각도 | 상태 | 제목 | 소유 Task | 후속 goal |
|
||||
|---|---|---|---|---|---|
|
||||
| `REV-P6-001` | Low | 수정 완료 | 성공한 diff 검증 체크박스가 미완료로 남음 | `P6-T1` | 없음 |
|
||||
|
||||
## 6. 발견 사항 상세
|
||||
|
||||
### REV-P6-001 — 검증 기록과 체크박스 불일치
|
||||
|
||||
- **관찰:** `git diff --check`는 성공했지만 `plan-task.md`의 해당 체크박스가 미완료였다.
|
||||
- **영향:** 제품 동작 영향은 없으나 Phase 6 완료 추적성이 실제 검증과 불일치했다.
|
||||
- **조치:** 체크박스를 완료로 정정하고 Oracle 재검토 대상으로 등록했다.
|
||||
|
||||
## 7. plan·goal 전환
|
||||
|
||||
- 코드 수정이나 회귀 테스트가 필요한 확정 항목이 아니므로 신규 회귀 수정 Task와 goal은 만들지 않는다.
|
||||
|
||||
## 8. 리뷰 종료 판정
|
||||
|
||||
| 판정 항목 | 결과 | 근거 |
|
||||
|---|---|---|
|
||||
| 리뷰 범위 전체 확인 | 충족 | 리소스, 소비처, 문서, 검증 결과 확인 |
|
||||
| 확정 항목 반영 | 충족 | `REV-P6-001` 체크박스 정정 |
|
||||
| 검증 명령과 결과 기록 | 충족 | `plan-task.md` Verification Log |
|
||||
|
||||
**최종 결론:** 수정 검증 완료
|
||||
|
||||
**남은 항목:** 대상 화면 스크린샷은 라이브 데이터 및 로그인 상태 제약으로 확보하지 못했으며 `plan-task.md`에 사유를 기록했다.
|
||||
|
||||
## 9. 수정 후 검증 기록
|
||||
|
||||
- 2026-08-03: `git diff --check` 성공과 변경 범위가 리소스 2개 및 작업 문서로 제한됨을 재확인했다.
|
||||
- 2026-08-03: Oracle 재검토 결과 `VERDICT: APPROVE`, 차단 항목 없음으로 판정됐다.
|
||||
Reference in New Issue
Block a user