diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 052edc0d..e8f9c053 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -162,7 +162,7 @@ まだ会話がありません。\nAIクリエイターと話してみましょう。 まだ会話がありません。\n好きなクリエイターにメッセージを送ってみましょう。 チャットルームに接続できませんでした - ただいま配信中 + On Air 配信中のライブをすべて見る 参加可能なライブがないか、年齢制限で入室できません。\n本人確認を行うか、チャンネルをフォローして\n配信通知を受け取ってみましょう。 無料 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 80d0effb..8de69422 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -161,7 +161,7 @@ 아직 나눈 대화가 없어요.\nAI 크리에이터와 대화를 시작해 보세요. 아직 나눈 대화가 없어요.\n좋아하는 크리에이터에게 메세지를 보내보세요. 대화방에 접속하지 못했습니다 - 지금 라이브 중 + On Air 지금 라이브 중 전체보기 현재 참여 가능한 라이브 방송이 없거나\n연령제한으로 입장이 불가능합니다.\n본인인증을 해보거나 채널을 팔로잉하고\n라이브 방송 알림을 받아보세요. 무료 diff --git a/docs/20260626_현재_진행_중인_라이브_리스트_페이지/plan-task.md b/docs/20260626_현재_진행_중인_라이브_리스트_페이지/plan-task.md index 18af82c2..b2ec7842 100644 --- a/docs/20260626_현재_진행_중인_라이브_리스트_페이지/plan-task.md +++ b/docs/20260626_현재_진행_중인_라이브_리스트_페이지/plan-task.md @@ -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`임을 재확인했다. diff --git a/docs/20260626_현재_진행_중인_라이브_리스트_페이지/prd.md b/docs/20260626_현재_진행_중인_라이브_리스트_페이지/prd.md index 2443a196..4f6b54ab 100644 --- a/docs/20260626_현재_진행_중인_라이브_리스트_페이지/prd.md +++ b/docs/20260626_현재_진행_중인_라이브_리스트_페이지/prd.md @@ -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가 성공하는 것이다. diff --git a/docs/20260626_현재_진행_중인_라이브_리스트_페이지/reviews/phase6-on-air-title-review.md b/docs/20260626_현재_진행_중인_라이브_리스트_페이지/reviews/phase6-on-air-title-review.md new file mode 100644 index 00000000..52b5535c --- /dev/null +++ b/docs/20260626_현재_진행_중인_라이브_리스트_페이지/reviews/phase6-on-air-title-review.md @@ -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`, 차단 항목 없음으로 판정됐다.