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

2.6 KiB

SPRINT-001 QA Review — Iteration 1

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

검증 항목

항목 결과
npm install (backend)
npm install (frontend)
prisma generate
npm test (backend) 5/5 pass
npm run build (backend)
npm run build (frontend)
FE 서버 실행 (port 3004)
HTML SSR 렌더링 확인 4자매 카드 렌더링

설계 대조

설계 항목 일치
모노레포 구조 (frontend/ + backend/)
Prisma 스키마 5개 테이블
SisterConfig 시드 4자매
GET /health → {status:"ok"}
GET /api/sisters → 4자매 상태
SSH graceful fallback
Next.js + styled-components SSR
SisterCard glassmorphism
상태별 border 색상 (online=#00E676 등)
Sidebar 접이식
다크 테마 색상
BE 포트 3005
FE 포트 3004

Non-blocking 이슈

코드 품질 (code-reviewer)

ID 이슈 심각도
N1 SSH readyTimeout 환경변수화 권장 Low
N2 SSH_KEY_PATH 기본값 나랑이 경로 하드코딩 — fallback 제거하고 미설정 시 throw 권장 Medium
N3 API 응답에 내부 IP 노출 Low
N4 theme.ts 정의됐으나 미사용, 색상 하드코딩 Low
N5 Sidebar collapsed 시 MainContent margin-left 미연동 Medium
N6 npm audit 취약점 7개 (4 moderate, 3 high) High
N7 SshService 에러에 민감정보 포함 가능 — 커스텀 에러 래핑 권장 Medium
N8 폴링 간격 30초 하드코딩 Low
N9 layout.tsx에서 styled-components 서버 컴포넌트 사용 — 빌드는 통과하나 LayoutShell 분리 권장 Low

보안 감사 (security-auditor)

ID 이슈 심각도
S1 CORS 무제한 — origin 화이트리스트 필요 Medium
S2 API 인증 없음 (MVP 허용, Sprint-002에서 추가 권고) Medium
S3 DATABASE_URL 빈 문자열 fallback — 미설정 시 즉시 throw 필요 Medium
S4 seed.ts/mock에 내부 IP 하드코딩 (public repo 전환 시 주의) Low
S5 console.log 대신 NestJS Logger 사용 권고 Low

판정 근거

  • 모든 빌드/테스트 통과
  • 설계 문서와 코드 일치
  • blocking 이슈 없음 (code-reviewer 지적 B1~B3는 재검증 결과 Prisma 7 + Next.js 16에서 정상 동작 확인)
  • non-blocking 이슈는 Sprint-002 초기에 해결 권장 (특히 npm audit, CORS, DATABASE_URL fallback)