# 경동dev QA 점검 이슈 수정 계획 (V2 — 통합)

> **작성일**: 2026-03-17
> **목적**: 2차 디펙리스트 신규 26건 + V1 미완료 이관 17건 = **총 43건** 통합 관리
> **기준 문서**: `경동dev_모듈별_기능 및 UI점검 - 디펙리스트.csv` (2026-03-17)
> **V1 문서**: `docs/plans/qa-bugfix-plan.md` (완료 처리 — 19건 완료, 17건 이관)
> **상태**: 📋 계획 수립

---

## 📍 현재 진행 상태

| 항목 | 내용 |
|------|------|
| **총 이슈** | 43건 (신규 26 + V1이관 17) |
| **중요도 분포** | Critical 6, Major 22, Minor 9, 확인필요 4, 보류/패스 2 |
| **완료** | 31건 (코드수정 18 + 정상/자동해소 4 + 디펙아님 7 + 준비중 1 + 패스 1) |
| **미착수** | 12건 (프론트이관 3, 신규기능 3, 별도세션 2, 패스/보류 4) |
| **진행률** | 31/43 (72%) |
| **다음 작업** | V1#37 작업지시 수량 수정, V1#40 미터단위, V1#41 재고조정 (신규기능) |
| **마지막 업데이트** | 2026-03-19 |

---

## 1. 개요

### 1.1 배경
2차 QA 점검(2026-03-17)에서 신규 26건 발견. V1(qa-bugfix-plan.md)의 미완료 17건을 코드 레벨 검증 후 이관하여 **총 43건**을 본 문서에서 통합 관리.

> **QA 핵심 메모**: "#16(생산지시 500에러)이 풀리면 생산→출고→매출 흐름 검증 가능, #20(검사 목록 미표시)가 풀리면 품질관리 흐름 검증 가능. **이 2건이 최우선**."

### 1.2 이슈 통계

| 중요도 | 신규 | V1이관 | 합계 |
|--------|------|--------|------|
| **Critical** | 4건 | 2건 | **6건** |
| **Major** | 16건 | 8건 | **24건** |
| **Minor** | 4건 | 5건 | **9건** |
| **확인필요** | 2건 | 2건 | **4건** |
| **디펙아님** | 1건 | — | 1건 (제외) |
| **보류/패스** | — | 2건 | 2건 |

| 모듈 | 건수 | 비고 |
|------|------|------|
| 견적관리 | 7건 | V1 이관 5건 포함 |
| 출고관리 | 5건 | |
| QMS/품질인정심사 | 4건 | |
| 수주관리 | 4건 | V1 이관 1건 포함 |
| 제품검사관리 | 3건 | |
| 거래처관리 | 3건 | V1 이관 1건 포함 |
| 단가관리 | 3건 | V1 이관 2건 포함 |
| 매출관리 | 2건 | |
| 생산/작업지시 | 3건 | V1 이관 2건 포함 |
| 재고관리 | 2건 | V1 이관 1건 포함 |
| 배차차량관리 | 1건 | |
| 품목관리 | 1건 | V1 이관 (부분완료) |
| 품질검사 | 1건 | V1 이관 |
| 공통 | 2건 | V1 이관 (보류/패스) |

### 1.3 V1 완료 현황

| 구분 | 건수 | 내용 |
|------|------|------|
| V1 완료 | 19건 | 코드 검증 완료 (Phase 1: 3, Phase 2: 7, Phase 4: 9) |
| V1→V2 이관 | 17건 | 미수정 확인 → 본 문서로 이관 |
| V1 디펙아님 | 1건 | #9 정렬정책 (정상) |

---

## 2. Phase 구조

### 2.0 Phase 0: 확인필요 (4건) — 정책 결정 후 배정

| # | 출처 | 모듈 | 이슈 | 확인 사항 | 상태 |
|---|------|------|------|----------|------|
| 4 | 신규 | 수주관리 | 출고예정일 빈값 → 납품요청일 복사 | 의도된 동작인지 확인 | ✅ 디펙아님 (정상 동작) |
| 21 | 신규 | 제품검사 | 검사 완료 후 수정 가능 | 완료 후 수정 차단 필요 여부 | ✅ 수정완료 (완료 후 차단) |
| V1#10 | V1이관 | 견적관리 | 목록 작업 컬럼 빈값 | 어떤 데이터가 들어가야 하는지 기획 확인 | 보류 (셀렉트 시 액션 표시됨) |
| V1#12 | V1이관 | 견적관리 | 연락처 필수값 안내 시점 | UX 정책: 저장 시 vs 실시간 검증 | 패스 (현재 동작 유지) |

---

### 2.1 Phase 1: Critical (6건) — 최우선

> 생산→출고→매출, 품질관리 흐름 차단 + 데이터 정합성 파괴

---

#### #16 수주 생산지시 생성 500에러 `Critical` 🔴 `신규` ✅ 기수정

| 항목 | 내용 |
|------|------|
| **현상** | 수주확정 후 생산지시 생성 클릭 시 `[500] Undefined variable $process` 에러 |
| **경로** | https://dev.codebridge-x.com/ko/sales/order-management-sales/[id] → 생산지시 생성 |
| **영향** | **생산→출고→매출 전체 흐름 차단** |
| **비고** | 3/13 정상이었으나 3/16부터 에러 발생. 예시: KD-SS-260316-02 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/app/Services/Order/OrderService.php` | `createProductionOrder()` 내 `$process` 변수 미정의 확인 |
| `api/app/Services/WorkOrderService.php` | 생산지시 생성 로직 디버깅 |

**검증:**
- [ ] 수주확정 → 생산지시 생성 정상 동작
- [ ] 생성된 생산지시/작업지시 데이터 정합성 확인

---

#### #20 제품검사 등록 후 목록 미반영 `Critical` 🔴 `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 제품검사 등록 성공 알럿 → 목록 이동 → 데이터 없음. 요약카드만 +1 |
| **경로** | https://dev.codebridge-x.com/ko/quality/inspections?mode=new |
| **영향** | **품질관리 흐름 검증 차단** |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/app/Services/Quality/InspectionService.php` | 등록 후 데이터 상태값/필터 조건 확인 |
| `react/src/components/quality/inspections/` | 목록 조회 필터와 등록 상태값 매칭 확인 |

---

#### #28 매출관리 매출액 0원 `Critical` 🔴 `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 출고 완료되어도 매출금액 0원. SL202603~ 목록/상세 모두 0원 |
| **경로** | https://dev.codebridge-x.com/ko/accounting/sales , https://dev.codebridge-x.com/ko/accounting/sales/[id]?mode=view |
| **선행** | #16 해결 필요 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/app/Services/Accounting/SalesService.php` | 매출 생성 시 금액 계산 로직 확인 |
| `react/src/components/accounting/` | 매출 상세 금액 표시 확인 |

---

#### #6 QMS 로트추적 품질관리서 노출조건 `Critical` 🔴 `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 실적신고 미확정 상태 데이터가 품질관리서 목록에 표시됨 |
| **경로** | https://dev.codebridge-x.com/ko/quality/qms |
| **선행** | #20 해결 필요 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/` (QMS Service) | 목록 조회 시 실적신고 확정 필터 추가 |
| `react/src/components/quality/qms/` | 프론트 필터 확인 |

---

#### V1#15 견적 부가세 값 미저장 `Critical` 🔴 `V1이관` ✅ 완료 (vatType options 저장)

| 항목 | 내용 |
|------|------|
| **현상** | 부가세 포함 선택 후 저장 → 상세에서 부가세 미노출 |
| **경로** | https://dev.codebridge-x.com/ko/sales/quote-management/new |
| **코드 검증** | Quote 모델 fillable에 `tax_amount` 있으나, 프론트에서 tax_amount 미전송. 계산/저장 로직 자체 미구현 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/app/Models/Quote/Quote.php` | `$casts`에 `tax_amount` 추가 |
| `api/app/Services/Quote/QuoteService.php` | 저장 시 부가세 계산 로직 추가 |
| `react/src/components/quotes/QuoteRegistration.tsx` | vatType 선택 값을 API 전송 + 금액 계산 |

---

#### V1#33 단가 수정 시 0원 저장 `Critical` 🔴 `V1이관` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 단가 수정 시 저장되지 않고 0원으로 저장 |
| **경로** | https://dev.codebridge-x.com/ko/sales/pricing-management/create?itemId= |
| **코드 검증** | `PricingService.php` → `getItemPrice()` 메서드가 TODO 상태, `return ['price' => 0]` 하드코딩 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/app/Services/Pricing/PricingService.php` | store(), update() 메서드 **구현** (현재 TODO) |
| `react/src/components/pricing/PricingFormClient.tsx` | submit payload 필드명 매핑 확인 |

---

### 2.2 Phase 2: Major — 출고/매출 흐름 (6건) — 예상 2일

> **선행조건**: Phase 1 #16(생산지시 500) 해결 필수

---

#### #22 출고 목록 로트번호 컬럼에 출고번호 표시 `Major` `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 로트번호 컬럼에 출고번호(SHP-*)가 표시됨. 상세에서는 `-` 표기 |
| **경로** | https://dev.codebridge-x.com/ko/outbound/shipments |

---

#### #23 출고상세 제품내용 미표시 `Major` `신규` ✅ 기수정

| 항목 | 내용 |
|------|------|
| **현상** | 전체 출고건 "등록된 제품이 없다"고 표시 |
| **경로** | https://dev.codebridge-x.com/ko/outbound/shipments/[id]?mode=view |

---

#### #25 출고 수동등록 로트번호 미로드 `Major` `신규` ✅ 디펙아님 (기능 제거)

| 항목 | 내용 |
|------|------|
| **현상** | 생산완료 후 수동 등록 시 로트번호 목록 미로드 |
| **경로** | https://dev.codebridge-x.com/ko/outbound/shipments?mode=new |
| **점검 결과** | 출고 수동등록 기능은 의도적으로 제거됨. 제품 없이 수동 등록 불가하므로 수주→생산→출고(자동생성) 경로만 지원 |

---

#### #26 출고 목록 상태/카드 불일치 `Major` `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 카드 출고완료 0건 vs 목록 출고완료 2건 |
| **경로** | https://dev.codebridge-x.com/ko/outbound/shipments |

---

#### #27 매출관리 흐름 검증 불가 `Major` `신규` ✅ 디펙아님 (#25 해소)

| 항목 | 내용 |
|------|------|
| **현상** | 출고 수동등록 불가로 매출 등록 확인 불가 |
| **선행** | #25 + #16 해결 시 자동 해소 가능 |
| **점검 결과** | #25가 디펙아님(수동등록 기능 제거). 매출 흐름은 수주→생산→출고(자동)→매출 경로로 검증 가능. #16(생산지시 500) 기수정 완료로 정상 흐름 확보됨 |

---

#### #29 엑셀 업로드 구버전 제품명 산출 안됨 `Major` `신규` ⏳ 준비중 처리

| 항목 | 내용 |
|------|------|
| **현상** | 엑셀 업로드 시 구버전 제품명으로 견적 산출 안됨 |
| **경로** | https://dev.codebridge-x.com/ko/sales/quote-management?mode=new |
| **점검 결과** | 엑셀 제품코드 매칭이 `item_code === productCode` 완전 일치만 지원. 구버전 제품명/별칭 필드 없음. 양식 재설계 필요 |
| **처리** | 양식다운로드 + 업로드 버튼 → "준비중입니다." toast로 임시 비활성화. `LocationListPanel.tsx` 수정 |

---

### 2.3 Phase 3: Major — QMS/제품검사 (4건) — 예상 1.5일

> **선행조건**: Phase 1 #20, #6 해결 필요

---

#### #5 제품검사 수주개소/검사개소 매칭 불일치 `Major` `신규` ✅ 정상 (의도된 동작)

| 항목 | 내용 |
|------|------|
| **현상** | 수주 선택 시 모두 "불일치" 표시. "미검사" 워딩과도 불일치 |
| **경로** | https://dev.codebridge-x.com/ko/quality/inspections?mode=new |

---

#### #7 QMS 품질관리서 품목명 미노출 `Major` `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 품질관리서 목록에 품목명이 표시되지 않음 |
| **경로** | https://dev.codebridge-x.com/ko/quality/qms |

---

#### #9 QMS 수주로트 목록 검증 불가 `Major` `신규` ✅ #20 해결로 자동 해소

| 항목 | 내용 |
|------|------|
| **현상** | 기존 데이터로는 표시됨, 신규 검증 불가 (#20 선행) |
| **경로** | https://dev.codebridge-x.com/ko/quality/qms |

---

#### #10 QMS 관련서류 탭 검증 불가 `Major` `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 관련서류 탭 수주서/작업일지/검사서 검증 불가 (#20 선행) |
| **경로** | https://dev.codebridge-x.com/ko/quality/qms |

---

### 2.4 Phase 4: Major — 기타 모듈 (6건 신규 + 4건 V1이관) — 예상 3일

---

#### #11 신규 거래처가 수주처 목록에 미반영 `Major` `신규` ✅ 코드 정상 (배포 후 재검증)

| 항목 | 내용 |
|------|------|
| **현상** | 신규 등록 거래처가 견적 등록 시 수주처 목록에 미표시 |
| **경로** | https://dev.codebridge-x.com/ko/sales/quote-management?mode=new |

---

#### #12 비활성 거래처도 수주처 목록에 포함 `Major` `신규` ✅ 코드 정상 (배포 후 재검증)

| 항목 | 내용 |
|------|------|
| **현상** | 활성 6건 + 비활성 14건 = 20건 전부 목록 표시 |
| **경로** | https://dev.codebridge-x.com/ko/sales/quote-management?mode=new |

> **참고**: V1 #25(수주관리 `getClients({ only_active: true })`)와 동일 패턴. 견적관리 쪽도 적용 필요.

---

#### #13 단가 신규 등록 기능 없음 `Major` `신규` ✅ 디펙아님 (의도된 설계)

| 항목 | 내용 |
|------|------|
| **현상** | 품목마스터 동기화 버튼만 존재. 수동 단가 등록 기능 없음 |
| **경로** | https://dev.codebridge-x.com/ko/sales/pricing-management |
| **연관** | V1#32, V1#33 (PricingService 통합 구현) |
| **점검 결과** | 등록 기능은 구현됨 (미등록 품목 행 클릭 → create 페이지). 품목마스터에 없는 제품의 단가 등록은 의도적으로 불가. 설계 의도대로 정상 |

---

#### #14 배차차량 상태 전환 방법 없음 `Major` `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | "작성대기"에서 전환 불가. 배차정보 입력해도 상태 변경 없음 |
| **경로** | https://dev.codebridge-x.com/ko/outbound/vehicle-dispatches/[id]?mode=view |
| **점검 결과** | 백엔드 update()에서 options.status를 저장하지 않음. 프론트는 조회 시 freight_cost_type으로 가상 계산만 |
| **처리** | 백엔드 update() 시 freight_cost_type 유무로 status 자동 결정(completed/draft). 상차/직접배차는 금액 0 허용. 프론트는 options.status 우선 사용 + 폴백 유지 |

---

#### #15 생산지시 상세 개소 값 불일치 `Major` `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 작업지시서 개소 컬럼에 품목 합 표시. 납품 개소 값이어야 함 |
| **경로** | https://dev.codebridge-x.com/ko/sales/order-management-sales/production-orders/[id]?mode=view |

---

#### #17 수주 목록 상태/카드 불일치 `Major` `신규` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 카드 생산지시 대기 7건 vs 목록 수주확정 5건. 추가로 3월 21건인데 11건만 표시 |
| **경로** | https://dev.codebridge-x.com/ko/sales/order-management-sales |
| **점검 결과** | ① 카드는 복합 상태 합산, 필터는 3개만 존재 ② received_at 전부 NULL로 API 날짜 필터 미작동 |
| **처리** | 백엔드 날짜 필터를 COALESCE(DATE(received_at), DATE(created_at)) 폴백으로 수정. 프론트 필터/카드는 현행 유지 |

---

#### V1#6 거래처 등록 시 회계관리 미노출 `Major` `V1이관` 패스 (mng 별도)

| 항목 | 내용 |
|------|------|
| **현상** | 신규 거래처 등록 시 회계관리 거래처 목록에 미노출 |
| **코드 검증** | DB 동기화 문제가 아님. 같은 DB(samdb)의 같은 `clients` 테이블(41건) 공유. **mng 회계 화면이 `trading_partners`(34건) 테이블을 별도 조회**하는 구조적 차이. mng 회계 코드 확인 필요 |
| **처리** | mng 영역이므로 패스. 별도 세션에서 처리 |

---

#### V1#11 견적 접수일 날짜 하루 밀림 `Major` `V1이관` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 접수 날짜 오늘(3/13) 설정 → 저장 후 목록에 3/12로 노출 |
| **코드 검증** | QuoteRegistration.tsx에서 UTC 타임존 변환 처리 없음 |
| **점검 결과** | DB 저장은 정상(`2026-03-19`). Laravel `date` 캐스트가 JSON 직렬화 시 UTC 변환(`2026-03-18T15:00:00.000000Z`) → 프론트에서 -1일 표시 |
| **처리** | Quote 모델의 date 캐스트를 `date:Y-m-d` 형식으로 변경 → JSON 직렬화 시 `"2026-03-19"` 문자열로 반환 |

---

#### V1#29 수주 수정 시 유효성 에러 `Major` `V1이관` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 수주 수정 저장 시 `items.*.item_name` required 에러 |
| **코드 검증** | `UpdateOrderRequest.php:69` → `items.*.item_name => required` 미수정 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/app/Http/Requests/Order/UpdateOrderRequest.php` | `items.*.item_name` → `sometimes\|required` 또는 `nullable` |
| `react/src/components/orders/` | 수정 submit 시 items에 item_name 포함 확인 |

---

#### V1#32 단가 등록 시 품목코드/품목명 변경 `Major` `V1이관` ✅ 완료

| 항목 | 내용 |
|------|------|
| **현상** | 단가 등록 시 품목코드가 ITEM-15893, 품목명이 "없음"으로 변경됨 |
| **코드 검증** | PricingService.php store() 미구현 (TODO 상태) |
| **연관** | V1#33, 신규#13과 통합 처리 |
| **점검 결과** | Price 모델에 `item()` 관계 미정의 → API 응답에 품목 정보 없음 → 프론트 폴백값(`ITEM-{id}`, `품목명 없음`) 표시 |
| **처리** | ① Price 모델에 `item()` BelongsTo 관계 추가 ② index/show에서 `item:id,code,name,item_category` eager load ③ 프론트 변환 함수에서 item 데이터 우선 사용 |

---

### 2.5 Phase 5: Major — 신규기능 개발 (3건 V1이관) — 예상 3일

> 기존 기능 수정이 아닌 **신규 기능 개발** 필요

---

#### V1#37 작업지시 품목 수량 수정 안됨 `Major` `V1이관`

| 항목 | 내용 |
|------|------|
| **현상** | 작업지시 상세에서 개소별 품목 수량 수정 시 업데이트 안됨 |
| **코드 검증** | 수량 수정 API 엔드포인트 자체 없음 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/app/Services/WorkOrderService.php` | updateItem 수량 업데이트 로직 추가 |
| `api/app/Http/Requests/` | WorkOrder 수량 수정 유효성 검증 |
| `react/src/components/production/WorkOrders/` | 수량 수정 API 호출 연동 |

---

#### V1#40 작업자 화면 미터 단위 자재투입 `Major` `V1이관`

| 항목 | 내용 |
|------|------|
| **현상** | 자재투입 시 EA 단위만 지원. 원단/내화실/슬랫코일 등 미터(m) 단위 미지원 |
| **운영 방식** | 미터 단위 차감 → 특정 개소에서 "소진" 체크로 일괄 소진 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `react/src/components/production/Worker/` | 미터(m) 단위 입력 + 소진 체크 기능 |
| `api/` (관련 Service) | 미터 단위 차감 + 소진 처리 API |

---

#### V1#41 재고관리 재고조정 API `Major` `V1이관`

| 항목 | 내용 |
|------|------|
| **현상** | 재고 조정 화면은 개발되어 있으나 API 미구현 |
| **기대** | 재고 조정 API + 조정 히스토리(이력) 적재 |

**수정 대상:**
| 파일 | 변경 내용 |
|------|----------|
| `api/app/Services/Inventory/` | 재고 조정 API 구현 + 조정 사유 저장 |
| `api/app/Http/Controllers/` | 재고 조정 엔드포인트 추가 |

---

### 2.6 Phase 6: Minor (9건) — 예상 1일

| # | 출처 | 모듈 | 이슈 | 상세 | 상태 |
|---|------|------|------|------|------|
| 18 | 신규 | 재고현황 | 재공품 필드 0 표시 | 목록 0 노출, 상세 "사용" 표시 | 패스 (다른 개발자 진행중) |
| 19 | 신규 | 제품검사 | 상태/카드 불일치 | 카드 완료5 vs 목록 완료2 | ✅ #20에서 해소 |
| 24 | 신규 | 출고관리 | 상태 워딩 | "출고완료**으로**" → "출고완료**로**" | ✅ 완료 |
| 32 | 신규 | 견적관리 | 날짜필터 활성화 스타일 | 선택 버튼 활성화 스타일 없음 | → 프론트이관 |
| V1#13 | V1이관 | 견적관리 | 수동 품목 단가 0원 | 수동 추가 시 단가 입력 불가 | ✅ 디펙아님 (단가 데이터 미등록) |
| V1#17 | V1이관 | 견적관리 | PDF 생성 안됨 | DomPDF 미구현 | ⏳ 별도 세션 |
| V1#24 | V1이관 | 견적관리 | 견적상태 3곳 불일치 | 상태/뱃지/금액요약 워딩 통일 | → 프론트이관 |
| V1#34 | V1이관 | 품목관리 | 품목 규격 (나머지) | WO items에 spec 미적용 | ⏳ 별도 세션 |
| V1#42 | V1이관 | 품질검사 | 검사모달 페이지이동/검색 | Major급 구조 변경 | → 프론트이관 |

---

### 2.7 보류/패스 (2건)

| # | 출처 | 이슈 | 사유 |
|---|------|------|------|
| V1#43 | V1이관 | 절곡 바라시보기 | mng 선행 필요 |
| V1#1,3 | V1이관 | 열너비 정책 / 모달닫힘 정책 | 범위 넓어 별도 검토 |

---

### 2.8 디펙아님 (1건)

| # | 이슈 | 사유 |
|---|------|------|
| 41 | 입고 등록 서버에러 | 일시적 현상, 재현 안됨 |

---

## 3. 작업 일정

```
Phase 0: 확인필요 (4건)              [0.5일] ██
Phase 1: Critical (6건)              [2.5일] ██████████
Phase 2: 출고/매출 Major (6건)       [2일]   ████████
Phase 3: QMS/검사 Major (4건)        [1.5일] ██████
Phase 4: 기타 Major (10건)           [3일]   ████████████
Phase 5: 신규기능 Major (3건)        [3일]   ████████████
Phase 6: Minor (9건)                 [1일]   ████
보류/패스                             [TBD]
                                     ─────────────────
총계                                  약 13.5일
```

**최적 일정 (병렬 적용):**
```
Day 1-2.5 : Phase 1 (Critical 6건)
Day 3-5   : Phase 2 (출고) + Phase 4 (기타) 병렬
Day 4-5.5 : Phase 3 (QMS) — Phase 1 해결 후
Day 5-7   : Phase 5 (신규기능) — 독립
Day 7-8   : Phase 6 (Minor) + Phase 0 결과 반영
              ─────────────────
최적 총계   약 8일
```

---

## 4. 의존성 맵

```
Phase 0 (확인필요)
├─→ #4 (출고예정일) ── 정책 결정
├─→ #21 (검사 수정) ── 정책 결정
├─→ V1#10 (작업 컬럼) ── 기획 확인
└─→ V1#12 (연락처) ── UX 결정

Phase 1 (Critical) ── 최우선
├─→ #16 (생산지시 500) ── 출고/매출 전체 차단
│    └─→ Phase 2 (출고/매출 6건)
├─→ #20 (검사 미반영) ── QMS 흐름 차단
│    └─→ #6 (QMS 노출조건) → Phase 3 (QMS 4건)
├─→ #28 (매출 0원) ── #16 선행
├─→ V1#15 (부가세) ── 독립
└─→ V1#33 (단가 0원) ── 독립 (V1#32, #13과 통합)

Phase 2 (출고/매출) ── #16 선행
Phase 3 (QMS/검사) ── #20 선행
Phase 4 (기타) ── 모두 독립
├─→ #11,#12 (거래처 필터) ── V1#25 패턴 적용
├─→ #13,V1#32 (단가) ── V1#33과 통합
└─→ V1#6 (거래처 mng 동기화) ── mng 확인 필요
Phase 5 (신규기능) ── 모두 독립
Phase 6 (Minor) ── 모두 독립
```

---

## 5. 리스크

| 리스크 | 영향 | 대응 |
|--------|------|------|
| #16 생산지시 500이 데이터 이슈일 가능성 | 디버깅 시간 증가 | 3/13→3/16 변화 원인 git log 확인 |
| 출고/매출 모듈 코드 미파악 | 분석 시간 추가 | 사전 코드 탐색 필요 |
| QMS 흐름이 #20 완전 의존 | Phase 3 전체 블록 | #20 최우선 해결 |
| V1#33 + V1#32 + #13 단가 통합 | PricingService 전체 구현 필요 | 작업량 크므로 별도 집중 세션 |
| V1#15 부가세 프론트+백엔드 동시 수정 | 견적 금액 계산 전체 영향 | 기존 금액 데이터 영향 최소화 |
| V1#40,#41 신규기능은 설계 필요 | 기획/설계 선행 | 기획 확인 후 착수 |
| V1#6 거래처 mng 동기화 | mng DB 아키텍처 이해 필요 | samdb vs codebridge DB 관계 파악 |

---

## 6. V1 이관 이슈 추적

| V1 # | V2 Phase | 이슈 | 중요도 | V1 코드 검증 결과 |
|------|----------|------|--------|-----------------|
| V1#15 | Phase 1 | 부가세 미저장 | Critical | 프론트 tax_amount 미전송, 계산로직 미구현 |
| V1#33 | Phase 1 | 단가 수정 0원 | Critical | PricingService TODO 상태 |
| V1#6 | Phase 4 | 거래처 등록 미노출 | Major | mng DB 동기화 없음 |
| V1#11 | Phase 4 | 날짜 밀림 | Major | UTC 변환 미처리 |
| V1#29 | Phase 4 | 수주 수정 에러 | Major | items.*.item_name required 미수정 |
| V1#32 | Phase 4 | 단가 품목코드 변경 | Major | PricingService TODO 상태 |
| V1#37 | Phase 5 | 작업지시 수량 | Major | 수정 API 없음 |
| V1#40 | Phase 5 | 미터 단위 | Major | 기능 미구현 |
| V1#41 | Phase 5 | 재고조정 API | Major | 기능 미구현 |
| V1#13 | Phase 6 | 단가 0원 | Minor | 기획 확인 필요 |
| V1#17 | Phase 6 | PDF 생성 | Minor | 환경 이슈 미확인 |
| V1#24 | Phase 6 | 견적상태 불일치 | Minor | 미착수 |
| V1#34 | Phase 6 | 품목 규격 나머지 | Minor | accessor만 완료, WO 미적용 |
| V1#42 | Phase 6 | 검사모달 | Minor(Major급) | 구조 변경 필요 |
| V1#10 | Phase 0 | 작업 컬럼 | 보류 | 기획 확인 |
| V1#12 | Phase 0 | 연락처 필수값 | 확인필요 | UX 정책 |
| V1#43 | 보류 | 절곡 바라시 | 보류 | mng 선행 |

---

## 7. 변경 이력

| 날짜 | 항목 | 변경 내용 |
|------|------|----------|
| 2026-03-17 | - | 문서 초안 작성 (디펙리스트 CSV 기반 신규 26건) |
| 2026-03-17 | V1이관 | V1 코드 검증 후 미완료 17건 이관. 총 43건으로 통합 |
| 2026-03-18 | Phase 1 | Critical 6건 완료 (#16 기수정, #20 #28 #6 V1#15 V1#33 수정) |
| 2026-03-18 | Phase 2 | #22 #23 #26 완료, #25 #27 #29 별도 처리 |
| 2026-03-18 | Phase 3 | #7 #10 완료, #5 정상, #9 자동해소 |
| 2026-03-18 | Phase 4 | V1#29 완료, #11 #12 코드정상(재검증), 나머지 별도 처리 |
| 2026-03-18 | Phase 6 | #24 완료, #19 자동해소, #32 V1#24 V1#42 프론트이관 |
| 2026-03-18 | Phase 4 | #15 개소값 수정, #17 카드 재구성+stats 상태 추가, 공정그룹 한글화 |
| 2026-03-18 | Phase 0 | #4 디펙아님, #21 수정완료, V1#10 보류, V1#12 패스 |
| 2026-03-18 | Phase 6 | V1#13 디펙아님(단가 미등록), #18 패스(다른 개발자) |
| 2026-03-18 | 기타 | V1#6 구조확인(clients vs trading_partners), 개발서버 CLI timezone 수정 |
| 2026-03-19 | Phase 2 | #25 디펙아님(수동등록 기능 의도적 제거), #27 디펙아님(#25 해소, 자동 흐름으로 검증 가능) |
| 2026-03-19 | Phase 2 | #29 엑셀 업로드 "준비중" 처리 (양식다운로드+업로드 버튼 toast 비활성화) |
| 2026-03-19 | 문서 | 전체 경로를 full URL(https://dev.codebridge-x.com/ko/...)로 업데이트 |
| 2026-03-19 | Phase 4 | #17 완료 — 필터 전체 상태 추가 + 카드 필터 연동 + API 서버사이드 날짜 필터(COALESCE) + 건수 누락 해결 |
| 2026-03-19 | Phase 4 | #14 완료 — 백엔드 update() 시 freight_cost_type 유무로 options.status 자동 저장 |
| 2026-03-19 | Phase 4 | V1#11 완료 — Quote 모델 date 캐스트를 `date:Y-m-d` 형식으로 변경 (UTC 직렬화 방지) |
| 2026-03-19 | Phase 4 | #13 디펙아님(의도된 설계), V1#6 패스(mng 별도), V1#32 완료 — Price 모델 item() 관계 추가 + eager load |

---

## 8. 참고 문서

| 문서 | 경로 |
|------|------|
| V1 QA Plan (완료) | `docs/plans/qa-bugfix-plan.md` |
| 디펙리스트 CSV | `~/Downloads/경동dev_모듈별_기능 및 UI점검 - 디펙리스트.csv` |
| 문서 인덱스 | `docs/INDEX.md` |
| API 규칙 | `docs/dev/standards/api-rules.md` |
| 품질 체크리스트 | `docs/dev/standards/quality-checklist.md` |
| Git 컨벤션 | `docs/dev/standards/git-conventions.md` |
| 프론트엔드 아키텍처 | `docs/frontend/v1/01-architecture.md` |

---

## 9. 검증 결과

> 각 Phase 완료 후 이 섹션에 검증 결과 추가

### 9.1 Phase 1 검증

| 테스트 | 예상 결과 | 실제 결과 | 상태 |
|--------|----------|----------|------|
| 수주확정 → 생산지시 (#16) | 500 에러 없음 | | ⏳ |
| 제품검사 등록 → 목록 (#20) | 즉시 노출 | | ⏳ |
| 출고완료 → 매출 금액 (#28) | 정상 금액 | | ⏳ |
| QMS 미확정 제외 (#6) | 확정건만 표시 | | ⏳ |
| 부가세 저장/노출 (V1#15) | 부가세 금액 표시 | | ⏳ |
| 단가 수정 저장 (V1#33) | 입력 금액 유지 | | ⏳ |

---

*V1(qa-bugfix-plan.md): 19건 완료 → 완료 처리*
*V2(본 문서): 신규 26건 + V1 이관 17건 = 43건 통합 관리*
