From 48f2a0e543e37002f1c6854efd62728260326117 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 18 Sep 2026 14:49:10 +0900 Subject: [PATCH] =?UTF-8?q?docs(main):=20V2=20=EC=A7=81=EC=A0=91=20?= =?UTF-8?q?=EC=A7=84=EC=9E=85=20=EB=A6=AC=EB=B7=B0=EB=A5=BC=20=EA=B8=B0?= =?UTF-8?q?=EB=A1=9D=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../phase1-main-v2-direct-entry-review.md | 63 ++++++++++++++++ .../phase2-live-deeplink-deferral-review.md | 75 +++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 docs/20260918_레거시_메인_직접_진입_v2_전환/reviews/phase1-main-v2-direct-entry-review.md create mode 100644 docs/20260918_레거시_메인_직접_진입_v2_전환/reviews/phase2-live-deeplink-deferral-review.md diff --git a/docs/20260918_레거시_메인_직접_진입_v2_전환/reviews/phase1-main-v2-direct-entry-review.md b/docs/20260918_레거시_메인_직접_진입_v2_전환/reviews/phase1-main-v2-direct-entry-review.md new file mode 100644 index 00000000..c8396786 --- /dev/null +++ b/docs/20260918_레거시_메인_직접_진입_v2_전환/reviews/phase1-main-v2-direct-entry-review.md @@ -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건. diff --git a/docs/20260918_레거시_메인_직접_진입_v2_전환/reviews/phase2-live-deeplink-deferral-review.md b/docs/20260918_레거시_메인_직접_진입_v2_전환/reviews/phase2-live-deeplink-deferral-review.md new file mode 100644 index 00000000..b9376487 --- /dev/null +++ b/docs/20260918_레거시_메인_직접_진입_v2_전환/reviews/phase2-live-deeplink-deferral-review.md @@ -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. +- 남은 항목: 없음.