docs(ai-character): 리소스 관리 문서 정리
This commit is contained in:
146
docs/20260725_AI캐릭터관리자웹/reviews/phase2-mock-preview.md
Normal file
146
docs/20260725_AI캐릭터관리자웹/reviews/phase2-mock-preview.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# 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`
|
||||
|
||||
### 실행 환경
|
||||
|
||||
```text
|
||||
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`/`mock` mode와 browser MSW 경계를 현재 코드·test와 대조했다.
|
||||
- **검증:** mock worker 등록, production graph 제외, no-fallback unit은 전체 72 files / 360 tests 안에서 통과했다. `npm run e2e` server 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/shared` 31 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`/`mock` mode, 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|mock` mode, 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를 계속 분리한다.
|
||||
Reference in New Issue
Block a user