QA: SPRINT-008 review iteration 1 — FAILED (blocking 3)
This commit is contained in:
43
.qa/SPRINT-008-review-1.md
Normal file
43
.qa/SPRINT-008-review-1.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# SPRINT-008 QA Review — Iteration 1
|
||||
|
||||
- **검증일시:** 2026-04-04 16:35 KST
|
||||
- **검증자:** 다랑이 (Evaluator)
|
||||
- **결과:** ❌ FAILED (blocking 3건)
|
||||
|
||||
## 검증 항목
|
||||
|
||||
| 항목 | 결과 |
|
||||
|------|------|
|
||||
| npm install | ✅ |
|
||||
| prisma generate | ✅ |
|
||||
| npm test | ✅ 26/26 pass |
|
||||
| npm run build (BE) | ✅ |
|
||||
| npm run build (FE) | ✅ 16 routes |
|
||||
|
||||
## 🔴 Blocking
|
||||
|
||||
### B1: SettingsController PUT body 미검증 — 임의 키 주입
|
||||
- **파일:** settings.controller.ts, settings.service.ts
|
||||
- **문제:** `Record<string, string>` 그대로 upsert → DEFAULT_SETTINGS에 없는 키도 DB에 삽입
|
||||
- **수정:** saveAll()에서 DEFAULT_SETTINGS 키만 필터링
|
||||
|
||||
### B2: EventsScheduler + SistersScheduler 중복 — SSH 2배 호출
|
||||
- **파일:** events.module.ts, events.scheduler.ts, sisters.scheduler.ts
|
||||
- **문제:** 둘 다 providers에 등록, 둘 다 30초마다 broadcastSisterStatus() 실행
|
||||
- **수정:** EventsScheduler 제거 (SistersScheduler가 대체)
|
||||
|
||||
### B3: SistersScheduler에 OnModuleDestroy 없음 — 메모리 누수
|
||||
- **파일:** sisters.scheduler.ts
|
||||
- **문제:** clearInterval 없음 → 서버 종료/HMR 시 좀비 타이머
|
||||
- **수정:** `implements OnModuleDestroy` + `clearInterval(this.timer)`
|
||||
|
||||
## Non-blocking (9건)
|
||||
- N1: avatar @Res() → NotFoundException 대신 res.status(404)
|
||||
- N2: getSystemInfo null 반환 → 컨트롤러 null 체크 없음
|
||||
- N3: SSH 커넥션 풀링 없음 (30초×4자매=16개 핸드셰이크)
|
||||
- N4: top/free/df 파싱 환경 의존성 + disk % 미파싱
|
||||
- N5: sisters 페이지 15초 폴링 + WS 30초 브로드캐스트 중복
|
||||
- N6: avatar 캐시 사이즈 제한 없음
|
||||
- N7: DEFAULT_SETTINGS FE/BE 중복 정의
|
||||
- N8: sisterEmojis/sisterDisplayNames 여전히 3곳 중복
|
||||
- N9: SSH 4개 병렬 → 1개 연결 4개 명령으로 최적화 권장
|
||||
Reference in New Issue
Block a user