40 lines
1.2 KiB
Markdown
40 lines
1.2 KiB
Markdown
# SPRINT-007 QA Review — Iteration 1
|
|
|
|
- **검증일시:** 2026-04-04 15:38 KST
|
|
- **검증자:** 다랑이 (Evaluator)
|
|
- **결과:** ❌ FAILED (blocking 1건)
|
|
|
|
## 검증 항목
|
|
|
|
| 항목 | 결과 |
|
|
|------|------|
|
|
| npm install | ✅ |
|
|
| prisma generate | ✅ |
|
|
| npm test | ✅ 26/26 pass |
|
|
| npm run build (BE) | ✅ |
|
|
| npm run build (FE) | ✅ 16 routes |
|
|
|
|
## Sprint 006 NB 처리 확인
|
|
|
|
| 항목 | 상태 |
|
|
|------|------|
|
|
| 자동 refresh (401 시) | ✅ |
|
|
| refreshToken 저장 | ✅ |
|
|
|
|
## 🔴 Blocking
|
|
|
|
### B1: getProjectCommits limit 파라미터 NaN 미처리
|
|
- **파일:** projects.controller.ts:25
|
|
- **문제:** `parseInt(limit, 10)` → NaN 가능 → Gitea API에 `?limit=NaN`
|
|
- **수정:** `isNaN` 체크 + `Math.min(Math.max(값, 1), 100)` clamp
|
|
|
|
## Non-blocking (8건)
|
|
- N1: ProjectsController 인증 없음 — 공개 의도라면 주석 명시
|
|
- N2: userId: 0 하드코딩 (refresh 후) — 현재 FE에서 미참조이나 개선 권장
|
|
- N3: syncRepos N+1 쿼리 + 트랜잭션 미사용
|
|
- N4: login 후 /me 실패 시 userId: 0 fallback
|
|
- N5: fetch 에러 시 에러 상태 없이 빈 목록
|
|
- N6: lastSyncAt 메모리만 저장
|
|
- N7: getOpenPRs/getPulls 중복
|
|
- N8: useEffect deps 불완전
|