docs: 개발팀 Hotfix 버그수정 요청서 9차 작성 (3건 버그, 32회 실행 전회 FAIL 확정)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-26 23:05:29 +09:00
parent d714e317f0
commit 7c967206d6

View File

@@ -0,0 +1,254 @@
# 개발팀 Hotfix 버그 수정 요청서 (9차 검증 기준)
**작성일**: 2026-02-26
**작성자**: QA팀 (E2E 자동화 테스트)
**검증 대상**: https://dev.codebridge-x.com (hotfix 브랜치)
**검증 방법**: `--fail-only --iterate` (실패 시나리오 집중 반복 검증)
**검증 결과**: 8개 실패 시나리오 × 4라운드 = **32회 실행, 전회 FAIL**
---
## 1. 요약
### 검증 경과
| 차수 | 날짜 | 전체 | PASS | FAIL | 성공률 | 비고 |
|:----:|:----:|:----:|:----:|:----:|:------:|------|
| 5차 | 02-23 | 184 | 177 | 7 | 96.2% | BUG-DEPOSIT, BUG-SALES 최초 발견 |
| 6차 | 02-25 | 184 | 180 | 4 | 97.8% | 시나리오 내성 강화 |
| 7차 | 02-26 | 184 | 176 | 8 | 95.7% | Board 삭제 리그레션 +4 |
| 8차 | 02-26 | 184 | 176 | 8 | 95.7% | 7차와 동일 (재현 확인) |
| **9차** | **02-26** | **8** | **0** | **8** | **0%** | **실패분 32회 실행 전회 FAIL** |
### 핵심 결론
> **8개 실패 시나리오는 모두 확정적 앱 버그입니다.**
> - 32회 반복 실행(4라운드 × 8시나리오) **전회 동일 FAIL**
> - 테스트 로직 문제 아님 (동일 로직의 다른 모듈은 정상 동작)
> - **개발팀 코드 수정만이 유일한 해결책**
---
## 2. 버그 목록 (총 3건, 영향 시나리오 8건)
| # | Bug ID | 심각도 | 모듈 | 제목 | 영향 | 미수정 기간 |
|---|--------|:------:|------|------|:----:|:----------:|
| 1 | **BUG-BOARD-DELETE-001** | 🔴 HIGH | 게시판 | 자유게시판 삭제 후 데이터 잔존 | 4건 | **1일 (리그레션)** |
| 2 | **BUG-DEPOSIT-001** | 🟠 MEDIUM | 회계관리 | 입금관리 등록 폼 POST 미발생 | 2건 | **4일 (5차~)** |
| 3 | **BUG-SALES-CALC-001** | 🟡 LOW | 회계관리 | 매출관리 수정 시 공급가액 재계산 미반영 | 2건 | **4일 (5차~)** |
---
## 3. 버그 상세
---
### 3.1 🔴 BUG-BOARD-DELETE-001: 자유게시판 삭제 후 데이터 잔존
| 항목 | 내용 |
|------|------|
| **심각도** | 🔴 HIGH — **리그레션** (6차까지 정상 동작 → 7차부터 고장) |
| **모듈** | 게시판 > 자유게시판 |
| **URL** | `https://dev.codebridge-x.com/boards/free` |
| **최초 발견** | 2026-02-26 (7차) |
| **수정 요청 횟수** | 7차 요청 → **미수정** |
#### 현상
게시글 삭제 버튼 클릭 → 확인 다이얼로그 "확인" 클릭 → **API DELETE 200 OK 반환** → 그러나 **목록에서 게시글이 제거되지 않음**. 페이지 새로고침 후에도 데이터 잔존.
#### 영향 시나리오 (4건)
| # | 시나리오 ID | 실패 스텝 | 에러 메시지 |
|---|-----------|----------|------------|
| 1 | `create-delete-board` | Step 12 [VERIFY] 삭제 확인 | `E2E_TEST_ 데이터가 여전히 존재 - 수동 삭제 필요` |
| 2 | `full-crud-board` | Step 20 [VERIFY] 삭제 확인 | `E2E_TEST_ 데이터가 여전히 존재` |
| 3 | `reload-persist-board` | Step 16 [VERIFY] 삭제 확인 | `삭제된 데이터가 여전히 존재` |
| 4 | `batch-create-board` | Step 33 [VERIFY] 전체 삭제 확인 | `기대 0건, 실제 3건` |
#### 재현 절차
```
1. 자유게시판 페이지 접근
2. 게시글 작성 (제목: E2E_TEST_xxx)
3. 작성한 게시글 클릭 → 상세 페이지 진입
4. "삭제" 버튼 클릭
5. 확인 다이얼로그에서 "확인" 클릭
6. 목록 페이지로 복귀
7. ❌ 삭제한 게시글이 여전히 목록에 표시됨
8. 페이지 새로고침(F5) 후에도 동일
```
#### 기술 분석
| 분석 항목 | 결과 |
|----------|------|
| DELETE API 호출 | ✅ 정상 발생 |
| API 응답 코드 | ✅ 200 OK |
| 삭제 후 목록 데이터 | ❌ 삭제 데이터 잔존 |
| 새로고침 후 | ❌ 여전히 잔존 |
| 동일 로직 다른 모듈 | ✅ 매입/매출/청구 등 삭제 정상 동작 |
#### 추정 원인
```
가능성 1 (높음): Soft Delete 전환
→ DELETE API가 is_deleted 플래그만 설정하고 200 반환
→ 목록 조회 API가 soft-deleted 데이터를 필터링하지 않음
가능성 2 (중간): 게시판 삭제 권한 변경
→ TestUser5 계정의 게시판 삭제 권한 제한
→ API 200 반환하지만 실제 삭제 미수행
가능성 3 (낮음): 게시판 캐시 문제
→ 삭제 후 목록 캐시가 갱신되지 않음
```
#### 확인 요청 사항
1. **02-25 ~ 02-26 사이 게시판 DELETE API 로직 변경 여부 확인**
2. **Soft Delete 전환 시 목록 조회 API의 필터링 로직 확인**
3. **TestUser5 계정의 게시판 삭제 권한 확인**
---
### 3.2 🟠 BUG-DEPOSIT-001: 입금관리 등록 폼 POST 미발생
| 항목 | 내용 |
|------|------|
| **심각도** | 🟠 MEDIUM |
| **모듈** | 회계관리 > 입금관리 |
| **URL** | `https://dev.codebridge-x.com/accounting/deposits` |
| **최초 발견** | 2026-02-23 (5차) |
| **수정 요청 횟수** | 5차, 6차, 7차, **9차(본 요청)****4회 미수정** |
#### 현상
입금관리 등록 폼에서 필수 필드 입력 후 저장 버튼 클릭 시 **API POST 호출이 발생하지 않음**. URL이 `?mode=new` 상태로 유지되며 목록으로 리다이렉트되지 않음.
#### 영향 시나리오 (2건)
| # | 시나리오 ID | 실패 스텝 | 에러 메시지 |
|---|-----------|----------|------------|
| 1 | `reload-persist-acc-deposit` | Step 3 [CREATE] | `등록 실패 (API POST 없음, url=/accounting/deposits?mode=new)` |
| 2 | `batch-create-acc-deposit` | Step 23 [DELETE #2] | `E2E_TEST_ 데이터 없음` |
#### 재현 절차
```
1. 입금관리 페이지 접근
2. "등록" 버튼 클릭 → 등록 폼(mode=new) 진입
3. 거래처, 입금구분, 금액 등 필수 필드 입력
4. "저장" 버튼 클릭
5. ❌ API POST 호출 미발생
6. ❌ URL이 ?mode=new 상태 유지 (목록 미복귀)
```
#### 확인 요청 사항
1. **입금 등록 폼의 저장 버튼 이벤트 핸들러 확인**
2. **필수 필드 유효성 검사 로직 확인** (에러 메시지 없이 저장 차단되는지)
3. **폼 필드 name/id 매핑 확인**
---
### 3.3 🟡 BUG-SALES-CALC-001: 매출관리 수정 시 공급가액 재계산 미반영
| 항목 | 내용 |
|------|------|
| **심각도** | 🟡 LOW |
| **모듈** | 회계관리 > 매출관리 |
| **URL** | `https://dev.codebridge-x.com/accounting/sales` |
| **최초 발견** | 2026-02-23 (5차) |
| **수정 요청 횟수** | 5차, 6차, 7차, **9차(본 요청)****4회 미수정** |
#### 현상
매출 상세에서 수량을 변경(10→20)하고 저장 후, **공급가액이 재계산되지 않음**. 수량 × 단가 = 공급가액이어야 하나 이전 값 유지.
#### 영향 시나리오 (2건)
| # | 시나리오 ID | 실패 스텝 | 에러 메시지 |
|---|-----------|----------|------------|
| 1 | `full-crud-acc-sales` | Step 15 [UPDATE] 수정 내용 검증 | `evaluate returned ok:false` |
| 2 | `sales-management` | Step 16 [UPDATE] 수정 내용 검증 | `evaluate returned ok:false` |
> CREATE/READ/DELETE 모두 정상. UPDATE의 자동계산만 미반영.
#### 재현 절차
```
1. 매출관리에서 테스트 데이터 상세 진입
2. "수정" 버튼 클릭 → 수정 모드
3. 수량 필드 값 변경: 10 → 20
4. "저장" 버튼 클릭 → API PUT 200 OK
5. ❌ 공급가액 필드가 재계산되지 않음 (기대: 1,000,000 / 실제: 500,000)
```
#### 확인 요청 사항
1. **매출 수정 시 공급가액 자동 계산 로직 확인** (프론트엔드 연동 포함)
2. **PUT API 요청 body에 재계산된 공급가액이 포함되는지 확인**
---
## 4. 수정 우선순위
| 순위 | Bug ID | 심각도 | 사유 |
|:----:|--------|:------:|------|
| **1** | BUG-BOARD-DELETE-001 | 🔴 HIGH | 리그레션 (이전 정상→고장), 핵심 CRUD 기능, 4건 영향 |
| **2** | BUG-DEPOSIT-001 | 🟠 MEDIUM | 등록 기능 미동작, **4회 수정 요청 미반영 (4일 경과)** |
| **3** | BUG-SALES-CALC-001 | 🟡 LOW | 계산 로직 미반영, **4회 수정 요청 미반영 (4일 경과)** |
---
## 5. 수정 후 검증 프로세스
### 빠른 검증 (~8.5분)
```bash
node e2e/runner/run-all.js --fail-only
```
- 8개 실패 시나리오만 1회 실행
- 수정 직후 즉시 검증 가능
### 안정성 검증 (~33분)
```bash
node e2e/runner/run-all.js --fail-only --iterate
```
- 8개 실패 시나리오 × 4라운드 반복
- 간헐적 오류 여부 확인
### 전체 리그레션 (~55분)
```bash
node e2e/runner/run-all.js
```
- 184개 전체 시나리오 실행
- 수정으로 인한 다른 기능 영향 확인
### 권장 절차
```
1. 개발팀 수정 완료 → QA팀 통보
2. QA: --fail-only 빠른 검증 (8.5분)
3. 통과 시: --fail-only --iterate 안정성 검증 (33분)
4. 통과 시: 전체 리그레션 검증 (55분)
5. 전체 PASS → 릴리스 승인
```
---
## 6. 참고 자료
| 자료 | 파일명 |
|------|--------|
| 9차 테스트 리포트 | `E2E_9차_테스트결과_리포트_2026-02-26.md` |
| 9차 요약 결과 | `E2E_FULL_TEST_SUMMARY_2026-02-26_20-01-27.md` |
| 8차 전체 결과 | `E2E_FULL_TEST_SUMMARY_2026-02-26_19-12-43.md` |
| 7차 수정 요청서 | `개발팀_Hotfix_버그수정_요청서_7차_2026-02-26.md` |
| 실패 리포트 (개별) | `e2e/results/hotfix/Fail-*_2026-02-26_*.md` |
| 테스트 러너 | `node e2e/runner/run-all.js --fail-only --iterate` |
---
**QA팀 연락처**: E2E 자동화 테스트 담당
**긴급도**: 🔴 BUG-BOARD-DELETE-001은 리그레션으로 **즉시 수정 요청**
**다음 검증**: 수정 완료 통보 즉시 `--fail-only` 검증 실시