feat(home): 최근 활동 LIVE 라우팅을 추가한다
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
# Phase 16 방금 활동한 크리에이터 LIVE 라우팅 리뷰
|
||||
|
||||
## 1. 리뷰 정보
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 리뷰 대상 | Phase 16 / Task 16.1 / Phase 16 Gate |
|
||||
| 기준 commit 또는 working tree | `a1aa9c224326e4f730f715a4eba20add33329aed` + Phase 16 미커밋 working tree |
|
||||
| 리뷰 일자 | 2026-07-30 |
|
||||
| 리뷰어 | Codex |
|
||||
| 기준 문서 | `docs/20260601_메인_홈_추천_UI와_API_연동/prd.md`, `docs/20260601_메인_홈_추천_UI와_API_연동/plan-task.md`, `docs/agent-guides/build-test-style.md` |
|
||||
| 리뷰 상태 | 판정 완료 |
|
||||
|
||||
## 2. 리뷰 목적과 범위
|
||||
|
||||
### 목적
|
||||
|
||||
- Phase 16의 DTO, mapper, route, Fragment 액션 연결이 PRD의 최근 활동 `LIVE` 라우팅 요구사항을 충족하는지 확인한다.
|
||||
- 완료 체크박스와 실제 코드, 테스트, 검증 기록이 일치하는지 확인한다.
|
||||
- 기존 공통 라이브·크리에이터 액션을 우회하거나 다른 activity type을 회귀시키지 않는지 확인한다.
|
||||
|
||||
### 포함 범위
|
||||
|
||||
- 코드:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/data/HomeRecommendationModels.kt`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationMappers.kt`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/model/HomeRecommendationUiModels.kt`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt`
|
||||
- 테스트:
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt`
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLoginGuardSourceTest.kt`
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/live/action/`
|
||||
- `app/src/test/java/kr/co/vividnext/sodalive/v2/creator/action/`
|
||||
- 문서: PRD의 `방금 활동한 크리에이터 LIVE 라우팅`, `plan-task.md`의 Phase 16, Phase 16 focused test guide.
|
||||
- 수동 대조: DTO → UI model → route → 공통 액션 호출 경로와 working tree 변경 범위.
|
||||
|
||||
### 제외 범위
|
||||
|
||||
- `LiveActionCoordinator`, `CreatorAction`, `V2AccessGuard` 자체 정책의 변경 또는 재설계.
|
||||
- 실제 서버 추천 데이터와 로그인·본인인증 상태를 이용한 기기 터치 검증.
|
||||
- Phase 16 변경 경로 밖에서 관찰된 `v2.creator.channel` 테스트 안정성 수정.
|
||||
- 다른 Phase 기능의 재리뷰.
|
||||
|
||||
## 3. 판정 기준
|
||||
|
||||
### 심각도
|
||||
|
||||
| 심각도 | 기준 |
|
||||
|---|---|
|
||||
| Blocker | 보안·데이터 손실 위험, 핵심 흐름 불능, 완료 판정을 무효화하는 문제 |
|
||||
| High | 확정 요구사항·API Contract 위반 또는 주요 회귀 |
|
||||
| Medium | 제한된 조건에서 발생하는 기능·접근성·복구 문제 |
|
||||
| Low | 유지보수성, 문서 정합성 또는 비핵심 UX 문제 |
|
||||
|
||||
### 상태
|
||||
|
||||
| 상태 | 의미 | 후속 처리 |
|
||||
|---|---|---|
|
||||
| 후보 | 근거를 발견했지만 아직 재현·판정하지 않음 | 검증 후 상태 변경 |
|
||||
| 확정 | 코드·test·문서 근거로 문제가 확인됨 | `plan-task.md` 회귀 수정 Task 후보 |
|
||||
| 오탐 | 요구사항이나 실행 결과상 문제가 아님 | 근거를 남기고 종료 |
|
||||
| 보류 | 외부 계약·환경·제품 결정이 필요함 | 담당 주체와 재개 조건 기록 |
|
||||
| 수정 완료 | 수정과 관련 검증이 완료됨 | 실행 명령과 결과 연결 |
|
||||
|
||||
## 4. 검토한 근거
|
||||
|
||||
### 문서와 코드
|
||||
|
||||
- 요구사항:
|
||||
- `prd.md:159`의 `방금 활동한 크리에이터 LIVE 라우팅`
|
||||
- `plan-task.md:796`의 Phase 16
|
||||
- DTO·mapper:
|
||||
- `HomeRecommendationModels.kt:36`에서 필수 `creatorId: Long` 계약 확인.
|
||||
- `HomeRecommendationMappers.kt:44`에서 DTO의 `creatorId`가 UI model로 보존됨을 확인.
|
||||
- route:
|
||||
- `HomeRecommendationUiModels.kt:128`에서 `LiveRoom`, `CreatorChannel` route 정의 확인.
|
||||
- `HomeRecommendationUiModels.kt:138`에서 `targetId > 0L`, `targetId == null && creatorId > 0L`, invalid ID no-op 분기 확인.
|
||||
- Fragment:
|
||||
- `HomeMainFragment.kt:707`에서 `LiveRoom`은 `LiveActionCoordinator.enterLiveRoom()`, `CreatorChannel`은 `CreatorActionCommand.Profile`로 전달됨을 확인.
|
||||
- 테스트:
|
||||
- `HomeMainFragmentLayoutTest.kt:907`에서 다른 activity type route 회귀 확인.
|
||||
- `HomeMainFragmentLayoutTest.kt:931`에서 `LIVE` 정상·fallback·invalid ID 분기 확인.
|
||||
- `HomeMainFragmentLoginGuardSourceTest.kt:128`에서 기존 공통 Live/Creator Action 사용 계약 확인.
|
||||
|
||||
### 실행 환경
|
||||
|
||||
```text
|
||||
OS: macOS 26.0 (25A354), x86_64
|
||||
Java: OpenJDK 17.0.15
|
||||
Gradle: 8.14.3
|
||||
Kotlin: 2.0.21
|
||||
기준 commit: a1aa9c224326e4f730f715a4eba20add33329aed
|
||||
환경 변수: 별도 민감정보 확인 또는 출력 없음
|
||||
```
|
||||
|
||||
### 실행한 검증
|
||||
|
||||
| 명령 또는 수동 검증 | 결과 | 핵심 증거 |
|
||||
|---|---|---|
|
||||
| Phase 16 focused test와 live/creator action 회귀 `--rerun-tasks` | 성공 | `BUILD SUCCESSFUL in 7m 19s`, 39 tasks executed |
|
||||
| Phase 16 focused test와 live/creator action 회귀 최종 재실행 | 성공 | 116 tests, failures 0, errors 0, `BUILD SUCCESSFUL in 24s` |
|
||||
| `./gradlew :app:compileDebugKotlin :app:ktlintCheck` | 성공 | `BUILD SUCCESSFUL in 5s` |
|
||||
| `./gradlew tasks --all --console=plain` | 성공 | 문서 변경 후 Gradle task 유효성 확인, `BUILD SUCCESSFUL in 3s` |
|
||||
| `git diff --check` | 성공 | 출력 없음 |
|
||||
| `git diff --name-only`와 Phase 16 Files 대조 | 성공 | 이 리뷰 보고서를 제외하면 production 4개, test 2개, 승인된 PRD·plan·test guide만 변경됨 |
|
||||
| `./gradlew :app:testDebugUnitTest` | 실패 | 1186 tests 중 Phase 16 변경 경로 밖 `v2.creator.channel` 2건 실패 |
|
||||
| 전체 suite 실패 3개 test method 개별 격리 실행 | 성공 | 각 `BUILD SUCCESSFUL`; 전체 실행의 실패가 개별 실행에서는 재현되지 않음 |
|
||||
| 실제 추천 `LIVE` item 기기 터치 | 불가 | 서버 추천 데이터와 사용자 상태가 필요한 경로이므로 route 단위 테스트와 공통 액션 source 계약으로 대체 |
|
||||
|
||||
전체 suite에서 처음 실패한 테스트는 아래 2건이다.
|
||||
|
||||
- `CreatorChannelHomeViewModelTest > 채널 후원 성공 시 보유 can보다 큰 금액 차감은 0으로 보정한다`
|
||||
- `CreatorChannelCommunityDetailViewModelTest > 채널 작성자는 유료 미구매 게시물도 이미지와 오디오 URL을 볼 수 있다`
|
||||
|
||||
두 class만 재실행했을 때는 위 2건이 통과하고 같은 class의 다른 후원 테스트 1건이 실패했으며, 관련 3개 method를 각각 격리 실행하면 모두 통과했다. Phase 16 working tree에는 `v2.creator.channel` production/test 변경이 없다. 따라서 이 결과는 Phase 16 회귀 근거로 사용하지 않고, 범위 밖의 비결정적 전체 suite 관찰로 남긴다.
|
||||
|
||||
## 5. 발견 사항 요약
|
||||
|
||||
확정 발견 사항 없음.
|
||||
|
||||
Phase 16 요구사항 위반, 공통 접근 정책 우회, 다른 activity type route 회귀, 변경 범위 이탈은 확인되지 않았다.
|
||||
|
||||
## 6. 발견 사항 상세
|
||||
|
||||
확정 발견 사항 없음.
|
||||
|
||||
## 7. 확정 항목의 plan·goal 전환
|
||||
|
||||
전환 항목 없음. Phase 16에 추가할 신규 회귀 수정 Task와 create_goal objective가 없다.
|
||||
|
||||
## 8. 리뷰 종료 판정
|
||||
|
||||
| 판정 항목 | 결과 | 근거 |
|
||||
|---|---|---|
|
||||
| 리뷰 범위 전체 확인 | 충족 | Phase 16 문서, production 4개, test 2개, 공통 action 호출 경로 대조 완료 |
|
||||
| 후보 항목 판정 완료 | 충족 | Phase 16 확정 발견 사항 없음 |
|
||||
| 확정 항목 plan 반영 | 해당 없음 | 전환할 확정 review 항목 없음 |
|
||||
| 보류 항목의 담당·재개 조건 기록 | 해당 없음 | Phase 16 보류 항목 없음 |
|
||||
| 검증 명령과 결과 기록 | 충족 | focused 116 tests, compile, ktlint, diff 검증과 전체 suite 관찰 기록 |
|
||||
|
||||
**최종 결론:** 확정 발견 사항 없음.
|
||||
|
||||
**남은 항목:** Phase 16 수정 항목은 없다. 전체 unit suite는 범위 밖의 비결정적 `v2.creator.channel` 실패로 완전한 green 상태가 아니며, 해당 영역을 별도 리뷰할 때 테스트 격리성과 `SharedPreferenceManager` 전역 상태 사용을 재현 조건으로 점검할 수 있다.
|
||||
|
||||
## 9. 수정 후 검증 기록
|
||||
|
||||
수정 항목이 없어 해당 없음.
|
||||
Reference in New Issue
Block a user