2019년, 나는 캘리포니아 폰타나의 한 이커머스 창고에 들어섰다. 재고 차이가 1.8%였고, 사장은 밤잠을 설치고 있었다. 일주일간 원인을 뒤졌다. 도난도 아니었다. 시스템 버그도 아니었다. 근본 원인은 작업자가 위치 B-14-06을 B-14-09로 잘못 듣고 있었던 것이었다. 손으로 쓴 피킹 시트, 구두 확인, 그리고 6은 9와 너무 닮았다. 한 문자 차이의 오피킹이 연간 수천 건.

내 결론은 단순하다. 위치 코드 끝에 체크 디지트를 붙이는 것은 창고 전체에서 가장 저렴한 오류 방지책이다. 새 스캐너보다 100배 저렴하고, 감사 인원을 늘리는 것보다 10배 확실하다.

체크 디지트가 실제로 하는 일

아이디어는 바코드에서 빌려온 것이다. 상품 바코드의 마지막 자릿수는 무작위가 아니다——앞의 모든 자리에서 계산된 내장 검증 코드다. 위치 코드에도 똑같이 적용한다. 고정된 알고리즘으로 나머지 부분에서 계산한 문자 하나를 끝에 붙인다. 작업자가 위치를 입력하거나 스캔하면 시스템이 다시 계산하고, 일치하지 않는 것은 거부한다. 작업은 그 자리에서 멈춘다.

예를 보자. 위치 A-03-12의 체크 디지트는 7로 계산되므로 전체 코드는 A-03-12-7이 된다. 피커가 오타를 내 A-03-21을 입력했다. 시스템은 다시 계산해 7이 아닌 4를 기대하고 즉시 오류를 낸다. 실수는 발생한 그 순간에 죽는다. 사이클 카운트에서 드러나지 않는다.

알고리즘을 직접 만들 필요는 없다. 일꾼은 가중 모듈러 10이다. 각 자리 숫자에 번갈아 가중치(1, 3, 1, 3…)를 곱하고, 합한 뒤 마지막 자릿수를 취해 10에서 뺀다. 대부분의 WMS는 설정 가능한 체크 규칙을 지원한다. 지원하지 않으면 수십 줄의 코드면 된다. 유일한 요구사항은 일관성이다——하나의 알고리즘을, 모든 곳에.

코딩 체계부터 고쳐라. 그러지 않으면 체크 디지트는 무용지물이다

체크 디지트는 오타를 막는다. 엉망인 체계는 고치지 못한다. 그러니 디지트를 붙이기 전에 위치 코딩 규칙부터 바로잡아라. 내가 고객에게 주는 체계는 네 개의 세그먼트다. 존-통로-단-열이다. 존 A, 통로 3, 단 2, 열 12를 A-03-2-12처럼 쓰는 식이다.

몇 가지 철칙이 있다.

숫자 먼저, 문자는 존 세그먼트에만 쓰고, 헷갈리는 것은 금지한다. I와 1, O와 0, S와 5, Z와 2——전부 제외다. 존 코드로 B와 8을 쓰는 창고를 본 적이 있다. 작업자들이 매일 헷갈려서 전체를 개명할 때까지 계속됐다.

세그먼트마다 길이를 고정한다. 통로 번호는 항상 두 자리(3이 아니라 03), 단은 한 자리, 열은 두 자리다. 길이를 고정하면 체크 알고리즘이 안정되고, 작업자가 빠진 문자를 한눈에 찾을 수 있다.

위치로 병음이나 사람 이름, 상품명을 쓰지 마라. 친근해 보이지만 재앙이다. '왕 씨 존', '인기 상품 존'은 다음 신입사원에게는 아무 의미도 없고, 검증할 수 있는 시스템도 없다. 위치 코드는 기계와 프로세스를 위한 것이지, 향수를 위한 것이 아니다.

오래된 창고를 개조하는 것은 무섭지 않다. 순서는 이렇다. 새 위치 테이블 전체를 생성하고, 신구 변환 시트를 인쇄해 통로 입구에 붙인다. 한 달간 듀얼 모드로 운영한다——두 코드가 모두 작동하지만 시스템에 기록되는 것은 새 코드다. 한 달 뒤 구 코드를 폐지하고, 스캐너가 새 코드만 받아들이게 한다. 전환 기간의 인쇄비는 아끼지 마라. 충분히 가치 있다.

WMS에서 설정하고, 스캐너에서 잡아라

검증은 빠르면 빠를수록 좋다. 이상은 스캐너 자체의 실시간 검증이다. 작업자가 위치 바코드를 스캔하면 디바이스가 그 자리에서 체크 디지트를 검증한다. 틀린 코드는 진동과 빨간 불이다. 스캔-동기화-오류보다 낫고, 재고 카운트에서 문제를 발견하는 것보다 낫다.

WMS 쪽은 세 단계다. 위치 마스터에 체크 디지트 필드를 추가하고 일괄 생성한다. 피킹, 입고, 사이클 카운트 작업의 확인 단계에 검증 로직을 추가한다. 예외 플로우를 정의한다——검증 실패 시 작업을 중단하고 슈퍼바이저에게 라우팅한다. 슈퍼바이저는 강제 승인할 수 있지만 사유 입력은 필수다.

이 오버라이드는 있어야 한다. 라벨은 훼손되고 임시 위치도 생기기 때문이다. 하지만 사유 필드는 필수다. 나는 데이터를 본 적이 있다. 강제 오버라이드가 5%%를 초과하는 창고에서는 10번 중 8번 근본 원인이 라벨 인쇄 품질이다——프린터를 바꾸면 문제가 사라진다. 데이터는 말한다. 기록만 한다면.

대부분이 놓치는 것이 있다. 사이클 카운트에도 디지트가 필요하다. 잘못된 위치를 스캔한 카운터는 남의 슬롯에 카운트를 기록하고, 차이는 복리로 불어난다. 체크 디지트 도입 후 카운트 차이는 보통 3분의 1 이상 줄어든다.

계산: 오피킹 한 건의 진짜 비용

오피킹 비용은 재피킹 인건비만이 아니다. 전체 청구서는 이렇다. 피커가 발견하고 걸어서 돌려놓는다——15분의 인건비. 못 잡으면 고객에게 간다——20분의 고객 응대, 재배송 운임, 반품 운임, 그리고 상품은 다시 돌아오지 않을 수도 있다. 이커머스 소포 기준으로 오피킹 한 건 평균은 $15에서 $35다.

월 20,000건의 주문, 오피킹률 0.3%%인 창고는 월 60건의 오피킹——직접 비용만 연간 $10,000을 넘는다. 잃은 고객은 빼고도.

그리고 체크 디지트는? 하드웨어는 0이다. 새 창고는 첫날부터 넣고, 기존 창고는 주말에 코드를 생성하고 라벨을 인쇄하면 된다. 유일한 실비용은 WMS 설정 반나절과 30분짜리 작업자 교육이다. 창고에서 이보다 좋은 ROI는 떠오르지 않는다.

주의 리스트:

  • 알고리즘을 공유 드라이브에 문서화하라. 신입 교육은 30분으로 반드시 다룬다. IT만 아는 블랙박스가 되게 하지 마라.
  • 임시 위치도 코드가 필요하다. '임시'일 때야말로 실수가 난다——검증에서 제외하지 마라.
  • 특수 문자는 쓰지 마라. 대시가 너무 많으면 스캐너가 헷갈린다. 세그먼트 사이 하이픈 하나로 충분하다.
  • 고라이브 후 첫 주에는 검증 실패 로그를 매일 읽어라. 특정 위치에 실패가 몰리면 라벨 오부착 가능성이 높다——걸어가서 확인하라.

창고 랙 통로에서 위치 라벨을 스캔하는 작업자

오늘 밤 할 수 있는 일

위치 테이블을 내보내고 필터하라. 한 문자만 다른 '쌍둥이 위치'가 있는가. A-03-16과 A-03-19, B-14-06과 B-14-09처럼. 있다면 먼저 개명해 거리를 만들고, 그다음 체크 디지트를 붙여라. 이 두 단계를 밟으면 오피킹률이 절반으로 줄어든다. 저녁은 내가 산다.

위치 코딩은 망가지기 전까지 아무도 신경 쓰지 않는 것이다. 체크 디지트는 코딩 체계의 보험이다——보험료는 거의 0이고, 청구할 때 가입하길 잘했다고 생각하게 될 것이다.

영어판 번역본입니다. 내용이 다를 경우 영어판을 우선합니다.