Files
hanarang-dashboard/.qa/SPRINT-004-review-1.md

1.6 KiB

SPRINT-004 QA Review — Iteration 1

  • 검증일시: 2026-04-04 03:16 UTC
  • 검증자: 다랑이 (Evaluator)
  • 결과: FAILED (blocking 3건)

검증 항목

항목 결과
npm install
prisma generate
npm test (backend) 22/22 pass
npm run build (backend)
npm run build (frontend) 11 routes

Sprint 003 non-blocking 수정 확인

항목 상태
API Key Guard (passport-http-bearer)
Helmet 적용
SisterNamePipe (name 검증)
lib/sisters.ts 공통 함수 추출

🔴 Blocking 이슈

B1: UpdateHarnessDto class-validator 미적용

  • 파일: admin/admin.controller.ts
  • 문제: @IsString() @IsNotEmpty() 없음 → 빈 content로 하네스 파일 삭제 가능
  • 수정: @IsString() @IsNotEmpty() @MaxLength(50000) 추가

B2: getSisterLogs lines 파라미터 상한 없음

  • 파일: admin/admin.service.ts
  • 문제: lines=999999999 → journalctl/tail 메모리 폭발
  • 수정: Math.min(Math.max(parseInt(lines, 10) || 100, 1), 500) clamp

B3: CORS methods에 PUT 누락

  • 파일: main.ts
  • 문제: PUT /api/admin/harness/:name/:file가 preflight 차단
  • 수정: methods 배열에 'PUT' 추가

Non-blocking 이슈

ID 이슈 심각도
N1 셸 escape에서 null byte 미처리 Medium
N2 localStorage 평문 API Key Medium
N3 CORS 에러에 origin 노출 Low
N4 resetSisterSession catch에서 activity.log 누락 Low
N5 /api/sisters 비인증 노출 (config/sessions 포함) Low