diff --git a/docs/yc/PDM[계획]-제품구분-품목이동.md b/docs/yc/PDM[계획]-제품구분-품목이동.md
new file mode 100644
index 0000000..70d7255
--- /dev/null
+++ b/docs/yc/PDM[계획]-제품구분-품목이동.md
@@ -0,0 +1,103 @@
+# PDM[계획] 제품구분 품목정보 이동
+
+## 개요
+견적요청등록, 수주통합등록 두 팝업 화면에서 **제품구분**을 기본정보 그리드에서 품목정보 그리드로 이동하고, Machine(0000928) 제품구분 선택 시 수량만큼 행을 자동 분할하는 기능 구현.
+
+## 현재 동작
+- 기본정보 그리드에 제품구분 드롭다운 존재 (공통코드 0000001)
+- CONTRACT_MGMT.PRODUCT 컬럼에 저장
+- 모든 품목이 동일한 제품구분을 공유
+
+## 변경 후 동작
+- 기본정보에서 제품구분 제거
+- 품목정보 그리드의 No와 품번 사이에 제품구분 드롭다운 추가
+- 각 품목별로 제품구분 개별 선택 가능
+- CONTRACT_ITEM.PRODUCT 컬럼에 품목별 저장
+- **Machine(0000928) 특수 로직:**
+ - 품목 추가 시 제품구분이 Machine이면 견적수량 N → N개 행 생성 (각 수량=1)
+ - Machine이 아니면 기존과 동일 (수량 자유)
+
+## 시각적 예시
+
+### 변경 전
+```
+[기본정보]
+주문유형: [선택] | 제품구분: [Machine ▼] | 국내/해외: [선택] | 고객사: [선택]
+
+[품목정보]
+No | 품번 | 품명 | S/N | 견적수량 | ...
+```
+
+### 변경 후
+```
+[기본정보]
+주문유형: [선택] | 국내/해외: [선택] | 고객사: [선택] | (빈칸)
+
+[품목정보]
+No | 제품구분 | 품번 | 품명 | S/N | 견적수량 | ...
+```
+
+## 아키텍처
+
+```mermaid
+graph TD
+ A[JSP 품목 추가] --> B{제품구분 선택}
+ B -->|Machine 0000928| C[수량 N 입력]
+ C --> D[N개 행 생성, 각 수량=1]
+ B -->|기타| E[1개 행 생성, 수량 자유]
+ D --> F[fn_collectItemsData]
+ E --> F
+ F --> G[items_json POST]
+ G --> H[Service: saveContractItems]
+ H --> I[Mapper: upsertContractItem + PRODUCT]
+ I --> J[CONTRACT_ITEM.PRODUCT 저장]
+```
+
+## 변경 파일
+
+| 파일 | 변경 내용 |
+|------|----------|
+| DB: CONTRACT_ITEM | PRODUCT VARCHAR(20) 컬럼 추가 |
+| contractMgmt.xml | master INSERT/UPDATE에서 PRODUCT 주석처리, item INSERT/UPSERT에 PRODUCT 추가 |
+| ContractMgmtService.java | item 저장 시 product 파라미터 전달 |
+| estimateRegistFormPopup.jsp | 기본정보 제품구분 제거, 품목정보에 추가, Machine 로직 |
+| estimateAndOrderRegistFormPopup.jsp | 동일 변경 |
+
+## 코드 설계
+
+### DB
+```sql
+ALTER TABLE CONTRACT_ITEM ADD COLUMN PRODUCT VARCHAR(20);
+```
+
+### Mapper XML
+- `upsertContractItem`: INSERT/UPDATE에 PRODUCT 추가
+- `upsertContractItemWithOrder`: INSERT/UPDATE에 PRODUCT 추가
+- `saveContractMgmtInfo`: PRODUCT 관련 행 주석처리
+- `saveEstimateAndOrderInfo`: PRODUCT 관련 행 주석처리
+- `getContractItems`: SELECT에 PRODUCT 추가
+
+### JSP (공통 패턴)
+```javascript
+// 품목 추가 시 제품구분 드롭다운
+html += '
';
+html += ' | ';
+
+// 드롭다운 초기화
+fnc_getCodeListAppend("0000001", "PRODUCT_" + itemId, "");
+
+// Machine 분할 로직
+if(productCode === '0000928') {
+ var qty = parseInt(quantityInput);
+ for(var i = 0; i < qty; i++) { fn_addItemRow(with quantity=1); }
+}
+```
+
+## 예상 문제
+- 기존 데이터: CONTRACT_MGMT.PRODUCT에만 값이 있고 CONTRACT_ITEM.PRODUCT는 NULL → 조회 시 COALESCE 처리 필요
+- Machine 행 분할 시 S/N 등 부가 데이터 처리 → 동일 값 복사
+
+## 설계 원칙
+- 기존 CONTRACT_MGMT.PRODUCT는 주석처리만 (데이터 보존)
+- 품목별 제품구분 독립 관리로 확장성 확보
+- Machine 로직은 클라이언트(JSP)에서만 처리 (서버는 받은 대로 저장)
diff --git a/docs/yc/PDM[맥락]-제품구분-품목이동.md b/docs/yc/PDM[맥락]-제품구분-품목이동.md
new file mode 100644
index 0000000..1ab279d
--- /dev/null
+++ b/docs/yc/PDM[맥락]-제품구분-품목이동.md
@@ -0,0 +1,39 @@
+# PDM[맥락] 제품구분 품목정보 이동
+
+## 왜 하는가
+기존에는 제품구분이 기본정보(마스터) 레벨에서 관리되어 한 건의 견적/수주에 포함된 모든 품목이 동일한 제품구분을 가져야 했다. 실무에서는 한 건에 Machine과 Part가 혼재할 수 있으므로, 품목별로 제품구분을 개별 지정할 수 있도록 변경한다.
+
+또한 Machine(0000928) 제품의 경우 수량 10이면 개별 관리(S/N 추적 등)를 위해 10개의 독립 행으로 분할하여 각각 수량 1로 관리해야 하는 업무 요구사항이 있다.
+
+## 핵심 결정 + 근거
+
+| 결정 | 근거 |
+|------|------|
+| CONTRACT_MGMT.PRODUCT 주석처리 (삭제X) | 기존 데이터 보존, 마이그레이션 리스크 최소화 |
+| CONTRACT_ITEM.PRODUCT 추가 | 품목별 독립 관리를 위한 정규화 |
+| Machine 분할을 클라이언트에서 처리 | 서버는 받은 그대로 저장, 로직 단순화 |
+| 공통코드 0000001 그대로 사용 | 기존 코드체계 유지 |
+
+## 관련 파일
+
+### 견적요청등록 (estimateRegistFormPopup.jsp)
+- Controller: `ContractMgmtController.java:1692` (estimateRegistFormPopup)
+- Service: `ContractMgmtService.java:544` (saveContractMgmtInfo) → `saveContractItems:3121`
+- Mapper: `contractMgmt.xml:1367` (saveContractMgmtInfo), `:5715` (upsertContractItem)
+- 저장 URL: `/contractMgmt/saveContractMgmtInfo.do`
+- 마스터 테이블: CONTRACT_MGMT
+- 품목 테이블: CONTRACT_ITEM
+
+### 수주통합등록 (estimateAndOrderRegistFormPopup.jsp)
+- Controller: `ContractMgmtController.java:2775` (saveEstimateAndOrderInfo)
+- Service: `ContractMgmtService.java:2664` (saveEstimateAndOrderInfo)
+- Mapper: `contractMgmt.xml:5149` (saveEstimateAndOrderInfo), `:5761` (upsertContractItemWithOrder)
+- 저장 URL: `/contractMgmt/saveEstimateAndOrderInfo.do`
+- 마스터 테이블: CONTRACT_MGMT
+- 품목 테이블: CONTRACT_ITEM
+
+## 기술 참고
+- 공통코드 조회: `fnc_getCodeListAppend(codeId, selectboxId, selectedVal)` — common.js
+- 공통코드 0000001의 자식 코드 중 0000928이 Machine
+- 기존 isMachine 판단: `ContractMgmtService.java:2811` — `"0000928".equals(product_cd)`
+- 품목 UPSERT 패턴: `ON CONFLICT (OBJID) DO UPDATE`
diff --git a/docs/yc/PDM[체크]-제품구분-품목이동.md b/docs/yc/PDM[체크]-제품구분-품목이동.md
new file mode 100644
index 0000000..f2c5e18
--- /dev/null
+++ b/docs/yc/PDM[체크]-제품구분-품목이동.md
@@ -0,0 +1,64 @@
+# PDM[체크] 제품구분 품목정보 이동
+
+## 공정 상태: 0%
+
+## 구현 체크리스트
+
+### DB 변경
+- [ ] CONTRACT_ITEM 테이블에 PRODUCT VARCHAR(20) 컬럼 추가
+
+### Mapper XML (contractMgmt.xml)
+- [ ] saveContractMgmtInfo: PRODUCT 관련 INSERT/UPDATE 주석처리
+- [ ] saveEstimateAndOrderInfo: PRODUCT 관련 INSERT/UPDATE 주석처리
+- [ ] upsertContractItem: PRODUCT 추가 (INSERT + ON CONFLICT UPDATE)
+- [ ] upsertContractItemWithOrder: PRODUCT 추가 (INSERT + ON CONFLICT UPDATE)
+- [ ] getContractItems: SELECT에 PRODUCT 추가
+- [ ] insertContractItem: PRODUCT 추가
+- [ ] insertContractItemWithOrder: PRODUCT 추가
+
+### Service (ContractMgmtService.java)
+- [ ] saveContractItems(): itemParam에 product 전달
+- [ ] saveEstimateAndOrderInfo(): itemMap에 product 전달
+
+### 견적요청등록 (estimateRegistFormPopup.jsp)
+- [ ] 기본정보: 제품구분 label+select 제거 (주석처리)
+- [ ] 기본정보: colgroup 재배치
+- [ ] 품목정보: colgroup에 제품구분 컬럼 추가
+- [ ] 품목정보: thead에 제품구분 헤더 추가
+- [ ] fn_addItemRow(): 제품구분 드롭다운 셀 추가
+- [ ] fn_addItemRow(): Machine 수량분할 로직 추가
+- [ ] fn_loadExistingItems(): 제품구분 표시 + 드롭다운 초기화
+- [ ] fn_collectItemsData(): product 수집
+- [ ] fn_validateItems(): 제품구분 필수 검증
+- [ ] noItemRow colspan 조정
+
+### 수주통합등록 (estimateAndOrderRegistFormPopup.jsp)
+- [ ] 기본정보: 제품구분 label+select 제거 (주석처리)
+- [ ] 기본정보: colgroup 재배치
+- [ ] 품목정보: colgroup에 제품구분 컬럼 추가
+- [ ] 품목정보: thead에 제품구분 헤더 추가
+- [ ] fn_addItemRow(): 제품구분 드롭다운 셀 추가
+- [ ] fn_addItemRow(): Machine 수량분할 로직 추가
+- [ ] fn_loadExistingItems(): 제품구분 표시 + 드롭다운 초기화
+- [ ] fn_collectItemsData(): product 수집 (수주 데이터 포함)
+- [ ] fn_validateItems(): 제품구분 필수 검증
+- [ ] noItemRow/totalRow colspan 조정
+
+## 검증 체크리스트
+- [ ] 견적요청등록: 기본정보에서 제품구분 드롭다운 미표시
+- [ ] 견적요청등록: 품목정보 No 다음에 제품구분 컬럼 존재
+- [ ] 견적요청등록: 품목 추가 시 제품구분 드롭다운 작동 (0000001 목록)
+- [ ] 견적요청등록: Machine + 수량10 → 10행 생성, 각 수량1
+- [ ] 견적요청등록: non-Machine → 수량 자유입력
+- [ ] 견적요청등록: 저장 후 재오픈 시 제품구분 정상 표시
+- [ ] 수주통합등록: 위 항목 모두 동일 정상 작동
+- [ ] DB: CONTRACT_ITEM.PRODUCT에 값 정상 저장
+
+## 정리
+- [ ] db/checkpoints/ 덤프 파일 정리
+- [ ] 불필요한 console.log 제거
+
+## 변경 이력
+| 날짜 | 변경 내용 |
+|------|----------|
+| 2026-03-26 | PCC 문서 초안 생성 |