Files

7.2 KiB

커뮤니티 댓글 직접 답글 Phase 1 리뷰

1. 리뷰 정보

항목 내용
리뷰 대상 Phase 1 / P1-T1, P1-R1, P1-GATE
기준 commit 또는 working tree e82e209300d2c30843b6a2ef2c9e126ade6bba63 기반 working tree
리뷰 일자 2026-08-06
리뷰어 Sisyphus, 독립 goal·품질·보안·컨텍스트·visual QA reviewer
기준 문서 prd.md, api-contract.md, plan-task.md
리뷰 상태 판정 완료

2. 리뷰 목적과 범위

목적

  • CCR-001~006과 Community 첫·추가 직접 답글 journey가 구현됐는지 확인한다.
  • API·schema·application mock·dependency 변경 없이 기존 2단계 댓글 경계와 권한을 유지하는지 확인한다.
  • TDD, 자동 Gate, 실제 Chromium과 문서 기록이 완료 조건과 일치하는지 판정한다.

포함 범위

  • 코드: src/features/comments/components/CommentThread.tsx
  • 테스트: src/features/comments/tests/comment-thread.test.tsx, tests/e2e/comments.spec.ts
  • 문서: CCR-001~006, Community 댓글 API Contract, P1-T1, P1-R1, P1-GATE
  • 수동 검증: Chromium mock mode, keyboard-only, 1280px, 320px, 200% zoom, CJK·수평 overflow

제외 범위

  • 실제 개발 API integration, 새 endpoint·schema·mock store, 답글 수정·삭제·pagination 정책 변경
  • 3단계 댓글, optimistic update, form 상시 노출

3. 판정 기준

심각도

심각도 기준
Blocker 보안·데이터 손실 위험, 핵심 journey 불능, 완료 판정 무효
High 확정 요구사항·API Contract 위반 또는 주요 회귀
Medium 제한 조건의 기능·접근성·복구 문제
Low 비핵심 유지보수성·문서 정합성 문제

상태

상태 의미 후속 처리
후보 근거를 발견했지만 판정 전 재현 후 상태 변경
확정 코드·test·문서로 문제 확인 회귀 Task 전환
오탐 실제 실행 경로나 요구사항 위반이 아님 판정 근거를 보존하고 종료
보류 외부 계약·환경·제품 결정 필요 담당·재개 조건 기록
수정 완료 수정과 관련 검증 완료 검증 결과 누적

4. 검토한 근거

문서와 코드

  • 요구사항: CCR-001~006
  • API Contract: 직접 답글 GET, Community 댓글 POST, 2단계 불변식
  • 계획: P1-T1, P1-R1, P1-GATE
  • 코드: CommentThread.tsxreplyActionLabel, toggleReplies(), createReply()
  • 테스트: CommentThread creates a first Community reply..., Community sheet comments keep two-level controls usable at 320px

실행 환경

OS: macOS
Node: v24.12.0
npm: 11.7.0
Browser/viewport: Playwright Chromium, 1280x900, 320x640, CSS zoom 200%
환경 변수: VITE_API_MODE=mock

실행한 검증

명령 또는 수동 검증 결과 핵심 증거
npm run test:run -- src/features/comments/tests/comment-thread.test.tsx 성공 8/8
npm run test:run -- src/features/comments 성공 15/15
npm run e2e:mock -- tests/e2e/comments.spec.ts --project=chromium 성공 3/3; 2102 빈 reply, 첫·두 답글, payload, 2단계 경계
npm run typecheck 성공 exit 0
npm run lint 성공 exit 0
npm run build:dev 성공 Vite build exit 0; 기존 500kB chunk warning만 발생
git diff --check 성공 출력 없음
실제 Chromium keyboard journey 성공 답글 action·textarea keyboard 진입, 첫·두 답글 표시, input 초기화, 중첩 action 0건
1280px·320px·200% visual QA 성공 수평 overflow 없음, CJK clipping·고아줄 없음, 독립 visual reviewer PASS

5. 발견 사항 요약

ID 심각도 상태 제목 소유 Task 후속 goal
CCR-REV-P1-001 High 오탐 E2E route fixture가 root 2102 답글을 잘못 분류한다 P1-R1 없음

확정 발견 사항 없음.

6. 발견 사항 상세

CCR-REV-P1-001 — E2E route fixture root 분류 후보

  • 심각도: High
  • 상태: 오탐
  • 관련 요구사항: CCR-002, CCR-004~005
  • 관련 계약: Community 직접 답글 GET·POST, 2단계 불변식
  • 소유 Task: P1-R1

관찰 내용

tests/e2e/comments-test-support.ts는 단일 replyRootId만 replies로 분류하지만, 필수 mock E2E에서는 이 Playwright route fixture가 응답을 소유하지 않는다.

근거

  • playwright.config.ts는 mock E2E를 VITE_API_MODE=mock으로 실행한다.
  • 앱은 렌더 전에 src/shared/mocks/browser.tssetupWorker(...)를 시작한다.
  • Browser MSW handler·store는 commentIdparentId로 root 2102 답글을 분리한다.
  • 기존 E2E route fixture를 변경하지 않은 상태에서 2102 초기 reply region의 root 댓글 0건, 첫·두 답글 각 1건, 중첩 action 0건과 Chromium 3/3을 반복 확인했다.
  • 별도 브라우저 probe에서 page.route 호출 0회와 Community mock 요청 9회를 관찰했다.

재현 또는 검증 절차

  1. VITE_API_MODE=mock으로 comments.spec.ts Chromium을 실행한다.
  2. root 2102의 답글 영역을 열고 다른 root 댓글이 없음을 확인한다.
  3. 같은 root에 첫·두 번째 답글을 등록하고 Sheet를 다시 연다.
  4. 두 답글이 region에 각 1건 표시되고 중첩 답글 action이 없음을 확인한다.

영향

필수 mock E2E와 제품 동작에는 영향이 없다. Server-mode 전용 test route helper의 일반화는 이번 기능 범위와 실행 경로 밖이다.

권장 조치

없음. 실행되지 않는 fixture를 speculative하게 변경하지 않는다.

판정 기록

  • 2026-08-06 — 코드 형태만 근거로 확정 후보로 분류했다.
  • 2026-08-06 — mock 요청 소유권, 기존 fixture 상태의 E2E, 실제 브라우저를 대조해 오탐으로 정정했다.

7. 확정 항목의 plan·goal 전환

전환 항목 없음. CCR-REV-P1-001P1-R1에서 오탐으로 판정됐다.

8. 리뷰 종료 판정

판정 항목 결과 근거
리뷰 범위 전체 확인 충족 요구사항·계약·코드·test·실제 Chromium·visual QA 확인
후보 항목 판정 완료 충족 CCR-REV-P1-001 오탐 판정
확정 항목 plan 반영 해당 없음 확정 발견 사항 없음
보류 항목의 담당·재개 조건 기록 해당 없음 보류 없음
검증 명령과 결과 기록 충족 자동·수동 검증 표와 plan-task.md Progress 기록

최종 결론: 확정 발견 사항 없음

남은 항목: 실제 개발 API integration은 이번 mock 기능 Gate 범위 밖이다.

9. 수정 후 검증 기록

1차 리뷰 후보 검증 — 2026-08-06

  • 무엇을: CCR-REV-P1-001의 실제 mock E2E 영향 여부를 검증했다.
  • 왜: 실행되지 않는 route fixture를 수정하면 범위를 불필요하게 확장할 수 있다.
  • 어떻게:
    • 기존 fixture 상태의 Chromium E2E — 3/3 성공
    • Comments Vitest — 15/15 성공
    • typecheck·lint·git diff --check — exit 0
    • 실제 Chromium·visual QA — 첫·추가 답글, keyboard, 1280px·320px·200% PASS
  • 남은 항목: 없음