← Home

Stock 테이블 명세 및 데이터 카탈로그

부분 미확정 문서 — 1개 섹션 David 확인 대기 중

이 카탈로그는 라이브 시트 실측(2026-09-03, 'Stock'!A1:BH395 전체범위 조회) + David 인터뷰로 작성했다. 컬럼 구조·6개 상태그룹·지점 문자(V/N/Q)·A/O/T 그룹 계산식·Show 플래그는 최초 작성 시 확인됐고, 브랜치 판매속도 요약(§5, VIC/V_month/V_Max/V_Avg/V_Total, NSW 동일)도 2026-09-03 재고 탭 v2 작업 중 David 재확인으로 확정됐다. 남은 미확정은 컨테이너 스케줄(Ncon/Vcon)의 정확한 활용법(재주문 판단에 쓰이는지 등)뿐이다 — 6. 확인 필요 항목 (Open Question) 참고.

원천: Google Sheets “Turbo Air” > Stock 탭 (파일 ID 1VOpjK9aDUuVmwkAouzGu-X_mZvGRlyhKbTDP1D6FU3Q — Sales Data 테이블 명세 및 KPI 정의의 Sales Data/TADollar 2026 탭과 같은 스프레드시트의 다른 탭). 2026-09-03 라이브 조회 기준 62컬럼 · 383개 실모델 행(+깨진 수식오류 행 1개).


1. 테이블의 기본 구조

  • 1행 = 제품 모델(SKU) 1종. 거래건이 아니라 모델별 현재 재고 스냅샷이다 — Sales Data(주문 라인 단위)와는 행의 의미 자체가 다르다.
  • 시트 상단 1~9행은 데이터 행이 아니라 요약/장식 영역이다 — 실제 컬럼 헤더는 10행, 데이터는 11행부터 시작한다.
    • 2~5행: “Yesterday” 스냅샷 박스(그룹별 어제 재고 총계 + In/Out 입출고 건수) — 모델별 데이터가 아닌 전체 요약 위젯. 날짜는 셀에 시리얼 넘버로 박혀있고(예: 46268) 조회 시점에 따라 자동 갱신되는 것으로 보인다.
    • 7행: “Container Schedule” 섹션 레이블(AC~AX열 위).
    • 8행: 6개 상태그룹의 한/중/영 라벨(중국어 병기 — 이 시트가 원래 중국 협력사와 공유되던 이력으로 추정, 미확인).
    • 9행: 전체 모델의 그룹별 합계(그랜드토탈) 행 — 모델 데이터 아님, 참고용 집계.
  • 384번째 데이터 행(시트 394행)은 #VALUE! 수식오류 행이다 — Category/Subcategory/Type/Status가 전부 #VALUE! 문자열이고 나머지 값은 0/공백. 조회 범위를 짤 때 반드시 제외할 것(대시보드/풀 스크립트에서 필터링 필요).
  • Model 컬럼은 중복 없음(383개 실모델 전수 검사, 중복 0건) — 안전한 고유 키로 사용 가능.
  • 통화는 AUD(RRP), 나머지는 전부 수량(정수, 일부 음수 가능 — 3. 6개 상태그룹 참고).

2. 기본 속성 컬럼 (A~J열)

컬럼필드명설명
AInventoryId_Shopify전 행 공백 확인(383/383) — 과거 Shopify 연동용으로 만들어졌으나 현재 미사용. 대시보드에서 무시.
BProductId_Shopify위와 동일, 전 행 공백.
CID위와 동일, 전 행 공백.
DCategory대분류. 관측값 9종: Upright, Underbench, Prep Table, Chef Base, Back Bar, Dough, Merchandiser, Showcase, Sushi Case.
ESubcategory중분류. 관측값 4종: Solid Door, Glass Door, Drawer, Bun Pan(비어있는 행도 있음 — Category에 따라 해당 없을 수 있음).
FType관측값 3종: Refrigerator, Freezer, Dual Temp.
GStatus모델 자체의 판매 상태. 관측값 2종: Active, Discountinued(원문 그대로의 오탈자 — “Discontinued”의 오타, 시트 원본이 이렇게 돼 있으므로 필터링 시 이 철자 그대로 매칭할 것).
HShow체크박스형 플래그(1 또는 공백). David 확인: Discontinued 모델 중 자사 보유재고가 0인 경우 시트 화면에서 해당 행을 숨기기 위한 시트 UI 전용 헬퍼다. 비즈니스 데이터가 아니므로 대시보드에는 반영하지 않는다(David 명시: “대시보드 만들 때는 해당 내용이 반영될 필요는 없어”).
IModel모델명(SKU). 고유 키(중복 0건 확인).
JRRP권장소비자가(AUD).

3. 6개 상태그룹 × 3개 지점(K~AB열, 18컬럼)

핵심 재고 수량은 6개 상태그룹(A/O/N/D/S/T) × 3개 지점 문자(V/N/Q) 조합으로 18개 컬럼에 나열된다. 컬럼명은 {지점문자}{그룹문자} 순서(예: VA=VIC-Available, NO=NSW-Order, QT=Queensland-Total).

3.1 지점 문자 (David 확인)

문자지점
VVIC (멜버른)
NNSW (시드니)
QQueensland — Turbo Air 호주법인이 직접 관리하는 지점이 아니라 다른 시트에서 정보를 가져오는 외부 소스다(David: “퀸즐랜드 재고는 우리가 직접 관리하지 않으므로, 다른 시트에서 해당 정보를 가져오고 있어”). 실측 결과 QD(Damaged)·QS(Showroom) 컬럼은 샘플 전 행에서 공백으로 관측됨 — QLD 소스가 이 두 항목은 아예 보고하지 않는 것으로 추정(미확인, 외부 시트 실사 필요). QLD가 CLAUDE.md에도 이미 “별도 소유 제휴사”로 기록된 것과 일치.

지점 문자 V/N/Q는 Sales Data 테이블 명세 및 KPI 정의의 State/Branch 필드와 1:1로 매핑되지만 컬럼명 알파벳이 겹친다 — 예를 들어 N은 여기서는 "NSW"를 뜻하지만 같은 접두어가 붙는 그룹문자 N(Brand New)과 혼동하기 매우 쉽다(예: NN = "NSW의 Brand New 수량"). 대시보드 코드에서 변수명을 지을 때 지점(branch)과 그룹(group)을 분리해서 명명할 것 — 원본 컬럼명 그대로 쓰면 가독성이 떨어짐.

3.2 상태그룹 (David 확인 + 실측 수식 역산)

그룹문자라벨(시트 원문)의미계산식
A가용재고 Available즉시 판매 가능한 재고 — Brand New 재고 중 이미 주문/홀드된 만큼을 뺀 값(David)[지점]A = [지점]N − [지점]O (실측 검증: 여러 행에서 정확히 일치, 음수 가능 — 예 NA=-1은 “NSW에 Brand New 0개인데 Hold/Order가 1개 걸려 이미 백오더 상태”를 뜻함)
O발주수량 Order주문 확정 후 재고를 **할당(Ordered)**했거나, 딜러/사내 필요로 **홀드(Hold)**해 둔 수량의 합(David)Sales Data 탭의 Status가 Ordered/Hold/Picking/Released 인 행 중 이 Model과 일치하는 건수 합 — Sales Data 탭 라이브 실측으로 이 4개 값이 실제 Status 컬럼에 존재함을 확인(다른 관측값: Confirmed/ Confirmed(앞공백 오탈자)/Restocked/Cancelled/Credit/Invoiced). Sales Data 테이블 명세 및 KPI 정의 §2의 주문 생애주기(Ordered→Picking→Released→Invoiced/Credit→Confirmed)와 대조하면, O그룹은 “주문은 들어왔지만 아직 인보이스 발행 전(=창고에서 안 나간) 상태”의 재고 예약분으로 해석됨.
NA급신품 Brand New해당 지점 창고의 정상 신품 재고 수량(raw, 원본 입력값으로 추정)직접 입력/집계값(수식 미확인, D·S와 함께 T의 구성요소)
DB급손상 Damaged손상재고(B급) 수량직접 입력/집계값. QLD(QD)는 공백(위 참고)
S전시품 Showroom각 지점 쇼룸에 전시 중인 수량. David: “보통은 판매가 되지 않고 전시되어 있지만, 제품들이 급하게 필요한 경우 해당 제품들을 할인해서 판매하기도 해” — 즉 원칙상 비매품이지만 예외적으로 판매될 수 있음직접 입력/집계값. QLD(QS)는 공백
T합계 Total해당 지점의 물리적 보유재고 총합(판매가능 여부 무관)[지점]T = [지점]N + [지점]D + [지점]S (실측 검증: 여러 행에서 정확히 일치)

Key Insight

A(가용재고)와 T(총재고)는 서로 다른 개념이다 — T는 “창고에 물리적으로 있는 전체 수량”(신품+손상품+전시품), A는 “그중 지금 당장 팔 수 있는 수량”(신품에서 이미 주문/홀드된 만큼 제외). 대시보드 KPI를 설계할 때 이 둘을 반드시 구분해서 라벨링할 것 — “재고”를 단일 숫자로 뭉뚱그리면 오해의 소지가 크다.


4. 컨테이너 스케줄 (AC~AX열, 22컬럼) — ⚠️ 활용법 미확정

컬럼 범위필드명설명
AC~ALNcon1~Ncon10NSW(시드니)행 입고예정 컨테이너 스케줄, 가까운 순 10개 슬롯. 값 = 해당 컨테이너에 이 모델이 실린 수량.
AMNcon위 10개 슬롯의 합계(NSW 입고예정 총수량으로 추정, 수식 미확인).
AN~AWVcon1~Vcon10VIC(멜버른)행 동일 구조.
AXVcon위 합계.

컬럼 헤더 자체가 동적으로 바뀌는 구조(실측, 7행): 컨테이너가 실제로 예약·확정되면 헤더가 TCMG260528A2SYD 같은 실제 컨테이너 추적번호로 채워지고, 아직 확정 안 된 먼 미래 슬롯은 6,7,8… 같은 월 숫자만 있는 placeholder로 표시된다(예: NSW는 슬롯15가 실제 컨테이너ID, 슬롯610은 “6월""10월” placeholder; VIC는 슬롯13이 실제ID, 슬롯410은 “4월""10월” placeholder). 즉 컬럼 헤더를 안정적인 필드명으로 쓸 수 없고, 매 조회 시 헤더를 다시 읽어야 한다.

Open Question — David 미확인

이 섹션이 실제로 재주문(reorder point) 판단에 쓰이는지, 대시보드에서 “입고예정 총수량”만 보여주면 충분한지, 아니면 컨테이너별 상세(ETA)까지 필요한지 아직 확인 안 됨. 대시보드 설계 단계에서 재질문 필요.

부분 해소(2026-09-03, Serial 테이블 명세 및 데이터 카탈로그 작성 중 확인): Serial 탭의 Con_No(유닛이 실제로 들어온 컨테이너 번호)가 이 섹션과 개념적으로 같은 컨테이너를 가리키지만, 이 컨테이너 스케줄 섹션 자체가 컨테이너 입고 완료 시 정보가 교체/이동되는 롤링(휘발성) 구조라서 Serial.Con_No와 프로그램적으로 조인할 수 없음을 David가 확인했다 — 즉 이 섹션은 “현재 시점의 입고 예정 스냅샷”으로만 쓸 수 있고, 과거 특정 유닛이 어느 컨테이너로 들어왔는지 되짚는 이력 조회 용도로는 쓸 수 없다.


5. 브랜치 판매속도 요약 (AY~BH열, 10컬럼) — ✅ 확정 (2026-09-03 David 재인터뷰)

Update — 2026-09-03 재고 탭 v2 작업 중 확정

§5 최초 작성 시(같은 날짜) David 본인도 “정확히는 모름”이라고 답했던 이 섹션은, TAB 대시보드 재고 탭 v2 작업 중 David가 직접 재확인하며 확정됐다. 아래 값은 BDBH가 NSW, AYAC가 VIC임에 유의 — 컬럼 순서는 VIC가 먼저(AYBC), NSW가 나중(BDBH)이다.

컬럼필드명KR25-1-N 실측값확정 정의
AYVIC7VIC 예상가용재고 = VIC 가용재고(VA) + VIC 입고예정 컨테이너 수량(Vcon)
AZV_month5.83VIC 판매속도 임계치 = V_Avg × V_Max(배수). 실측 검증: 1.1667 × 5 = 5.8333 ≈ 5.83 ✓
BAV_Max5VIC 배수(곱셈 계수) — 이름은 “Max”지만 리터럴 최댓값이 아니라 V_month 계산에 쓰이는 조정 가능한 배수 상수다. David: “현재는 최근 12개월 평균 판매량의 5배 값이야. 배수의 값은 추후 달라질 수 있어” — 즉 시트에서 언제든 바뀔 수 있으므로 대시보드는 이 값을 하드코딩하지 않고 시트에서 그대로 읽는다.
BBV_Avg1.17VIC 최근 12개월 월평균 판매량
BCV_Total14VIC 최근 12개월 판매 합계
BDNSW4NSW 예상가용재고 = NSW 가용재고(NA) + NSW 입고예정 컨테이너 수량(Ncon)
BEN_month9.58NSW 판매속도 임계치 = N_Avg × N_Max. 실측: 1.9167 × 5 = 9.5833 ≈ 9.58 ✓
BFN_Max4 → 실측 재확인 시 5NSW 배수(곱셈 계수) — VIC와 동일 개념. (이 표의 원본 샘플값 “4”는 최초 미확정 조사 시점 것으로, 재고 탭 v2 풀 스크립트 라이브 재조회 결과 NSW/VIC 모두 배수 5로 일치 확인됨 — 아래 Bias Check 참고)
BGN_Avg1.92NSW 최근 12개월 월평균 판매량
BHN_Total23NSW 최근 12개월 판매 합계

요약 공식:

  • [지점] 예상가용재고 = [지점]A(가용재고) + [지점]con(입고예정 컨테이너 합계)
  • [지점]_month(임계치) = [지점]_Avg × [지점]_Max(배수, 현재 5·변동 가능)
  • [지점]_Avg = 최근 12개월 월평균 판매량
  • [지점]_Total = 최근 12개월 판매 합계

QLD(Q) 지점은 이 섹션에 해당 컬럼이 없다 — 3.1 지점 문자 (David 확인)에서 이미 확인된 대로 QLD는 Turbo Air가 직접 관리하지 않는 외부 소스라 판매속도 집계 대상이 아니다.

대시보드 반영: 20. Wiki/23. Guides/TAB Dashboard 재고 탭.md(작성 예정 시 링크) 모델별 재고 상세 표에 지점별(NSW/VIC) 5개 컬럼(예상가용/배수/임계치/월평균/12개월합계)으로 반영됨 — scripts/pull-stock-dashboard-data.mjs의 STOCK_OPTIONAL_COLUMN_MAP이 헤더를 관대하게(없으면 null, throw 안 함) 조회한다.

Open Question (잔존)

§5 정의는 확정됐지만, 이 값들이 재주문(reorder point) 판단 등 실제 운영 의사결정에 쓰이는지는 아직 확인되지 않았다 — 현재는 “이런 지표가 시트에 있다”만 확정된 상태. 대시보드에서 이 컬럼을 KPI/알림으로 승격할 계획이 있다면 David와 재질문 필요.


6. 확인 필요 항목 (Open Question)

Open Question

  1. 5. 브랜치 판매속도 요약 5개 지표의 정확한 계산식 — 2026-09-03 확정 (재고 탭 v2 작업 중 David 재확인).
  2. 4. 컨테이너 스케줄의 대시보드 활용 범위 — 총수량만 필요한지, 컨테이너별 ETA까지 필요한지. (잔존)
  3. QLD(Q 지점) 데이터의 실제 원천 시트 — “다른 시트에서 가져온다”고만 확인됐고 구체적으로 어느 시트/탭인지는 미확인. QD/QS가 항상 공백인 이유도 그 원천 시트를 봐야 확정 가능. (잔존)
  4. O그룹 카운트의 정확한 매칭 기준 — Model 문자열 완전일치인지, 시트 내부에 별도 매칭 키가 있는지 수식을 직접 열어보지 못해 미확인(David 설명을 그대로 신뢰해 문서화했으나 향후 실제 대시보드 수치가 시트와 다르면 이 부분부터 재검증). (잔존)
  5. “Yesterday” 스냅샷 박스(2~5행)를 대시보드에 포함할지 여부 — 별도로 질문하지 않음, 현재는 모델별 메인 테이블(10행 헤더 기준)과 무관한 요약 위젯으로만 문서화. (잔존)

Bias Check

Bias Check

Counter-argument: 이 카탈로그의 §3(6개 상태그룹) 계산식은 몇 개 샘플 행(KR25-1-N, KR45-2-N 등 10여 개)에서 산술적으로 검증한 것이지, 383개 전 모델·전 컬럼을 전수 검증하지 않았다 — 예외 케이스(음수 재고, QLD 공백 등)가 더 있을 수 있다. Data gap(잔존, §4만 해당): §5는 2026-09-03 확정됐으나 §4(컨테이너 스케줄)는 여전히 David 본인도 확답하지 못한 채로 구조만 문서화한 상태 — 대시보드에서 이 섹션을 KPI/차트로 확장하기 전 반드시 재인터뷰가 필요하다. §5 데이터 소품질 메모: 최초 조사 시점 샘플에서 N_Max(NSW 배수)가 “4”로 관측됐으나, 2026-09-03 라이브 재조회(pull-stock-dashboard-data.mjs)에서는 NSW/VIC 모두 배수 5로 일치했다 — 시트에서 배수 값 자체를 그 사이 변경했거나(가장 유력, David의 “추후 달라질 수 있다” 발언과 일치), 최초 샘플 판독 오류일 수 있다. 대시보드는 이 값을 하드코딩하지 않고 매번 라이브로 읽으므로 어느 쪽이든 실제 운영에는 영향 없다.