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

2.6 KiB

SPRINT-005 QA Review — Iteration 1 (최종 Sprint)

  • 검증일시: 2026-04-04 03:33 UTC
  • 검증자: 다랑이 (Evaluator)
  • 결과: PASSED

검증 항목

항목 결과
git clone + checkout
npm install (BE/FE)
prisma generate
npm test (backend) 22/22 pass
npm run build (backend)
npm run build (frontend) 12 routes

설계 대조

설계 항목 일치
CostLog 모델 + 인덱스
GET /api/admin/costs (period=day/week/month)
POST /api/admin/costs/record/:name
@UseGuards(ApiKeyGuard) on costs API
WebSocket Gateway (/ws namespace)
EventsScheduler 30초 브로드캐스트
sisters:update + activity:new 이벤트
ActivityService 실시간 연동
/admin/costs 비용 대시보드 (BarChart+요약)
기간 필터 (day/week/month)
FE useSocket 훅
메인 대시보드 실시간 반영

Sprint 004 non-blocking 수정 확인

항목 상태
null byte 방지 (셸 escape)

Non-blocking 이슈

코드 품질 (code-reviewer)

ID 이슈 심각도
N1 WebSocket Gateway 인증 없음 — handleConnection에 token 검증 추가 권장 Medium
N2 useSocket stale closure — useRef 패턴으로 개선 권장 Low
N3 recordCosts python3 의존 — jq 또는 Node.js 대안 권장 Low
N4 estimatedUsd Float 정밀도 — Decimal 또는 정수(cents) 저장 권장 Low
N5 MODEL_PRICING 하드코딩 — config/DB 분리 권장 Low
N6 recordAll Promise.all → Promise.allSettled 권장 Low
N7 EventsScheduler setInterval → setTimeout 재스케줄링 권장 Low
N8 WebSocket + REST 이중 폴링 — connected 시 간격 조절 권장 Low
N9 POST record/:name 응답 body 없음 — {recorded: true} 반환 권장 Low

보안 감사 (security-auditor)

ID 이슈 심각도
SEC-001 WebSocket Gateway 무인증 — origin/token 검증 추가 권장 Medium
SEC-002 lodash 의존성 취약점 (Prototype Pollution) — @nestjs/config 업그레이드 권고 High (실제 악용 Low)

판정 근거

  • 테스트/빌드 전부 통과
  • 설계 문서와 코드 일치
  • blocking 0건 (code-reviewer B1~B3 재검증 후 non-blocking 하향)
  • CostLog API 인증 적용, CORS 일관, Helmet, ValidationPipe 등 보안 기반 양호
  • WebSocket 인증은 내부망 대시보드 특성상 non-blocking으로 판정