8.5 KiB
8.5 KiB
Phase 2 Mock Preview 코드 리뷰·QA
1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 리뷰 대상 | Phase 2 / browser MSW, mock session, preview shell |
| 기준 commit 또는 working tree | dd30e36323543e8f60e9983326503653e8001f12, 2026-07-31 종합 재점검 당시 사용자 변경을 포함한 current working tree |
| 리뷰 일자 | 2026-07-31 |
| 리뷰어 | Codex |
| 기준 문서 | prd.md, api-contract.openapi.json 2.3.0, plan-task.md |
| 리뷰 상태 | 판정 완료 |
2. 리뷰 목적과 범위
목적
- mock/server mode 경계, mock 인증, fixture 보안과 preview shell의 현재 동작을 검증한다.
- mock 구현이 실제 OpenAPI operation과 분리 모드 원칙을 유지하는지 확인한다.
포함 범위
- 코드:
src/shared/mocks, mock bootstrap과 preview shell - 테스트: mock mode boundary, preview shell, storage, 전체 mock Gate
- 문서:
MOCK-*,P2-*, OpenAPI implemented operation - 수동 검증: handler와 API base URL 구성 정적 대조
제외 범위
- 도메인별 mock store 의미 검증은 각 해당 Phase에서 판정
- 외부 서버와 mock fixture의 데이터 동일성 보증
3. 판정 기준
심각도는 Blocker, High, Medium, Low, 상태는 후보, 확정, 오탐, 보류, 수정 완료를 사용한다. runtime fallback, 비밀정보 저장과 계약 밖 handler를 중점 확인했다.
4. 검토한 근거
문서와 코드
- 요구사항:
MOCK-001~MOCK-005, PRD §13 - 계획:
P2-T1~P2-GATE - 코드·테스트:
src/shared/mocks/**,tests/e2e/mock-mode-boundary.spec.ts,mock-preview-shell.spec.ts,error-mapping.spec.ts - 계약 점검: OpenAPI 25 paths, 37 operations, 전부
x-implementation-status=implemented
실행 환경
macOS 26.0 / Node v24.12.0 / npm 11.7.0
VITE_API_MODE=mock / Playwright 4 projects
실행한 검증
| 명령 또는 수동 검증 | 결과 | 핵심 증거 |
|---|---|---|
npm run test:run |
성공 | 72 files, 354 tests passed |
npm run e2e:mock |
실패 | 201 passed, 22 skipped, 5 failed |
| error-mapping 실패 분석 | 완료 | 4개 프로젝트 모두 과거 origin 사용; REV-P0-004로 귀속 |
| WebKit Series 768px focused 재실행 | 성공 | 1 passed, timeout 비재현 |
| mock preview·storage 관련 E2E | 성공 | preview login/logout, MSW 등록, secret/file body 비영구 저장 test 통과 |
5. 발견 사항 요약
확정 발견 사항 없음.
전체 mock Gate의 origin 실패는 Phase 0 설정·문서·test 기준 불일치이므로 REV-P0-004에서 관리한다.
6. 발견 사항 상세
Phase 2 자체의 신규 확정 항목은 없다. browser MSW는 명시적 mock mode에서만 등록되고 server mode runtime 404 fallback은 사용하지 않으며, mock preview session과 storage 보안 test가 통과했다.
7. 확정 항목의 plan·goal 전환
전환 항목 없음. Phase 2 신규 회귀 Task를 추가하지 않았다.
8. 리뷰 종료 판정
| 판정 항목 | 결과 | 근거 |
|---|---|---|
| 리뷰 범위 전체 확인 | 충족 | handler·bootstrap·test·계약 대조 |
| 후보 항목 판정 완료 | 충족 | 신규 후보 없음 |
| 확정 항목 plan 반영 | 해당 없음 | 확정 항목 없음 |
| 보류 항목의 담당·재개 조건 기록 | 해당 없음 | 보류 없음 |
| 검증 명령과 결과 기록 | 충족 | §4 |
최종 결론: 확정 발견 사항 없음
남은 항목: Phase 2 자체 신규 항목 없음. 전체 mock Gate 복구는 P0-R2에 귀속한다.
9. 수정 후 검증 기록
이번 리뷰에서 수정한 항목 없음.
10. 2차 점검 결과 — 2026-07-30
- explicit mock mode Chromium matrix 57 tests가 통과했고 browser MSW 등록·server no-fallback 경계가 유지됐다.
- Phase 2 신규 발견은 없다. 도메인 mock 의미 불일치는 각 소유 Phase의 신규 Task로만 기록했다.
11. 2026-07-31 재점검
- 기준: OpenAPI 2.3.0의 25 paths / 37 implemented operations, explicit
server/mockmode와 browser MSW 경계를 현재 코드·test와 대조했다. - 검증: mock worker 등록, production graph 제외, no-fallback unit은 전체 72 files / 360 tests 안에서 통과했다.
npm run e2eserver allowlist도 36 passed였다. - 판정: mock fixture/handler의 Phase 2 기반에서 신규 계약 위반은 확인되지 않았다. 도메인별 crop·mutation 결함은 각 소유 Phase에 등록했다.
- 교차 Phase: 당시 Mobile Safari 장시간 실행 실패 후보는 focused 반복에서 재현되지 않았고, 이후 지원 project 축소로 현재 Task에서 제외했다.
- 신규 Task: 없음.
12. 최종 Phase별 점검 — 2026-07-31
- 검토 범위: explicit
server/mock선택, production mock 거부, browser MSW 등록·fixture store·no-fallback 경계를MOCK-001~009와 대조했다. - 실행 증거:
src/shared31 files / 117 tests, server E2E 18 tests, mock Chromium matrix 57 tests 통과. OpenAPI JSON도 parse 성공했고 현재 계약은 25 paths / 37 operations다. - 판정: Phase 2 기반과 실제 Page/API adapter를 공유하는 mock 경계에서 확정 신규 발견 사항 없음.
- 남은 위험: 실제 개발 API 수동 QA는 mock 성공과 별도 상태로 유지한다.
- 신규 Task: 없음.
13. 종합 재점검 — 2026-07-31
- 검토 범위: explicit
server/mockmode, browser MSW 등록·unhandled request 차단, OpenAPI 2.3.0 fixture/handler 경계를 현재 Page·adapter와 재대조했다. - 실행 증거: OpenAPI JSON parse 및 25 paths / 37 operations 집계 성공. exact
npm run e2e:mock은 현재 구성의 Chromium·Mobile Chrome에서 109 passed / 5 skipped, exit 0이었다. - 판정: Phase 2 소유의 확정 신규 발견 사항 없음.
- 교차 Phase: 공용 crop 문제는
REV-P1-016~017/P1-R10~R11, 지원 browser project 축소는REV-P9-007/P9-R7에만 등록한다. - 남은 위험: mock 성공은 실제 개발 API integration 증거가 아니다. WebKit 계열 mock Gate는 현재 지원 범위에서 제외한다.
- 신규 Phase 2 Task: 없음.
14. 요청 기준 재리뷰 — 2026-07-31
- 검토 범위: explicit server/mock mode, browser MSW, no-auto-fallback, production 차단, README·script contract와 4-project mock matrix.
- 실행 증거:
npm run e2e:mock은 Chromium 52, WebKit 44, Mobile Chrome 47, Mobile Safari 43으로 총 186 passed / 22 skipped / 0 failed.npm run e2e:mock -- --list --project=chromium은 인자를 전달해 52 tests를 정상 수집했다. - 판정: runtime mode 경계와 mock handler에는 신규 결함이 없다. 다만 전체 unit에서
mode-boundary.test.ts와mock-preview-docs.test.ts가 현재 wrapper/README 불일치로 2건 실패했다. - 소유 판정: root cause가
P9-R7의 browser Gate 복원 변경이므로REV-P9-008/P9-R8에 전환하고 Phase 2 Task를 중복 추가하지 않는다. - 남은 위험: mock 성공은 실제 개발 API integration 완료 증거가 아니다.
15. 최종 재검증 — 2026-07-31
- 검토 범위: explicit server/mock mode, browser MSW 등록, production 차단, no-auto-fallback과 4-project fixture/handler 흐름.
- 실행 증거: exact
npm run e2e:mock은 Chromium 52, WebKit 44, Mobile Chrome 47, Mobile Safari 43으로 186 passed / 22 skipped / 0 failed였다. 전체 unit 394 tests와 server E2E 36 tests도 통과했다. - 판정: Phase 2 소유의 확정 신규 발견 사항 없음. 기존
REV-P9-008은 수정 완료 상태다. - 남은 위험: mock 성공은 실제 개발 API integration 증거가 아니다.
- 신규 Phase 2 Task: 없음.
16. 2026-07-31 문서 기준 재리뷰
- 검토 범위: explicit
server|mockmode, browser MSW 등록·fixture store, production mock 차단, no-auto-fallback, 4-project Playwright 구성을MOCK-001~009·OpenAPI와 대조했다. - 실행 증거: OpenAPI 25 paths / 37 implemented operations·schema ref 검사,
typecheck·lint·개발/운영 build, server E2E 36 tests가 통과했다. 전체 unit 5 failed / 392 passed는REV-P9-009/P9-R9로 분리했다. bare mock E2E는 Chromium 52 passed 후 WebKit main 2 failed / 32 passed / 7 skipped로 중단됐고 동일 2-test focused는 통과해REV-P9-010/P9-R10의 browser Gate 비결정성으로 분리했다. - 판정: Phase 2 mock/server 경계·handler 소유의 확정 신규 발견 사항 없음. 후보·오탐·보류 0건, 신규 Phase 2 Task 없음.
- 남은 위험: mock 통과는 실제 개발 API integration 증거가 아니므로 server 수동 QA를 계속 분리한다.