docs(main): V2 직접 진입 리뷰를 기록한다

This commit is contained in:
2026-09-18 14:49:10 +09:00
parent c261b32148
commit 48f2a0e543
2 changed files with 138 additions and 0 deletions
@@ -0,0 +1,63 @@
# Phase 1 Main V2 Direct Entry 코드 리뷰
## 1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 리뷰 대상 | Phase 1 / Task 1.1 |
| 기준 commit 또는 working tree | 현재 working tree |
| 리뷰 일자 | 2026-09-18 |
| 리뷰어 | Oracle |
| 기준 문서 | `prd.md`, `plan-task.md` |
| 리뷰 상태 | 판정 완료 |
## 2. 리뷰 목적과 범위
- 두 직접 진입 경로가 기존 부가 동작을 유지하면서 `MainV2Activity`를 사용하는지 확인했다.
- 대상 production 파일 2개, 신규 source test, PRD와 계획 문서를 검토했다.
- 레거시 Fragment, 기기·에뮬레이터 UI 검증은 범위에서 제외했다.
## 3. 실행한 검증
| 명령 또는 검증 | 결과 | 핵심 증거 |
|---|---|---|
| focused test RED | 실패 확인 | 신규 test 2개가 기존 V2 import 부재로 실패 |
| focused test GREEN | 성공 | `MainV2DirectEntrySourceTest` 2개 통과 |
| `:app:compileDebugKotlin` | 성공 | Kotlin compile 완료 |
| 전체 `:app:testDebugUnitTest` | 기존 실패 | 1,263개 중 무관한 chat source test 2개 실패 |
| `:app:ktlintCheck` | 성공 | 후속 수정 후 package underscore 위반 해소 |
| 직접 진입 source 검색 | 성공 | 대상 두 파일의 legacy `MainActivity` 직접 참조 0건 |
| `git diff --check` | 성공 | whitespace 오류 없음 |
## 4. 발견 사항 요약
확정 발견 사항 없음.
비차단 참고 사항으로 source test가 호출 순서까지 assertion으로 고정하지는 않지만, production diff에서 기존 `startActivity`/`finish` 및 `finishAffinity`/`startActivity` 순서가 유지됨을 확인했다.
## 5. plan·goal 전환
전환 항목 없음.
## 6. 리뷰 종료 판정
| 판정 항목 | 결과 | 근거 |
|---|---|---|
| 리뷰 범위 전체 확인 | 충족 | 코드·test·문서 검토 완료 |
| 후보 항목 판정 완료 | 충족 | 차단 발견 사항 없음 |
| 확정 항목 plan 반영 | 해당 없음 | 확정 발견 사항 없음 |
| 검증 명령과 결과 기록 | 충족 | `plan-task.md` Verification Log에 누적 |
**최종 결론:** 확정 발견 사항 없음. 변경 승인.
**남은 항목:** 이번 변경과 무관한 전체 unit test 2건.
## 7. 후속 ktlint 수정 검증 — 2026-09-18
- 무엇을: `live.reservation_status` package underscore 위반을 `live.reservation.status`로 수정했다.
- 왜: `:app:ktlintCheck`의 package naming 위반을 해소하기 위해서다.
- 어떻게:
- `LiveReservationPackageSourceTest` RED — 기존 package/import/manifest 참조 때문에 2개 실패.
- `LiveReservationPackageSourceTest`, `MainV2DirectEntrySourceTest`, `:app:compileDebugKotlin` — 성공.
- `:app:ktlintCheck` — 성공.
- production/manifest의 `reservation_status` package/import/manifest 참조 검색 — 0건.
@@ -0,0 +1,75 @@
# Phase 2 라이브 딥링크 지연 처리 코드 리뷰
## 1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 리뷰 대상 | Phase 2 / Task 2.1 |
| 기준 commit 또는 working tree | 현재 working tree |
| 리뷰 일자 | 2026-09-18 |
| 리뷰어 | Oracle 3명, 자동 QA, 저장소 맥락 검토 agent |
| 기준 문서 | `prd.md`, `plan-task.md` |
| 리뷰 상태 | 수정 검증 완료 |
## 2. 목적과 범위
- foreground live route 선택적 지연, loading 인계, lifecycle 정리와 인접 route 회귀를 검토한다.
- `MainV2Activity.kt`, 관련 source test, direct-entry flags와 Live entry 호출 흐름을 포함한다.
- 저장소 규칙에 따라 기기·에뮬레이터 UI 검증은 제외한다.
## 3. 실행한 검증
| 명령 | 결과 | 핵심 증거 |
|---|---|---|
| focused MainV2/Live Action unit test | 성공 | 48개 통과 |
| `:app:compileDebugKotlin` | 성공 | exit code 0 |
| `:app:ktlintCheck` | 성공 | exit code 0, 기존 deprecation warning만 존재 |
| `:app:testDebugUnitTest` | 실패 | 1,267개 중 기존 채팅 source test 2개 실패 |
| `git diff --check` | 성공 | 출력 없음 |
## 4. 발견 사항 요약
| ID | 심각도 | 상태 | 제목 | 소유 Task | 후속 goal |
|---|---|---|---|---|---|
| `REV-P2-001` | Medium | 수정 완료 | 비라이브 ID fallback 판별이 실제 router와 다름 | Task 2.R1 | `P2-R1` |
## 5. 발견 사항 상세
### REV-P2-001 — 비라이브 ID fallback 판별 불일치
- **관련 요구사항:** `ROUTE-004`
- **소유 Task:** Task 2.R1
- **상태:** 수정 완료
- **관찰:** 수정 전 `hasPositiveId()`는 문자열 ID와 Long extra 중 하나라도 양수면 참이었지만, 실제 router는 파싱 가능한 문자열 값을 우선 선택하고 파싱 실패일 때만 Long extra를 사용했다.
- **재현:** `channel_id="0"`, 양수 `EXTRA_USER_ID`, `deep_link_value="live"`, 양수 `deep_link_sub5`가 함께 있으면 판별은 non-live지만 실제 실행은 live fallback이다.
- **영향:** foreground live route가 1초 지연을 우회할 수 있다.
- **권장 조치:** 값 선택 순서를 실제 router와 같게 만들고 source regression assertion을 추가한다.
- **판정 기록:** 2026-09-18 — 목표/코드 품질 Oracle 2명이 독립적으로 동일 경계 사례를 확인해 확정했다.
- **판정 기록:** 2026-09-18 — Elvis fallback 순서로 수정하고 회귀 test를 추가한 뒤 두 Oracle 재검토에서 해결을 승인했다.
## 6. 리뷰 종료 판정
| 판정 항목 | 결과 | 근거 |
|---|---|---|
| 리뷰 범위 전체 확인 | 충족 | 5개 병렬 리뷰 완료 |
| 후보 항목 판정 완료 | 충족 | `REV-P2-001` 확정 |
| 확정 항목 plan 반영 | 충족 | Task 2.R1 / `P2-R1` |
| 검증 명령과 결과 기록 | 충족 | 위 실행 결과 |
**최종 결론:** 수정 검증 완료
**남은 항목:** 없음
## 7. 수정 후 검증 기록
### 1차 수정 검증 — 2026-09-18
- 무엇을: `REV-P2-001`의 문자열/Long ID fallback 판별을 실제 router와 일치시켰다.
- 왜: 혼합 bundle에서 실제 live route가 1초 지연을 우회할 수 있었다.
- 어떻게:
- fallback source test RED — 15개 중 신규 1개 실패.
- 수정 후 focused Phase 2 회귀 — 성공.
- `:app:compileDebugKotlin`, `:app:ktlintCheck`, `git diff --check` — 성공.
- 전체 unit test — 1,268개 중 기존 채팅 source test 2개 실패.
- 목표·코드 품질 Oracle 재검토 — 모두 PASS.
- 남은 항목: 없음.