- QA-1 Backend API contract: APPROVE (minor type contract 2) - QA-2 Persona forget algorithm: APPROVE (math verified) - QA-3 Auth & security: REQUEST_CHANGES - email normalize missing / JWT revalidate / secret fallback / whitelist - QA-4 Frontend runtime: REQUEST_CHANGES - review double-submit race / subjects/[id] NaN / history error states / native alerts - QA-5 Prisma & transactions: REQUEST_CHANGES - reviews.submit snapshot outside tx / tag cascade data loss / iteration race - QA-6 Build & deploy: REQUEST_CHANGES - missing migrations, postinstall, lockfile, PM2 ecosystem Follow-up fix proposals saved to .claude/state/pending-fix-proposals.jsonl (18 tickets)
3.3 KiB
3.3 KiB
QA-6 Report — Build & Deploy Readiness
Worker: Explore agent · Lead review: 승인
Summary
- verdict: REQUEST_CHANGES
- critical: 4, major: 3, minor: 4
Critical (배포 차단)
[critical] C1 Prisma migrations 디렉토리 비어있음
- Location:
backend/prisma/migrations/ - Impact:
prisma migrate deploy가 적용할 SQL 이 없다. Dev VM 새 DB 에 스키마 생성 불가. - Suggested fix: 로컬에서
pnpm prisma migrate dev --name init한 번 돌려서migrations/생성 + commit. 프로덕션에서는prisma migrate deploy만.
[critical] C2 postinstall hook 부재 → Prisma Client 미생성
- Location:
backend/package.json - Evidence: scripts 에
postinstall없음. Freshpnpm install후@prisma/clientimport 가 비어있는 기본 client 로 연결. - Suggested fix:
"postinstall": "prisma generate"추가. 또는prisma:deploy스크립트에서 generate 를 묶어 실행.
[critical] C3 Lockfile 부재
- Location: repo 루트
- Impact:
pnpm install --frozen-lockfile불가. 재현 빌드 불가, 버전 drift. - Suggested fix: 로컬에서
pnpm install한 번 실행해서pnpm-lock.yaml생성 + commit. 또는 각 workspace 별로.
[critical] C4 PM2 ecosystem 설정 파일 부재
- Location: repo 루트
- Impact: 이전 세션에서 언급한
reloop-api/reloop-web프로세스 정의가 없다. 수동 기동 가능하지만 restart 정책 / env 경로 / working directory 미기록. - Suggested fix:
ecosystem.config.js생성:module.exports = { apps: [ { name: 'reloop-api', cwd: './backend', script: 'dist/main.js', env: { NODE_ENV: 'production' }, max_memory_restart: '512M' }, { name: 'reloop-web', cwd: './frontend', script: 'node_modules/next/dist/bin/next', args: 'start -p 3000', env: { NODE_ENV: 'production' } }, ], };
Major
[major] M1 frontend/next.config.js 에 output: 'standalone' 없음
- Impact:
.next/standalone/server.js경로 사용 불가 → PM2 에서next start호출해야 하므로 node_modules 전체 동반 필요. - Suggested fix:
nextConfig.output = 'standalone'추가.
[major] M2 frontend/.env.example 부재
- Impact:
NEXT_PUBLIC_API_URL이 build-time 변수라는 점이 문서화되지 않음. - Suggested fix:
.env.example생성해서 key 와 의미 설명.
[major] M3 root README.md + packageManager 필드 없음
- Impact: 신규 환경 셋업 방법이 기록 안 됨. pnpm 버전 drift.
- Suggested fix: README 에 bootstrap 순서 작성,
"packageManager": "pnpm@9.0.0"pin.
Minor
- backend/frontend
.eslintrc.json부재. .env.example에NODE_ENV키가 있지만 런타임 미사용.package.json에engines.node필드 부재.frontend/next.config.js에compiler.styledComponents: true만 있고experimental플래그 정비 안 됨.
PLAN.md Phase 5 교차 체크
| Phase 5 item | 상태 |
|---|---|
| 차트 (recharts ForgetCurveChart) | DONE |
| PWA manifest | PENDING |
| PM2 스왑 | PENDING (C4 로 차단됨) |
| QA | 진행 중 (본 실행) |
Verdict
REQUEST_CHANGES — critical 4건 중 어느 하나라도 해결하지 않으면 Dev VM 배포 불가.