# CMSLAB WMS 2차 전달자료 현황 분석 v0.1

- 분석일: 2026-08-28
- 원천 위치: `/Users/manager/Downloads/WMS 자료`
- 문서 성격: **대내 전용 파생 분석문서**
- 원본 관리 원칙: 고객이 전달한 엑셀·이미지 원본은 수정하지 않았으며, 이 문서는 원본과 분리하여 관리한다.
- 표기 원칙
  - **확정 사실**: 전달 파일의 셀 값·화면·구조에서 직접 확인한 내용
  - **해석/추정**: 여러 원천의 명칭과 코드가 일치하여 가능성이 높으나 공식 매핑표로 확정되지 않은 내용
  - **추가 확인**: 현재 파일만으로 확정할 수 없는 내용

## 1. 핵심 결론

1. 품고, 한익스프레스, 현대글로비스의 **제품/SKU 마스터와 재고·입출고 표본이 실제로 전달되었다.** 제품코드·품목명·바코드를 공통 연결축으로 사용할 수 있어 `ITEM_CODE_MAP` 초안 수립은 가능하다.
2. 세 시스템에 `CFBS`, `CFSC`, `CFPA` 등의 동일한 ERP형 품목코드가 사용되고 있다. 다만 이것이 ERP 품목코드의 공식 정본이라는 점은 ERP 품목마스터와 대조한 뒤 확정해야 한다.
3. 한익스프레스 자료는 `이천FC1`의 LOT·유효기한·정상/불량 수량을 포함한다. **이천 메인 WMS의 가장 구체적인 재고 원천**으로 사용할 수 있다.
4. 현대글로비스 자료는 `ICN1/인천공항센터`의 WMS 데이터다. ERP의 `W543 현대글로비스(일본)`과 관련될 가능성은 높지만, 전달 파일만으로 `ICN1 = W543` 또는 `일본 OMS`라고 확정할 수는 없다.
5. 원료마스터, BOM·처방, RM팀 출하적부 판정 원장은 이번 WMS 폴더에 없다. 따라서 **제품/SKU와 창고재고 파악은 진전됐지만 원료·BOM 기준 수립은 여전히 미수령 상태**다.
6. 모든 통합문서 시트에서 수식, 숨김 시트·행·열, 완전히 동일한 중복행은 발견되지 않았다. 다만 보고서용 합계행·소계행, 2단 헤더, 미입력 대체값, 코드·명칭 충돌은 별도로 정제해야 한다.

## 2. 수령 구성 및 파일별 프로파일

엑셀의 행 수는 헤더를 포함한 물리 범위와 실제 데이터 영역을 구분했다. `기준시각 미표기`는 파일 내부에 추출 시각 또는 재고 기준일시가 별도 필드로 없다는 뜻이다.

| 원천 | 파일·시트 | 물리 범위 | 헤더 | 실데이터·보고영역 | 기간·기준 | 주요 내용 |
|---|---|---:|---:|---:|---|---|
| ERP | `ERP 창고 구분 내역.xls` / `Sheet1` | 180×4 | 1행 | 179행 | 기준일 미표기 | S/L코드·명, 사용유무, 창고 성격 |
| 품고 | `SKU목록.xlsx` / `SKU` | 161×38 | 1행 | 160행 | 기준일 미표기 | 바코드, 고객사 관리번호, SKU명, LOT·유통기한 관리여부, 로케이션, 단위·입수·치수 |
| 품고 | `SKU별재고조회.xlsx` / `Sheet 1` | 21×23 | 1행 | 20행 | 기준시각 미표기 | SKU·센터, 총/가용/예상/진열/창고/불용/입고재고 |
| 품고 | `입고목록.xlsx` / `Sheet 1` | 8×22 | 1행 | 7행 | 도착예정 2026-07-29~08-27 | 입고건 단위 상태·예정·검수수량. SKU 상세와 LOT는 없음 |
| 품고 | `주문원장목록.xlsx` / `Sheet 1` | 102×33 | 1행 | 주문 100행 + 합계행 | 주문 2026-08-26 13:58~08-27 09:56 | 스마트스토어 주문, 채널 상품코드, 금액, 주문자·수취인 개인정보 |
| 한익스프레스 | `상품마스터.xlsx` / `sheet1` | 1,536×61 | 1~2행 | 1,534행 | 취급개시일 2025-08-11~2026-08-26 | 자사/고객사상품코드, 상품명, 분류, 입수량, LOT·유효기간, 센터·창고, SCAN CODE |
| 한익스프레스 | `수주일보.xlsx` / `sheet1` | 1,283×42 | 1~2행 | 보고영역 1,281행, 상품코드 존재 1,210행 | 수주·납품 2026-08-26~08-27 | 점포·상품·수주/납품수량, 지정 LOT. 소계·합계행 포함 |
| 한익스프레스 | `입고현황.xlsx` / `sheet1` | 394×29 | 1~2행 | 상세 391행 + 합계행 | 입고 2026-08-03~08-26 | 상품코드, 고객상품코드, LOT, 입고수량, 유효일자, 화주속성 |
| 한익스프레스 | `재고현황.xlsx` / `sheet1` | 3,741×35 | 1~2행 | 상세 3,738행 + 합계행 | 입고일 2025-08-15~2026-08-26, 재고 기준시각 미표기 | 셀·상품·LOT·유효일, 재고등급, 정상/불량/합계수량 |
| 현대글로비스 | `SKU 마스터관리.xlsx` / `sheet1` | 271×97 | 1행 | 270행 | 생성 2025-09-30~2026-08-19 | 품목코드·명·바코드·단위, LOT/유통기한 설정, 입수, 안전재고 등 |
| 현대글로비스 | `입고내역.xlsx` / `sheet1` | 15×84 | 1행 | 14행 | 전기·입고 2026-08-11~08-19 | 품목·입고수량·생산LOT·재고상태·유통기한. 14건 모두 `미작업` |
| 현대글로비스 | `재고현황.xlsx` / `sheet1` | 104×21 | 1행 | 103행 | 마지막 입고 2026-05-19~08-19, 출고 2026-06-10~08-26 | SKU별 재고·가용·보류·할당·이동·출고중 수량 |
| 현대글로비스 | `출고내역.xlsx` / `sheet1` | 3,866×80 | 1행 | 3,865행 | 출고 2026-08-18~08-26 | 직수출 출고 문서, 품목·수량·상태, 수령자 개인정보 |

별도 PNG 화면은 모두 2026-08-27 캡처다. 화면을 통해 품고, `GAON HanExpress`, 현대글로비스 `HGLIS` 시스템 사용을 확인했다.

## 3. 시스템·창고 원천 식별

| 원천 | 확정 사실 | 해석/추정 | 추가 확인 |
|---|---|---|---|
| 품고 | 시스템 화면이 품고이며 재고 센터는 `이천375 1층(코어)`다. SKU·재고·입고·주문 기능이 존재한다. | ERP의 `W515 네이버(품고)`와 연결되는 원천으로 판단된다. | `이천375`가 네이버 품고 전용인지, 다른 주문도 함께 처리하는지 확인 필요 |
| 한익스프레스 | GAON HanExpress WMS, 화주 CMSLAB, 센터 `0010000/이천FC1`이다. LOT·유효기한·재고상태별 수량을 관리한다. | ERP `W131~W135 한물류센터`의 메인 물류 원천일 가능성이 높다. | WMS 센터/화주창고 코드와 ERP S/L코드 간 공식 대응표 필요 |
| 현대글로비스 | HGLIS의 WMS·OMS 메뉴가 있고, 전달 데이터의 물류센터는 `ICN1/인천공항센터`다. 출고유형에 `CBT(직수출출고)`가 존재한다. | ERP `W543 현대글로비스(일본)`의 물류 원천일 가능성이 높다. | `ICN1`과 W543의 관계, 일본 OMS·인천 WMS 간 데이터 흐름을 확인해야 함 |

## 4. ERP S/L 코드 해석

`ERP 창고 구분 내역.xls`에는 179개의 S/L코드가 있으며 코드 중복과 공란은 없다. `사용유무`는 `YES 164건`, `NO 15건`이다.

### 4.1 핵심 S/L

| 코드 | 명칭 | 파일에 기재된 성격 | 해석 |
|---|---|---|---|
| W126 | 중국법인 | 중국사업팀 가상창고 | 중국 상해법인의 실물 재고와 ERP 가상재고 간 반영 규칙 확인 필요 |
| W127 | QC | 제조사 입고창고, 적부판정 전 재고 입고 | 품질판정 전 재고 상태를 표현하는 핵심 S/L |
| W131 | (이천)한물류센터 | 메인 물류창고-정상 | 정상재고 물리창고 구분 |
| W132 | (반품)한물류센터 | 메인 물류창고-반품 | 별도 물류센터가 아니라 메인 물류의 반품 재고 구분으로 확인 |
| W133 | (해외)한물류센터 | 해외사업팀 가상창고 | 물리창고가 아니라 ERP 가상창고로 확인 |
| W134 | (보류)한물류센터 | 메인 물류창고-보류 | 메인 물류의 보류 재고 구분 |
| W135 | (불량)한물류센터 | 메인 물류창고-불량 | 별도 `불량창고`라고 단정하지 말고 불량 재고 S/L로 정의해야 함 |
| W136 | (일본)한물류센터 | 일본사업팀 가상창고 | 일본사업팀 가상재고 |
| W302 | 샘플보관(본사) | 거래처 창고 | 샘플 재고 구분 존재 |
| W303 | 연구소(본사) | 거래처 창고 | 연구소 재고 구분 존재 |
| W515 | 네이버(품고) | 거래처 창고 | 품고 재고와 대조할 ERP S/L 후보 |
| W543 | 현대글로비스(일본) | 거래처 창고 | 글로비스 재고와 대조할 ERP S/L 후보 |

그 밖에 제조사 창고 66건, 거래처 창고 86건이 등록되어 있고 쿠팡, 아마존, TikTok Shop, 라쿠텐 등 다수 외부 재고 원천 후보도 포함돼 있다.

### 4.2 S/L 품질 이슈

- `T001 SCM통제재고(사용X)`는 명칭에 `사용X`가 있으나 `사용유무=YES`다. 사용유무의 현행 의미를 재확인해야 한다.
- `w467` 한 건만 소문자로 입력돼 있어 코드 대문자 표준화가 필요하다.
- ERP S/L에는 물리창고, 가상창고, 제조사 보유재고, 거래처 보유재고가 함께 있다. 통합창고 마스터에는 `warehouse_type`과 `inventory_ownership`을 분리해야 한다.

## 5. 제품/SKU 및 ITEM_CODE_MAP 활용성

### 5.1 원천별 코드 품질

| 원천 마스터 | 전체행 | 코드 필드 | 코드 비공란/고유 | 주요 이슈 |
|---|---:|---|---:|---|
| 품고 | 160 | 고객사 관리번호 | 158/158 | `반출`, `송장만부착` 2건은 바코드와 명칭만 있고 코드가 없음 |
| 한익스프레스 | 1,534 | 고객사상품코드 | 1,534/1,530 | 4개 코드가 중복행으로 존재. 자사코드와 고객사코드는 1,533건 일치, 1건은 `DMMP007` 대 `DMMP0007` 불일치 |
| 현대글로비스 | 270 | 품목코드 | 270/270 | 코드 자체는 고유. 삭제표시 `V` 2건 존재 |

각 시스템 안에서는 전달받은 거래·재고 표본의 품목코드가 해당 시스템 마스터에 모두 존재했다.

- 품고 재고: 고유 18개 중 18개 매핑
- 한익스프레스 재고: 고유 952개 중 952개 매핑
- 한익스프레스 입고: 고유 114개 중 114개 매핑
- 현대글로비스 재고: 고유 103개 중 103개 매핑
- 현대글로비스 입고: 고유 14개 중 14개 매핑
- 현대글로비스 출고: 고유 64개 중 64개 매핑

### 5.2 시스템 간 코드 교집합

| 비교 | 공통 코드 수 | 동일 코드의 품목명 불일치 | 양쪽 바코드가 있을 때 바코드 불일치 |
|---|---:|---:|---:|
| 품고 ↔ 한익스프레스 | 156 | 12 | 0 |
| 품고 ↔ 현대글로비스 | 126 | 11 | 1 |
| 한익스프레스 ↔ 현대글로비스 | 269 | 25 | 2 |
| 세 원천 공통 | 126 | - | - |

품목명 불일치는 주로 다음 유형이다.

- 효소/엔자임과 같은 동의어
- 품명 내 단어 순서 차이
- `2304` 대 `2502`와 같은 개정시점·리뉴얼 표기 차이
- `단상자X`, 채널명, 용량 표기 위치 차이
- 단순 오탈자 또는 잘린 문자열

따라서 `ITEM_CODE_MAP`은 품목명 일치만으로 만들지 않고 다음 우선순위를 사용해야 한다.

1. ERP 품목코드와의 공식 일치
2. 원천의 고객사품목코드·고객사관리번호
3. 바코드
4. 정규화된 품목명·용량·브랜드
5. 리뉴얼·세트·샘플·비매품 속성

바코드도 정본으로 단독 사용하면 안 된다. 현대글로비스 마스터는 270행에 바코드 고유값이 257개이며, 11개 바코드가 24개 품목에 중복 사용된다. 또한 시스템 간 실제 바코드 충돌 후보로 `CMVE0096`, `CFPA0230`, `DBSM0013`이 확인됐다.

한익스프레스의 `SCAN CODE`도 1,534행 중 공란 265행, 값 `0`이 513행이다. 실질적인 바코드가 있는 행만 보조 매핑에 사용해야 한다. 반면 품고 바코드는 160행 모두 채워져 있고 표본 내에서는 전부 고유하다.

### 5.3 ITEM_CODE_MAP 초기 권장 컬럼

| 컬럼 | 용도 |
|---|---|
| `source_system` | ERP, POOMGO, HANEXPRESS, HGLIS 등 |
| `source_item_code` | 해당 시스템의 품목/SKU 코드 |
| `erp_item_code_candidate` | ERP 대조 전 후보 코드 |
| `canonical_item_code` | 합의 후 확정되는 기준 제품코드 |
| `source_item_name` | 원천 품목명 보존 |
| `normalized_item_name` | 공백·표기·동의어 정규화명 |
| `barcode` | 보조 식별자. 중복·오류 허용 전제 |
| `item_type` | 제품·부자재·원자재·세트·샘플·비매품 등 |
| `unit` | EA, BOX 등 원천 단위 |
| `valid_from`, `valid_to` | 리뉴얼·단종·코드변경 이력 |
| `mapping_status` | 자동일치, 검토필요, 확정, 제외 |
| `mapping_basis` | 코드·바코드·명칭 등 매핑 근거 |

## 6. 재고·LOT 구조와 품질

### 6.1 품고

- SKU별 재고표는 20행이며 센터는 모두 `이천375 1층(코어)`다.
- 유형은 제품 17행, 부자재 2행, 원자재 1행이다.
- `총재고 = 진열재고 + 창고재고 + 불용재고`가 20행 모두 성립한다.
- 총재고와 가용재고는 19행에서 같고 1행은 차이가 있다. 배정·예약·출고대기 산식은 현재 파일에 없다.
- SKU마스터에는 LOT관리 `Y 152건`, `N 7건`, 공란 1건이 있으나, 전달된 현재고 파일은 LOT·유통기한 단위가 아니다.
- 입고목록은 입고문서 요약으로 SKU별 상세·LOT가 없고, 주문원장의 채널 상품코드는 WMS SKU와 직접 연결되지 않는다. 주문 100행 중 `상품 옵션 코드`는 2행만 존재한다.

### 6.2 한익스프레스

- 재고 상세 3,738행, 고유 상품 952개, 고유 LOT 표기 952개다.
- `LOTX` 356행, `로트X` 118행으로 총 474행이 대체 LOT를 사용한다.
- 제조일자는 3,738행 모두 `1899-12-29`로 사실상 미입력 대체값이다.
- 유효일자 `2099-12-31`이 498행에 사용되며, 2026-08-27 이전 유효일도 73행 존재한다. 실제 무기한·미입력·만료재고를 구분하는 규칙이 필요하다.
- 화주창고 값은 `AG 3,337행`, `EXP 256행`, `QC 145행`이고 재고등급은 `A 2,570`, `X 718`, `B 256`, `C1 120`, `C2 37`, `C3 37`이다.
- 불량 환산수량이 0보다 큰 행은 712건이다.
- 모든 상세행에서 `합계수량 = 정상수량 환산 + 불량수량 환산`이 성립한다.
- `용도설명`에 일반재고, 출하판정전, 반품 불량, 임가공생성 등 자유기술이 혼재한다. 재고상태를 코드화하기 전에 이 값들의 업무 의미와 우선순위를 확인해야 한다.
- 가용·배정·예약 수량 필드는 현재 재고표에 없다. 정상수량을 곧바로 가용재고로 해석해서는 안 된다.

### 6.3 현대글로비스

- 재고현황은 103개 SKU의 집계 재고이며 모두 마스터에 존재한다.
- `재고수량 = 가용수량 + 보류수량 + 할당수량 + 이동OUT + 출고중 - 이동IN`이 103행 모두 성립한다.
- 보류수량이 있는 SKU 24개, 할당수량이 있는 SKU 20개, 출고중 수량이 있는 SKU 19개다.
- 현재고 파일에는 LOT와 유통기한이 없다. 시스템 화면에는 LOT별 조회 기능이 있고 입고표에도 생산LOT·유통기한이 있으므로 LOT별 현재고 다운로드가 별도로 필요하다.
- 입고 14행은 생산LOT 12행, 유통기한 14행을 포함하지만 상태가 전부 `NEW/미작업`이고 입고확정일이 비어 있다. 확정입고 실적이 아니라 미처리 입고문서일 수 있으므로 실입고로 사용하면 안 된다.
- 출고 3,865행은 모두 `출고완료`이며 기간은 2026-08-18~08-26이다.

## 7. 공통 데이터 품질 이슈

### 7.1 엑셀 구조

- 모든 통합문서 시트는 visible 상태이며 숨김 시트·행·열은 없다.
- 수식 셀은 0개다. 전달 자료는 수식 원장이 아니라 시스템 다운로드 결과다.
- 데이터 영역에서 완전히 동일한 중복행은 0건이다. 단, 품목코드 중복과 보고서 합계·소계행은 별도 제거가 필요하다.
- 한익스프레스 파일은 2단 헤더를 사용하므로 `정상수량_BOX`, `정상수량_EA`, `정상수량_환산`처럼 부모·자식 헤더를 결합해야 한다.
- 한익스프레스 수주일보는 그룹 필드의 공란과 소계·합계행이 포함돼 있어 단순 행 적재가 아니라 상세행 판별과 필요한 경우 값 채우기가 필요하다.

### 7.2 현대글로비스 dimension 메타데이터 결함

현대글로비스 4개 파일의 원시 워크시트 XML에는 실제 데이터 범위와 달리 `<dimension ref="A1">`가 기록돼 있다. 이 때문에 `openpyxl`의 `read_only=True` 등 dimension을 신뢰하는 스트리밍 파서는 네 파일을 1행×1열로 잘못 인식한다.

| 파일 | 잘못 기록된 dimension | 실제 범위 | 실제 값 셀 수 |
|---|---|---|---:|
| SKU 마스터관리 | A1 | A1:CS271 | 26,287 |
| 입고내역 | A1 | A1:CF15 | 1,260 |
| 재고현황 | A1 | A1:U104 | 2,184 |
| 출고내역 | A1 | A1:CB3866 | 309,280 |

정상 범위는 일반 로드 모드(`read_only=False`)와 원시 XML의 행·셀 개수로 교차검증했다. 수식 캐시 문제는 아니다. 향후 적재 시 일반 모드로 열거나 실제 셀 참조를 기준으로 dimension을 재산정해야 한다.

### 7.3 기준시각·상태값

- 세 재고 파일 모두 파일 안에 `재고 기준시각` 또는 `추출시각`이 명시돼 있지 않다.
- 화면 캡처일은 2026-08-27이지만, 이를 재고 스냅샷의 정확한 기준시각으로 간주할 수는 없다.
- 원천별 `가용`, `정상`, `진열`, `창고`, `보류`, `할당`, `불용`, `불량`, `QC`, `EXP`가 같은 의미체계가 아니다. 통합 전에 상태 매핑표가 필요하다.

## 8. 개인정보·보안 주의

- 품고 주문원장에는 주문자·수취인 이름, 전화번호, 주소, 배송메시지가 포함돼 있다.
- 현대글로비스 출고내역에는 해외 수령자 이름, 연락처, 우편번호, 주소가 포함돼 있다.
- 현재 제품·재고·품목코드 분석에는 이 개인정보가 필요하지 않다. 분석·적재 시 해당 컬럼은 기본 제외하고, 주문·배송 분석이 필요한 경우에도 별도 권한과 보존기간을 적용해야 한다.
- 화면 캡처에도 사용자 이름이 노출돼 있으므로 외부 공유용 문서에 원본 화면을 그대로 삽입하지 않는다.

## 9. 기존 요청 대비 충족도

| 요청 영역 | 충족도 | 현재 확인된 내용 | 남은 공백 |
|---|---|---|---|
| 제품/SKU 기준자료 | 높음 | 세 WMS 마스터와 코드·명칭·바코드 확보 | ERP 품목마스터 정본 대조, 코드 오너십·체번규칙 |
| 주요 WMS 품목·재고 데이터 | 높음 | 품고·한익스프레스·글로비스 파일 확보 | 정확한 추출시각, 정기 추출방식, 공식 담당자 |
| 창고·재고 상태 구조 | 중간 | ERP S/L 179개, 시스템별 상태·수량 필드 확보 | S/L↔WMS 센터/상태 공식 매핑, 가용재고 정의 |
| LOT·유통기한 | 중간 | 한익 재고와 글로비스 입고에 LOT·유통기한 존재 | 품고·글로비스 LOT별 현재고, 대체 LOT와 sentinel 규칙 |
| 원료마스터 | 미충족 | WMS에서 `원자재` 유형 표본 1건만 확인 | 연구소 원료 식별자료, 사급원료 재고, 원료코드 정본 |
| BOM·처방 | 미충족 | 없음 | 대표 제품 BOM·처방 구조와 관리주체 |
| RM팀 출하적부 | 미충족 | 한익 재고에 QC·출하판정전 상태는 존재 | RM팀 판정 원장, 판정결과와 LOT 연결키 |
| 접근권한·연동 | 일부 | 실제 시스템 화면과 다운로드 결과 확인 | 읽기 전용 권한, API/정기 다운로드 가능 여부, 운영 담당자 |

## 10. 즉시 후속확인 최소항목

자료를 다시 대량 요청하기보다 아래 순서로 최소 확인하는 것이 적절하다.

1. **내부 ERP 조회**: ERP 품목마스터에서 세 WMS의 ERP형 코드와 품목명·바코드를 대조하여 `erp_item_code_candidate`를 확정한다.
2. **재고 스냅샷 기준**: 세 원천 담당자에게 현재고 파일의 추출일시·검색조건·정기 다운로드 가능 여부만 확인한다.
3. **한익스프레스 상태 정의**: `AG/EXP/QC`, 재고등급 `A/B/C/X`, 정상·불량·출하판정전의 의미와 가용재고 산식을 확인한다.
4. **LOT별 현재고 보완**: 품고와 현대글로비스에서 LOT·유통기한·재고상태가 포함된 현재고 다운로드가 가능한지 확인한다.
5. **S/L 공식 매핑**: ERP `W131~W135`, `W515`, `W543`과 각 WMS 센터·상태코드의 공식 대응 관계를 확인한다.
6. **원료·BOM은 별도 트랙**: 연구소 원료관리자료, 사급원료 재고, 대표 제품 BOM·처방, RM팀 출하적부 표본은 WMS 분석과 분리하여 기존 요청대로 수령한다.

## 11. 분석상 확정하지 않은 사항

- 세 WMS의 고객사 품목코드가 ERP 품목코드의 공식 정본이라는 단정
- 한익스프레스 `이천FC1`과 ERP `W131~W135`의 세부 상태별 1:1 대응
- 현대글로비스 `ICN1`과 ERP `W543`의 직접 대응 및 일본 OMS와의 데이터 흐름
- `1899-12-29`, `2099-12-31`, `LOTX/로트X`의 공식 업무 의미
- 제품명·바코드 충돌 중 어느 시스템 값이 최신 정본인지
- 파일 전달일과 재고 스냅샷 기준시각이 동일하다는 가정
