# CMSLAB 판매계획·입고·외주 추가 원천 현황분석

- 작성일: 2026-08-28
- 버전: v0.1
- 분석 범위: `/Users/manager/Downloads`의 Google Sheet 다운로드 XLSX 14개
- 비교 기준: `/Users/manager/Downloads/WMS 자료`의 한익스프레스·품고·현대글로비스 2차 원본
- 방법: XLSX를 읽기 전용으로 열어 시트 구조, 수식, 명시적 컬럼, 코드 집합을 비교했다. 원본은 수정하지 않았다.

## 1. 결론

### 1.1 현재 파악된 전체 흐름

```text
팀별 판매계획 LIST 시트
    ↓ IMPORTRANGE / QUERY
2026 판매계획_영업입력.xlsx · 통합
    ↓ 품목코드별 월 수요
외주발주리스트.xlsx · 공급계획
    ↓ 재고+판매계획+입고예정+임가공으로 발주요청 판단
입고정보(씨엠에스랩-한익스프레스).xlsx
    ↓ 오더번호+품목코드+일정+수량으로 예정 관리
    ↓ 품목코드+입고일+LOT+유효기간으로 한익 실입고 대사
TODAY.xlsx
    ↓ ERP 창고별 재고 + 한익 LOT 재고 + 출고 + 창고이동 + 해외수주
일일 SCM 운영·재고 의사결정
```

`TODAY.xlsx`는 단일 입고표나 주문표가 아니다. ERP·한익 WMS·출고·창고이동·해외수주를 함께 보는 **일일 SCM 운영 워크북**으로 판단한다.

### 1.2 가장 중요한 사실

1. 10개 팀별 판매계획 파일의 `LIST_매출`/`LIST_증정` 시트는 `제품코드`, `ERP 품명`, 2026년 1~12월 계획·실적을 중심으로 한 공통 템플릿이다.
2. `2026 판매계획_영업입력.xlsx`의 `통합` 시트는 팀별 입력파일 41개 채널·시트를 가져오는 **통합 허브**다. 파일명의 `영업입력`과 달리, 현재 구조에서는 팀별 파일이 주요 수기 입력처이고 이 파일은 집계·조회처에 가깝다.
3. `외주발주리스트.xlsx`의 `공급계획`은 원시 구매발주 전표가 아니라, 판매계획·WMS/ERP 재고·입고예정·임가공을 결합해 발주 요청량을 계산하는 **공급 계획 모델**이다.
4. `입고정보(씨엠에스랩-한익스프레스).xlsx`는 CMSLAB 입고예정과 한익 실입고를 대사한다. 현재 수식에서 실입고 대사키는 `품목코드+입고확정일+LOT+유효기간`이다.
5. 팀별 판매계획의 품목코드 합집합 1,194개 중 1,085개(90.9%)가 2차 WMS 마스터/재고 코드 1,501개와 겹친다. 109개는 제공된 WMS 표본에서 찾지 못했다.
6. `TODAY.xlsx`의 `물류` 시트 품목코드 941개는 2차 WMS 재고코드와 100% 겹친다. 한익 WMS 현재고를 가공한 시트로 보는 것이 합리적이지만, 적재 주기·기준 시각은 파일만으로 확정할 수 없다.

## 2. 원천별 판정

| 원천 | 주요 역할 | 관찰된 업무 기준 | 판정 |
|---|---|---|---|
| 팀별 `2026 판매계획_*.xlsx` 10개 | 팀/채널별 매출·증정 계획 입력 | 품목코드, ERP 품명, 월별 계획·실적 | 파악된 판매계획 주요 입력처 |
| `2026 판매계획_영업입력.xlsx` | 41개 채널 계획 통합·검색·품목별 집계 | 팀별 Google Sheet 링크와 시트명, 품목코드 | 통합 허브 |
| `외주발주리스트.xlsx` | 공급계획·재고점검·발주요청 계산 | 품목, 가용재고, 창고별 재고, 판매계획, 입고예정, OEM사 | 계산·판단 허브. 원시 PO 원장으로 보면 안 됨 |
| `입고정보(씨엠에스랩-한익스프레스).xlsx` | 제·상품/저장품 입고예정, 오더, LOT·EXP, 한익 실입고 대사 | 오더번호, 품목코드, 제조사, 담당자, 발주·입고일, 수량, LOT, EXP | 입고 계획·실행 원천 |
| `TODAY.xlsx` | 일일 SCM 운영·재고·출고·수주 조회 | ERP 창고, WMS LOT 재고, 출고, 창고이동, 해외수주 | 복합 운영 허브; 개별 원천과 기준 시각 분리 필요 |

## 3. `TODAY.xlsx` 상세

### 3.1 업무 목적

`TODAY.xlsx`는 재고·주문·입고·공급계획 중 하나로 분류할 수 없다. 핵심은 **재고 중심**이며, 출고·창고이동·해외수주를 함께 붙여 운영한다. 입고 예정과 발주 계획의 주요 원천은 별도 `입고정보`, `외주발주리스트`다.

### 3.2 핵심 시트와 컬럼

| 시트 | 헤더 | 확인된 기능 |
|---|---|---|
| `물류` | 코드, 명, 기한, 재고등급, LOT, 수량(EA), 입수량(BOX), 상품바코드 | 한익 WMS LOT·유효기간별 현재고 |
| `ERP재고`, `ERP재고(전일)` | 품목, 품목명, 계정구분, 단위, 제품군명, 창고별 수량 | ERP 당일·전일 창고 잔액. 이천·반품·해외·불량·일본·중국법인·품고·아마존 등이 열로 펼쳐짐 |
| `출고누적리스트` | 품목, 품목명, S/L코드·명, 기초, 구매/외주/계정대체 입고, 판매/외주/EC 출고, 기말 | ERP 수불 요약 |
| `(채널별)통합출고` | 출고일자, 거래처, 품목, 품목명, 출하수량, 단가, 금액, 영업그룹 | 2026-08-01~08-27 채널 출고 |
| `(채널별)계정대체` | 출고일, 거래처, 품목, 품목명, 양품출고량, C/C명, 납품처명, 영업그룹 | 2026-08-01~08-27 계정대체 출고 |
| `해외수주` | 수주번호, 거래처코드·명, 영업그룹, 품목·품목명, 수주일, 납기요구일, 출하예정일, 수량 | 2026-07-14~08-27 해외 수주 |
| `창고이동리스트` | 이동번호·일자, 부서·담당자, 품목·품목명, 이동수량, 입고/출고창고 코드·명, 요청번호 | 2026-08-03~08-27 창고 이동 |
| `부진재고`, `부실재고` | 품목, 품명, 유효기간, LOT, 수량, 재고등급 | `물류`를 재가공한 재고 품질 보고 |
| `해외B2C`, `쿠팡` | 품목, 품목명, 계정구분, 단위, 채널별 재고/판매 계산 | 해외 B2C·쿠팡 운영용 파생 시트 |

### 3.3 요청 키워드 검증

| 키워드 | 확인 | 위치/주의 |
|---|---|---|
| 주문번호 | 부분 확인 | `해외수주`에 `수주번호`; 전 채널 소비자 주문번호는 없음 |
| 품목코드 / ERP형 코드 | 확인 | 대부분 `품목` 또는 `코드`; `CFBS0092` 형태 |
| SKU | 용어 미사용 | 데이터는 있지만 `SKU`보다 `품목`으로 표현 |
| 거래처 | 확인 | `해외수주`, `(채널별)통합출고` |
| 채널 | 부분 확인 | 독립 `channel_code`보다 영업그룹·거래처·창고명으로 연결 |
| 창고 | 확인 | ERP 재고의 가로 컬럼, 창고이동의 입고/출고창고 코드·명 |
| LOT | 확인 | `물류`, 부진·부실재고. ERP 재고 잔액은 LOT 없이 창고별 집계 |
| 수량 | 확인 | 재고, 출고, 수주, 창고이동에 각각 있음 |
| 기준일 / snapshot_at | 미확인 | 개별 거래일자는 있으나 워크북 전체 기준 시각 컬럼은 없음. 파이프라인에서 추가 필요 |

## 4. 판매계획 파일 비교

### 4.1 공통 템플릿

- 주요 `LIST_매출`/`LIST_증정` 시트의 헤더는 일반적으로 6행, 데이터는 7행부터다.
- 주요 앞부분 컬럼: `구분/NO`, `제품코드`, `ERP 품명`, `BR`, `품목`, `재고`, `출고`, `합계`.
- 2026년 1~12월 계획수량, 계획 합계, 1~12월 실적수량, 실적 합계 뒤에 실적금액·공급가·전년비 지표가 연결된다.
- Google Sheet 함수 `IMPORTRANGE`, `QUERY` 등이 Excel 내보내기에서 `__xludf.DUMMYFUNCTION` 형태로 보인다. XLSX만 분리해 Excel에서 열면 재계산을 보장할 수 없고, 현재는 캐시된 값을 분석했다.
- `수정로그`의 공통 헤더는 `변경시간, 파일명, 시트명, 품목, 품명, 월, 기존, 변경, 수정자`다.

### 4.2 팀별 범위와 차이

| 파일 | 채널/시트 | 고유 품목코드 | 수정로그 날짜 범위 | 특징 |
|---|---|---:|---|---|
| `2026 판매계획_GEC팀.xlsx` | 자사몰-해외, 아마존-기타/미국, 틱톡, 역직구몰, 해외-온라인기타의 매출/증정 | 220 | 2026-02-10~08-21 | 아마존·틱톡·역직구 |
| `2026 판매계획_Global팀.xlsx` | 미국, CIS, 유럽, 동남아, 중동, 해외-기타의 매출/증정 | 524 | 2026-02-06~08-28 | `List_매출(국가별 수량)` 추가 |
| `2026 판매계획_NBI팀.xlsx` | NBI 매출/증정 | 128 | 수정로그 표준 시트 없음 | `판매계획`, `A가리스트`, `품목별` 추가. 공통형과 차이가 큰 편 |
| `2026 판매계획_RBD1팀.xlsx` | 쿠팡, 네이버, 버티컬, 제휴몰, 기타, 임직원몰 | 532 | 2026-02-06~08-28 | 국내 온라인 중심 |
| `2026 판매계획_RBD2팀.xlsx` | Retail, 군납, 다이소, 면세, 코스트코, 계열사 | 506 | 2026-02-02~08-27 | 군납·다이소·코스트코·계열사는 매출 시트만 확인 |
| `2026 판매계획_메디컬팀.xlsx` | 클리닉, 종병, 대리점, 자사몰-EX의 매출/증정 | 249 | 2026-02-20~08-27 | 메디컬 채널 |
| `2026 판매계획_일본사업팀.xlsx` | 자사몰-일본, 큐텐, 라쿠텐, 아마존-일본, 오프라인의 매출/증정 | 487 | 2026-02-03~08-21 | 큐텐 증정 시트에 동일 코드 1건 중복 |
| `2026 판매계획_자사몰-국내.xlsx` | 자사몰-국내 매출/증정 | 243 | 2026-02-03~08-26 | 단일 채널 |
| `2026 판매계획_중국법인.xlsx` | 중국법인 수출, 현지매출 | 69 | 2026-02-03~08-12 | 증정 시트는 확인되지 않음 |
| `2026 판매계획_중국파트너.xlsx` | 중국파트너, 대만, 중국T몰 매출; 중국파트너 증정 | 192 | 2026-02-03~07-15 | 채널별 증정 구성 차이 |

팀 간 고유 코드 교집합은 0개이다. 즉 모든 팀이 공통으로 쓰는 품목은 없고, 팀별 운영 품목 차이가 크다. 다만 팀별 코드가 하나의 ERP형 `item_code`를 공유하므로 통합 설계는 가능하다.

### 4.3 `영업입력`과 팀별 파일의 관계

`2026 판매계획_영업입력.xlsx`의 `통합` 4~42행에 팀·채널·Google Sheet URL·원천 시트명 매핑이 있고, 48행 이후에 해당 원천을 `IMPORTRANGE`/`QUERY`로 통합한다.

| 팀 | `통합`에 매핑된 채널 |
|---|---|
| RBD1 | 쿠팡, 네이버, 버티컬, 제휴몰(NBI), 임직원몰, 기타(CFC) |
| RBD2 | 올리브영, 군납, 다이소, 면세, 코스트코, 계열사+특판 |
| MC | 자사몰-국내 |
| 일본 | 자사몰-일본, 큐텐, 라쿠텐, 아마존-일본, 오프라인 |
| 중국 | 중국법인수출, 중국법인현지매출, 중국T몰, 중국파트너, 중국대만 |
| GEC | 역직구몰, 자사몰-해외, 해외-온라인기타, 틱톡, 아마존-미국, 아마존-기타 |
| 메디컬 | 대리점, 자사몰-EX, 클리닉, 종병 |
| Global | 미국, CIS, 유럽, 동남아, 중동, 기타 |

## 5. 외주발주·입고·TODAY·WMS 연결키

| 구간 | 현재 연결 후보 | 확실성 | 한계/필요 조치 |
|---|---|---|---|
| 판매계획 → 외주 공급계획 | `item_code+월` | 높음 | `공급계획`에 2026 채널별 판매계획이 열로 연결됨 |
| 외주 공급계획 → 입고예정 | `item_code+예정일/주차+수량` | 중간 | `공급계획`에 행 단위 PO/오더번호가 명확히 연결되지 않아 일의적 대사가 어려움 |
| 구매/외주 오더 → CMSLAB 입고예정 | `order_no+item_code` | 높음 | `UPO...`, `POZ...` 형태 오더번호가 입고정보에 있음 |
| CMSLAB 입고예정 → 한익 실입고 | `item_code+입고일+LOT+EXP` | 높음 | 실제 `SUMIFS`가 이 조합을 사용. 한익 리스트에 CMSLAB 오더번호가 없어 오더 직접 대사는 안 됨 |
| 실입고 → TODAY 재고 | `item_code+LOT+EXP+창고` | 중간 | 현재고 스냅샷이므로 수량 흐름을 충분히 재현하려면 `receipt_id`, `snapshot_at`이 필요 |
| TODAY `물류` ↔ 한익 WMS 재고 | `item_code+LOT+EXP` | 높음 | 코드 집합은 941개로 100% 일치. 적재 시각·위치별 세부성은 추가 확인 |

### 5.1 필수 표준 키 제안

- `item_code`: ERP형 품목코드를 표준 배부키로 사용
- `warehouse_code`: 창고명이 아닌 코드 정규화
- `lot_no`, `expiry_date`: WMS 단계 LOT 키
- `source_order_no`: UPO/POZ 등 원천 오더번호
- `receipt_no`: 물류사 실입고번호
- `plan_date`, `confirmed_date`, `receipt_date`: 예정·확정·실제 입고일을 분리
- `snapshot_at`: TODAY/WMS/ERP 잔액의 기준 시각
- `source_system`, `source_sheet`, `loaded_at`: 추적성 필드

## 6. 코드 교집합·중복·명칭 충돌

### 6.1 집합 비교

아래 수치는 `^[A-Z]{4}[0-9]{4,5}$` 형태의 ERP형 품목코드만 계수했다. 숫자형 구품코드, 주문번호, 바코드는 제외했다.

| 원천 | 고유 코드 | 2차 WMS와 교집 | 비율 | 판매계획 1,194개와 교집 |
|---|---:|---:|---:|---:|
| 2차 WMS 마스터/재고 합집합 | 1,501 | 1,501 | 100% | 1,085 |
| 팀별 판매계획 합집합 | 1,194 | 1,085 | 90.9% | 1,194 |
| TODAY `물류` | 941 | 941 | 100.0% | 754 |
| TODAY `ERP재고` | 1,207 | 1,008 | 83.5% | 854 |
| TODAY `전월마감단가` | 3,684 | 1,423 | 38.6% | 1,123 |
| 입고 `한익스프레스 입고리스트(2026)` | 431 | 422 | 97.9% | 336 |
| 입고 `한익스프레스 입고리스트(2025)` | 629 | 619 | 98.4% | 494 |
| 외주 `공급계획` | 917 | 799 | 87.1% | 812 |
| 외주 `시트8` | 4,470 | 1,484 | 33.2% | 1,181 |
| 외주 `시트5` | 1,213 | 992 | 81.8% | 879 |

`TODAY ERP재고`의 WMS 미교집 199개는 WMS 밖 창고·원부자재·비운영 품목일 수 있다. **미교집이 곧 오류라는 뜻은 아니며**, 품목 계정과 창고별 운영 여부로 분류해야 한다.

### 6.2 중복 해석

- 한익 상품마스터는 1,502행, 1,499개 고유 코드로 코드 중복 3행이 있다. 삭제/비활성 이력인지 확인해야 한다.
- TODAY `물류`의 3,707개 코드 발생이 941개 고유 코드로 축약되는 것은 LOT·로케이션별 복수 행 때문이다. 마스터 중복으로 보면 안 된다.
- 입고 리스트의 복수 품목코드도 입고일·LOT·EXP 단위 복수 행이므로 정상적이다.
- 일본 큐텐 `LIST_증정`에서는 한 시트 내 동일 품목코드 1건이 복수로 확인되므로 직접 검토가 필요하다.

### 6.3 명칭 충돌 후보

코드가 같지만 명칭이 다른 검토 후보가 있다. 단순 따옴표·어순·접미사·연월 표기 차이가 대부분이나, 아래는 실물 규격 오해 가능성이 있다.

| 코드 | 표기 A | 표기 B | 판정 |
|---|---|---|---|
| `ALBS0003` | `[부자재] 박스_CFC-1호(소)_255*185*125_2009` | `박스_CFC-1호(소)_210*163*95_2009` | 규격이 달라 우선 확인 |
| `CFSN0208` | `...워터핏리커버비비크림_1.2g...` | `..._1ml...` | 용량·단위 실질 차이 후보 |
| `EXCR0057` | `...프로리프팅하이드로겔마스크_21g_2506` | `..._21g_비매품_2506` | 판매/비매품 구분 확인 |
| `CFTC0027` | `...비타레티날샷아이크림...` | `...비타레티날아이크림...` | 제품명 변경/오타 확인 |

판매계획↔WMS 명칭 비교에서 17개 검토 후보가 나왔지만, 단순 따옴표·탭·`T`·연월 접미사 차이도 포함된다. 모두를 실질 충돌으로 간주하지 말고 `item_code`를 기준으로 상태·판매/비매·규격만 재확인한다.

## 7. 파일·시트 구조 인벤토리

### 7.1 팀별 판매계획

아래 표의 `행x열`은 서식·수식만 있는 미사용 꼬리 행을 포함한 XLSX 최대 사용 범위다. 실제 업무 데이터 건수와 다를 수 있다.

| 파일 | 시트(행x열) |
|---|---|
| GEC | `매출비중` 1003x29; 자사몰-해외 매출 1084x95/증정 1082x49; 아마존-기타 1084x95/1082x49; 아마존-미국 1087x93/1082x49; 틱톡 1087x89/1082x49; 역직구몰 1084x93/1082x93; 해외-온라인기타 1084x89/1082x49; `변경요청리스트` 3x11; `수정로그` 1364x9 |
| Global | `List_매출(국가별 수량)` 1049x109; `매출비중` 1003x29; 미국 1086x89/1082x49; CIS 1088x89/1066x49; 유럽 1088x89/1077x49; 동남아 1084x90/1080x49; 중동 1082x89/1080x49; 해외-기타 1082x89/1082x49; `변경요청리스트` 869x15; `수정로그` 2061x9 |
| NBI | `판매계획` 1005x57; NBI 매출 1066x64/증정 1050x64; `변경요청리스트` 3x11; `A가리스트` 6460x26; `품목별` 6569x7 |
| RBD1 | `매출비중` 1003x29; 쿠팡 1091x90/40x49; 네이버 1091x89/972x88; 버티컬 1091x89/994x49; 제휴몰 1082x89/1082x49; 기타 1082x89/999x49; 임직원몰 1083x89/1000x49; `변경요청리스트` 998x28; `수정로그` 2853x9 |
| RBD2 | `매출비중` 1003x29; Retail 1081x89/1042x49; 군납 1076x89; 다이소 1082x89; 면세 1090x89/1082x49; 코스트코 1061x89; 계열사 979x89; `변경요청리스트` 999x29; `수정로그` 2763x9 |
| 메디컬 | `매출비중` 1003x29; 클리닉 1082x89/1082x49; 종병 1082x89/1082x49; 대리점 1082x89/1082x49; 자사몰-EX 1082x89/1082x49; `변경요청리스트` 4x11; `수정로그` 489x9 |
| 일본 | `매출비중` 1003x29; 자사몰-일본 1082x63/989x49; 큐텐 1091x89/1074x49; 라쿠텐 1082x89/1076x49; 아마존-일본 1083x89/1075x49; 오프라인 1084x89/1080x49; `변경요청리스트` 35x10; `수정로그` 1130x9 |
| 자사몰-국내 | `매출비중` 1003x29; 매출 1094x89; 증정 1045x48; `변경요청리스트` 35x10; `수정로그` 707x9 |
| 중국법인 | 수출 매출 1086x89; 현지매출 1061x61; `변경요청리스트` 995x11; `수정로그` 190x9 |
| 중국파트너 | 중국파트너 매출 1057x87; 대만 매출 1082x89; 중국파트너 증정 1016x49; 중국T몰 1059x63; `변경요청리스트` 29x11; `수정로그` 181x9 |

### 7.2 `2026 판매계획_영업입력.xlsx`

| 시트 | 크기 | 상태/목적 |
|---|---:|---|
| `채널별_2026` | 1022x272 | 표시; 채널별 요약. 숨김 열 74개 |
| `통합` | 33404x27 | 표시; 팀·채널 매핑과 통합 수량. 숨김 행 41개, 열 구간 2개 |
| `금액확인` | 43x11 | 표시; 금액 검증 |
| `통합_금액` | 33404x78 | 표시; 통합 금액. 숨김 행 41개 |
| `검색` | 11670x42 | 표시; 조회용 |
| `품목별합계` | 2036x25 | 표시; 품목별 집계 |
| `누적(실적)`, `누적(실적+계획)` | 각 964x49 | 숨김; 누적 요약 |
| `1월`~`6월` | 각 1005x46 | 숨김; 월별 파생 |
| `7월`~`12월` | 1004~1005x46 | 숨김; 월별 파생 |
| `링크` | 21x7 | 숨김; 구 링크/매핑으로 보임 |
| `품목별` | 8069x11 | 표시; 품목 자료 |
| `전주` | 9566x19 | 표시; 8,740행 숨김 |
| `과거` | 59320x20 | 표시; 44행 숨김 |
| `미운영품목` | 490x6 | 표시; 제외/비운영 품목 |

`2026 판매계획_영업입력.xlsx`는 수식 의존도가 매우 높다. `통합` 약 36만 개, `통합_금액` 약 41만 개, `검색` 약 20만 개의 수식 셀이 확인되므로, 원천·파생 시트를 분리해 적재해야 한다.

### 7.3 `TODAY.xlsx`

| 시트 | 크기 | 유형 |
|---|---:|---|
| `부진재고`, `부실재고` | 469x6, 421x7 | 수식 파생 |
| `물류`, `물류(PIVOT)` | 3734x15, 1818x17 | WMS 원천/파생 |
| `ERP재고`, `전월마감단가`, `ERP재고(전일)` | 1219x65, 4617x26, 1219x65 | ERP 재고·단가 원천/가공 |
| `출고누적리스트`, `출고누적(PIVOT)` | 4322x32, 1504x15 | ERP 수불 원천/파생 |
| `(채널별)통합출고`, `통합출고(PIVOT)` | 65536x13, 1x23 | 채널 출고 수식/파생 |
| `(채널별)계정대체`, `계정대체(PIVOT)` | 80970x13, 1x20 | 계정대체 출고 수식/파생 |
| `해외수주`, `해외수주(PIVOT)` | 237x72, 1000x30 | 해외 수주 원천/파생 |
| `창고이동리스트` | 1117x45 | ERP 창고이동 |
| `해외B2C`, `쿠팡` | 각 1503x16 | 채널 운영 파생 |
| `품목그룹` | 7171x3 | 품목분류 파생. 숫자 품목 ID와 ERP형 코드 혼재 주의 |
| `일본B2C공급가`, `쿠팡공급가` | 2461x8, 211x4 | 단가 참조 |
| `Transactions` | 1x5 | 헤더만 있는 빈 시트 |

모든 시트는 표시 상태다. `출고누적리스트`의 병합 범위가 크고, `(채널별)통합출고`·`(채널별)계정대체`는 수식 범위가 매우 크다. 원천 적재 대상은 수식 전개 결과가 아닌 원시 ERP/WMS 추출물로 설정하는 것이 안전하다.

### 7.4 `외주발주리스트.xlsx`

| 시트 | 크기 | 상태/목적 |
|---|---:|---|
| `요약` | 994x29 | 공급계획 요약 |
| `타샤의편지` | 1001x27 | 아마존 재고·이동 등 비정형 운영 메모 |
| `공급계획` | 1956x351 | 주요 계산 모델. 병합 14개, 숨김 행 12개, 숨김 열 구간 67개; 약 17만 수식 셀 |
| `미국_아마존` | 1000x25 | 아마존 재고·판매계획·입고예정·기말재고 |
| `시트8` | 6593x39 | 품목·품목분류·주거래처·원가·속성 자료. 병합 범위 7,181개로 원천 재사용 전 정규화 필요 |
| `시트5` | 1225x3 | 품목·품목명·합계 |
| `주차` | 1000x26 | 주차 계산 |
| `재고점검수식` | 1000x26 | 현재고+입고예정-임가공-판매계획 등 수식 설명 |

### 7.5 `입고정보(씨엠에스랩-한익스프레스).xlsx`

| 시트 | 크기 | 상태/목적 |
|---|---:|---|
| `사용방법` | 1000x26 | 운영 안내 |
| `입고정보(제상품)` | 3961x43 | 제·상품 예정·확정·실입고 대사. 입고예정일 2026-06-26~09-15 |
| `입고정보(저장품)` | 4645x45 | 저장품 입고 관리; 예정일 컬럼의 캐시 값은 확인되지 않음 |
| `입고완료(월1회)` | 3270x45 | 완료 아카이브. 일자 2024-12-17~2026-06-30 |
| `_스냅샷_입고` | 4603x43 | 숨김; 입고 스냅샷 |
| `_입고일정_스냅샷` | 4501x33 | 숨김; 일정 스냅샷 |
| `입고정보_백업` | 4358x33 | 백업/비교. 입고일 2026-01-02~06-12 |
| `일정확인용(T)` | 10x11 | 일정 확인용 보조표 |
| `한익스프레스 입고리스트(2026)` | 4009x256 | 실입고. 입고일 2026-01-02~08-27 |
| `한익스프레스 입고리스트(2025)` | 3010x256 | 실입고. 입고일 2024-12-17~2025-12-30 |
| `결품위험_현황` | 104x13 | 운영가능재고, 예상소진일, 입고예정을 결합한 파생 결과 |
| `예측이력` | 2509x8 | 결품 예측 스냅샷. 2026-05-29~06-09 |
| `유관부서_공유` | 1x11 | 헤더만 있는 빈 공유 시트 |

이 워크북에는 날짜 서식으로 지정된 셀에 `20290304`, `20290305` 같은 YYYYMMDD 숫자값이 들어가 Excel 날짜 시리얼 범위를 벗어나는 건이 있다. 적재 시 서식이 아닌 값 패턴으로 `YYYYMMDD` 파싱을 우선해야 한다.

## 8. 수식·병합·숨김 구조의 해석

- 팀별 판매계획의 매출 시트는 보통 4~6개 병합 범위와 수천~수만 개 수식 셀을 가진다. 증정 시트는 보통 3개 병합 범위다.
- `영업입력`의 통합·금액·검색 시트는 수십만 수식 셀을 가져, 표 단위 ETL로 직접 재현하는 것이 필요하다.
- `공급계획`은 351열·67개 숨김 열 구간·약 17만 수식 셀으로, 데이터 원천과 판단 수식을 분리해야 한다.
- 시트의 최대 행/열은 실제 사용 건수가 아니다. Google Sheet의 사전 복사 수식·서식 꼬리가 크므로, 적재 시 `item_code` 등 필수키가 있는 행만 선별해야 한다.

## 9. 개인정보·보안 점검

| 항목 | 발견 | 조치 |
|---|---|---|
| 직원 이메일 | 다수 팀별 `수정로그`에 `@cms-lab.co.kr` 수정자 주소 존재. 파일별 2~11개 고유 주소 | 대외 공유본에서 제거/해시 |
| 직원 성명 | TODAY `해외수주`·`창고이동`, 입고정보의 담당자 컬럼에 존재 | 내부 분석에만 사용; 역할코드로 대체 검토 |
| 거래처·제조사명 | 해외수주, 입고정보에 존재 | B2B 식별자로 분류하고 공개본에서 가림 |
| 소비자 이름·주소·전화·이메일 | 추가 14개 워크북의 주요 시트에서는 확인되지 않음 | 향후 주문원장 적재 시 별도 검사 |
| Google Sheet URL | `영업입력` 매핑, 수식 문자열에 문서 ID 존재 | 접근 권한을 외부에 공유하지 말 것 |
| 비밀번호·API 키 | 일반 패턴 검사에서 확인되지 않음 | 탐지 결과를 완전한 보증으로 보지 말고 전송 전 DLP 검사 |

## 10. 사실·가설·미확인

### 10.1 원본에서 직접 확인된 사실

- 팀별 판매계획은 `제품코드` 및 `ERP 품명`을 공통으로 사용한다.
- `영업입력`의 `통합`이 팀별 파일과 시트를 링크로 불러온다.
- `공급계획`이 WMS 8/27, ERP 재고 8/27, 임가공, 2026 판매계획, 재고점검, 발주요청 구간을 함께 가진다.
- 입고정보에 오더번호, 품목코드, 제조사, 발주·입고일, 수량, LOT, EXP가 있다.
- 입고정보의 수식이 한익 실입고를 품목코드·입고일·LOT·EXP로 대사한다.
- TODAY에 WMS LOT 재고, ERP 창고별 재고, 출고, 창고이동, 해외수주가 있다.

### 10.2 분석에서 도출한 가설

- TODAY `물류`는 한익 WMS 재고 추출물을 가공한 것으로 본다. 코드 집합이 100% 일치하지만 연동 방법과 시각은 미확인이다.
- `외주발주리스트`는 공급계획 산출물이며, 실제 구매/외주 PO는 ERP에서 생성되는 것으로 본다.
- `TODAY ERP재고`의 WMS 미교집 품목은 원부자재·외주창고·비운영 품목일 가능성이 있다.

### 10.3 미확인·추가 확인 필요

1. 각 Google Sheet의 실제 수기 입력 오너와 마감 시점
2. `TODAY.xlsx`의 전체 기준 시각과 업데이트 주기
3. `공급계획`의 발주요청에서 ERP PO/외주오더로 넘어가는 번호 매핑
4. 한익 실입고에 CMSLAB 오더번호를 넘길 수 있는지
5. WMS에 없는 판매계획 코드 109개의 신규·단종·비매품·외부창고 여부
6. 품목명 충돌 후보의 정본명, 규격, 판매/비매, 활성여부
7. 추가로 받을 WMS 원본에서 `warehouse_code`, `snapshot_at`, `available_qty`, `hold_qty`, `lot_no`, `expiry_date`를 일관되게 제공할 수 있는지

## 11. 적재·표준화 작업 지시

1. 팀별 판매계획은 컬럼형 월별 구조를 `team, channel, sales_type, item_code, plan_month, plan_qty, actual_qty, source_file, source_sheet, loaded_at`의 세로형으로 표준화한다.
2. `영업입력`은 원본 입력표로 취급하지 말고, 41개 채널 매핑과 집계 로직을 요구사항으로 추출한다.
3. `공급계획`은 원천 테이블(판매계획, WMS, ERP, 입고예정, 임가공)과 수식 로직을 분리해 버전 관리한다.
4. 입고 데이터는 `order_no+item_code+plan_date+lot_no+expiry_date`의 라인 키를 설계하되, LOT가 예정 단계에 없는 경우를 허용한다.
5. WMS/ERP/TODAY 스냅샷에는 반드시 `snapshot_at`과 `source_system`을 추가한다.
6. 오더번호가 끊기는 한익 실입고는 `item_code+입고일+LOT+EXP`로 대사하되, 중복 매칭 시 수량·입수량·제조사를 보조 키로 사용한다.
7. 품목명은 조인키로 사용하지 않고, 표기 차이 검출·승인 대상으로만 사용한다.

## 12. 바로 볼 파일·시트 3개

1. `/Users/manager/Downloads/TODAY.xlsx` → `ERP재고`: 품목코드별 당일 재고가 이천·반품·해외·불량·일본·중국법인·품고·아마존 등 창고/채널 열로 펼쳐져 전체 재고 지형을 볼 수 있다.
2. `/Users/manager/Downloads/2026 판매계획_영업입력.xlsx` → `통합`: 4~42행에서 41개 채널의 팀·원천시트 매핑, 48행 이후에서 제품코드·ERP품명·월별 계획/실적을 볼 수 있다.
3. `/Users/manager/Downloads/외주발주리스트.xlsx` → `공급계획`: 15~23열 품목·공급특성·가용재고, 30열 이후 창고재고, 83열 이후 판매계획, 88열 이후 기말재고, 96열 이후 발주요청을 보면 수요→재고→공급 판단 구조가 잡힌다.

실제 발주 후 입고·LOT 대사까지 이어서 보려면 네 번째로 `/Users/manager/Downloads/입고정보(씨엠에스랩-한익스프레스).xlsx` → `입고정보_백업`을 본다.
