재고·물류·

클레임·회수 대응을 위한 LOT 역추적 — 원재료 수불부터 출하처까지 잇는 Traceability 설계

식품 클레임·회수의 진짜 무기는 LOT 번호가 아니라 양방향 LOT Genealogy와 Mass Balance다. 완제품→원재료 역추적, 원재료→출하처 정추적, 수량정합성으로 영향범위를 정확히 특정하는 설계를 정리한다.

식품 클레임이 접수됐을 때 공장장이 가장 먼저 확인해야 할 것은 클레임 내용 자체만이 아니다. 문제가 된 완제품이 어떤 원재료로 생산됐는가, 그리고 같은 영향을 받을 가능성이 있는 제품이 현재 어디에 얼마나 남아 있는가를 확인해야 한다. 이 두 질문에 답할 수 있어야 회수범위를 결정할 수 있다.

완제품 LOT에서 원재료 LOT를 찾아가는 것을 Backward Tracking, 특정 원재료 LOT에서 생산된 완제품과 출하처를 찾아가는 것을 Forward Tracking으로 볼 수 있다. 식품제조업의 Traceability는 이 두 방향이 동시에 작동해야 한다.

LOT 번호를 제품에 적어두는 것만으로는 부족하다.

원재료 입고 LOT → 실제 생산 투입 → 생산 Batch → 완제품 LOT → 재고 → 출하처

가 하나의 관계로 연결돼야 한다.

회수에서 가장 위험한 답은 “아마 이 정도일 겁니다”다

고객으로부터 완제품 A의 특정 LOT에서 이물 클레임이 접수됐다고 하자. 이때 품질책임자는 해당 완제품의 생산일자를 찾는 데서 끝나면 안 된다. 다음까지 설명할 수 있어야 한다.

  • 어느 생산 Batch에서 만들어졌는지
  • 그 Batch에 어떤 원재료 LOT가 실제 투입됐는지
  • 동일 원재료가 다른 Batch에도 사용됐는지
  • 같은 시간대에 생산된 다른 제품이 있는지
  • 완제품이 총 몇 개 생산됐고 현재 공장에 몇 개 남아 있는지
  • 어느 거래처로 몇 개가 출하됐는지
  • 반품이나 폐기된 수량은 없는지

추적이 느린 것보다 더 위험한 것은 추적범위가 불확실한 것이다. 영향범위를 정확히 특정하지 못하면 회수범위를 넓혀야 할 가능성이 커진다. 문제 LOT 하나만 회수하면 될 사고가 생산일 전체, 경우에 따라 제품 전체의 회수로 확대될 수 있다. Traceability는 단순한 품질관리 기능이 아니라 회수비용을 제한하는 Risk Control이다.

’2시간 이내 추적’은 법정 공통기준이 아니라 운영목표로 보는 게 정확하다

유통사 품질감사나 공급업체 평가에서는 Mock Recall 완료시간을 자체 평가기준으로 두는 경우가 있다. 2시간을 목표로 정하거나, 특정 고객사가 별도의 Supplier Standard에서 요구할 수도 있다. 하지만 국내 모든 식품제조업체가 법적으로 2시간 안에 100% 추적을 완료해야 한다는 일반규정으로 설명해서는 안 된다.

현행 HACCP 기준은 원료관리부터 제조·보관·유통 과정의 위해요소 관리, 기록유지와 회수프로그램 등을 관리체계에 포함한다. 다만 일률적인 ’2시간’이라는 법정 완료시간을 규정하는 구조는 아니다.

따라서 회사 내부 SOP에서는 더 현실적으로 정의할 수 있다. 예를 들면 이렇게 쓴다.

Mock Recall 개시 후 2시간 이내에 영향범위와 수량정합성을 검증 완료한다.

MES·ERP가 구축돼 있다면 시스템 조회 자체는 5분 또는 10분 이내를 내부 KPI로 잡을 수도 있다. 중요한 것은 시간보다 완결성이다.

Backward Tracking은 완제품에서 시작한다

완제품 LOT FG260905-A01이 있다고 하자. Backward Tracking에서는 이 LOT를 기준으로 생산정보를 거슬러 올라간다.

  • 완제품 LOT가 어떤 Production Batch에서 생성됐는지 찾는다
  • 그 Batch가 어떤 Recipe Version으로 생산됐는지 확인한다
  • 실제로 투입된 원재료 LOT와 투입량을 확인한다
  • 반제품을 썼다면 해당 반제품 Batch까지 다시 올라가고, 그 반제품을 만들 때 쓰인 원재료 LOT까지 연결한다
  • 최종적으로 공급업체·입고일자·입고검사 결과까지 도달할 수 있어야 한다

핵심은 BOM에 등록된 ’사용 예정 원료’를 찾는 게 아니라 해당 Batch에 실제 사용된 원료 LOT를 찾는 것이다. 표준 BOM에 원재료 A 20kg이 등록돼 있어도, 현장에서 LOT A-01 12kg과 LOT A-02 8kg을 썼다면 두 LOT가 모두 생산기록에 남아야 한다. 이 차이를 놓치면 Traceability는 형식적으로만 존재하게 된다.

Forward Tracking은 원재료 사고에서 더 중요하다

이번에는 공급업체가 원재료 LOT RM260901-03에 문제가 있다고 통보했다고 하자. 질문은 반대로 바뀐다.

  • 이 원재료가 현재 얼마나 남아 있는가
  • 어느 생산 Batch에서 얼마나 사용됐는가
  • 해당 Batch에서 어떤 완제품 LOT가 생산됐는가
  • 완제품이 현재 어느 창고에 있는가
  • 얼마나 출하됐고, 출하처와 출하수량은 얼마인가

실제 회수에서는 Backward와 Forward가 연속으로 사용되는 경우가 많다. 고객 클레임으로 완제품을 역추적해 문제 원료 후보를 찾고, 다시 그 원료를 정방향으로 추적해 영향받은 다른 제품까지 확인하기 때문이다.

그래서 시스템의 기본구조도 단방향 연결이 아니라 Many-to-Many LOT Genealogy를 전제로 해야 한다. 하나의 Batch에 여러 원재료 LOT가 들어갈 수 있고, 하나의 원재료 LOT가 여러 Batch에 나뉘어 사용될 수도 있다.

LOT 추적의 품질은 Mass Balance에서 드러난다

추적 결과가 맞는지는 결국 수량으로 검증해야 한다. 원재료 A LOT가 500kg 입고됐다고 하자.

  • 현재 재고 60kg
  • 정상 생산 투입 410kg
  • 공정 Loss 12kg
  • 샘플·검사용 3kg
  • 폐기 15kg

이라면 총 500kg이 설명돼야 한다.

60 + 410 + 12 + 3 + 15 = 500kg

이것이 기본적인 Mass Balance다. 하지만 식품공장에서는 단순한 입고량과 완제품 생산량을 직접 비교하면 안 된다. 증숙·건조에서 수분 증감이 발생할 수 있고, 세척·해동에서 중량이 달라질 수 있으며, 원료를 혼합하면 다른 원재료와 결합된다.

따라서 Mass Balance는 실제 공정 특성과 Yield 구조를 반영해 해석해야 한다. 목적은 원재료 500kg이 완제품 500kg이 됐는지 확인하는 게 아니라, 500kg의 원료가 어느 Transaction으로 이동했는지 설명하는 것이다.

수율 Loss와 ’사라진 재고’를 같은 것으로 보면 안 된다

생산투입 100kg에서 정상적으로 92kg의 완제품이 나오는 제품이 있다고 하자. 표준공정에서 8kg의 수분손실이 발생한다면 이것은 정상적인 공정수율의 일부다. 그런데 ERP가 BOM 기준으로 100kg을 차감했고 실제 현장에서는 103kg을 썼다면, 별도의 3kg 차이가 존재한다. 이 차이를 모두 Yield Loss로 처리하면 재고오류를 숨길 수 있다.

Traceability에서는 표준투입량 · 실제투입량 · 공정산출량 · 정상 Loss · 비정상 Loss · 잔량 Return · 폐기를 구분할 필요가 있다. 수량정합성은 단순히 최종 숫자를 맞추는 작업이 아니라 왜 그 수량이 줄었는지를 Transaction으로 설명하는 과정이다.

수기 이력추적이 무너지는 곳은 대부분 ’작은 수량’이다

대량으로 쓰는 주원료는 비교적 잘 기록된다. 쌀 500kg, 설탕 200kg, 앙금 300kg 같은 원료는 입고와 사용량을 확인하기 쉽다.

문제는 소량 사용 원료다. 향료·색소·첨가제·복합조미식품·소량 부재료처럼 하루에 몇 백 g 또는 몇 kg씩 쓰는 원료는 작업자가 LOT 기록을 생략하기 쉽다. 하지만 위해 관점에서는 사용량이 적다는 이유로 중요도가 낮아지지 않는다. 특정 첨가제 LOT에 문제가 생겼을 때 어느 제품에 쓰였는지 찾지 못하면 생산일 전체를 영향범위로 잡아야 할 수도 있다.

그래서 식품제조 Traceability에서는 원가 중요도와 추적 중요도를 분리해서 생각해야 한다.

잔량 Return이 LOT 연결을 끊는 경우도 많다

원재료 한 포대를 생산에 투입했지만 전량을 쓰지 않았다고 하자. 20kg 중 12kg을 쓰고 8kg이 남아 창고로 되돌아간다. 수기관리에서는 흔히 ’잔량 8kg’이라고만 적고 원래 LOT 연결을 잃어버린다. 며칠 뒤 다시 쓸 때는 어느 입고 LOT였는지 확인하기 어려워진다.

MES에서는 개봉 또는 투입 시 원재료 LOT를 Scan하고 실제 투입량만 차감한 뒤, 잔량은 동일 LOT 재고로 유지해야 한다. 필요하다면 개봉일자나 개봉 후 사용기한 같은 추가 상태정보도 관리할 수 있다. 잔량이 새로운 익명재고가 되어서는 안 된다.

Rework는 더욱 위험하다

전날 생산한 반제품 일부를 다음 Batch에 재투입했다고 하자. 기록하지 않으면 두 Batch의 Genealogy가 끊어진다. 원래 Batch에서 쓰인 원재료가 Rework를 통해 새로운 제품 LOT로 이동했는데 시스템에는 나타나지 않는 것이다.

재작업이 허용되는 공정이라면 원래 Batch · Rework 수량 · 투입 대상 Batch · 사용일자 · 품질승인을 연결해야 한다. Rework는 단순 원료 하나가 아니라 이전 생산이력 전체를 함께 가지고 이동하는 재료라고 보는 편이 맞다.

포장재 LOT도 제품 안전과 회수범위에 영향을 줄 수 있다

Traceability를 원재료에만 적용하면 또 다른 공백이 생긴다. 식품과 직접 접촉하는 포장재·라벨·필름·용기·뚜껑 같은 자재도 문제가 발생할 수 있다.

특정 포장재 LOT에서 밀봉불량이나 인쇄문제가 발생하면 어느 완제품에 쓰였는지 추적할 수 있어야 한다. 특히 소비기한·알레르기·제품명 같은 가변정보가 잘못 인쇄되면, 실제 제품은 정상이어도 표시문제로 출하중지나 회수 검토가 필요해질 수 있다. 그래서 포장재 가변정보와 표시 관리는 LOT Traceability와 별개의 영역이 아니라 같은 데이터체인의 일부다.

수기 관리와 MES·ERP 추적의 차이는 검색속도보다 Transaction 구조에 있다

구분 수기·엑셀 이력추적 MES·ERP LOT Tracking
원재료 입고 수불장 입력 입고 LOT 생성·바코드 부여
실제 투입 작업일지 수기 생산 Batch에서 LOT Scan
잔량 별도 메모 가능 동일 LOT 재고 유지
반제품 수기 연결 필요 Batch Genealogy 연결
Rework 누락 위험 큼 원 Batch와 재투입 Batch 연결
완제품 LOT 별도 부여 생산실적에서 자동 생성 가능
출하추적 출고전표 검색 LOT별 Shipment 조회
Mass Balance 여러 장부 대조 Transaction 수량 검산
Mock Recall 부서별 자료 취합 정·역방향 즉시 조회
변경이력 수정흔적 관리 필요 권한·Audit Trail 적용 가능

전자시스템의 장점은 종이를 없애는 게 아니다. 원재료가 이동할 때마다 같은 LOT 관계를 다시 입력하지 않도록 만드는 것이다.

Barcode와 QR은 Traceability가 아니라 입력오류 방지장치다

바코드를 도입했다고 자동으로 이력추적이 완성되는 게 아니다. 바코드는 데이터 입력수단이다. 입고 시 원재료 LOT를 Scan하고, 생산현장에서 작업자가 투입하려는 원료를 Scan한다. MES는 생산지시와 품목을 확인하고, 잘못된 원료나 허용되지 않은 LOT라면 투입을 막는다. 이것이 Poka-Yoke에 가까운 사용방식이다.

중요한 것은 Scan한 값이 Raw Material LOT → Production Order → Batch 관계로 저장되는 것이다. 단순히 바코드 값을 엑셀 셀에 넣는 것으로는 구조가 달라지지 않는다.

MES Batch Code가 LOT Genealogy의 중심키가 된다

실제 생산에서는 하나의 Production Batch가 여러 원재료 LOT를 소비하고 하나 이상의 완제품 LOT를 만들 수 있다. 따라서 시스템에서는 Batch ID를 중간 연결점으로 쓰는 게 효과적이다.

예를 들어 Batch B260905-0042를 열면 제품코드 · Recipe Version · 실제 원재료 LOT · 실제투입량 · 작업시간 · CCP 기록 · 반제품 Batch · 완제품 LOT · 생산수량 · Loss · 품질상태를 조회할 수 있다. 이 상태에서 ERP의 창고·출하 Transaction을 연결하면 완제품 LOT가 어느 거래처로 이동했는지까지 이어진다.

ERP와 MES의 역할도 나누는 편이 좋다

ERP는 입고·재고·구매·출하 같은 Enterprise Transaction에 강하다. MES는 실제 생산현장에서 어떤 Batch에 무엇이 투입되고 무엇이 생산됐는지를 기록하는 데 강하다. 따라서 LOT Traceability를 구축할 때 한 시스템에 모든 역할을 억지로 넣을 필요는 없다.

ERP에서 원재료가 입고되면 원재료 LOT를 생성하고, MES는 생산 시 해당 LOT를 실제 투입관계로 연결한다. 완제품 생산이 확정되면 Finished LOT가 생성되고, ERP는 완제품 재고와 출하정보를 관리한다. 핵심은 시스템의 이름이 아니라 공통 식별자와 Source of Truth를 명확히 하는 것이다.

Mock Recall은 버튼 하나가 아니라 정기적인 검증 절차다

추적시스템을 만들어놓고 실제 사고가 날 때까지 쓰지 않으면 문제가 남아 있을 수 있다. 따라서 정기적인 Mock Recall이 필요하다.

  1. 완제품 LOT 하나를 임의로 선정해 Backward Tracking을 수행한다
  2. 원재료 LOT 하나를 골라 Forward Tracking을 수행한다
  3. 생산량·잔여재고·폐기·반품·출하량을 확인한다
  4. 수량정합성을 검증한다
  5. 필요한 자료를 제출형식으로 만들어본다

오류가 발견되면 단순히 보고서를 수정하는 게 아니라 왜 Transaction이 끊겼는지를 찾아야 한다. 이 절차는 유통사 제2자 감사 대응과도 직접 연결된다.

시스템 조회 5분과 회수 완료 5분은 전혀 다른 말이다

MES와 ERP 데이터가 제대로 연결돼 있다면 특정 LOT의 정·역추적 리포트를 수분 안에 생성하는 것은 가능하다. 내부 KPI를 ’5분 이내 Traceability Report 생성’으로 설정할 수도 있다. 하지만 이것을 ’5분 안에 실제 회수를 완료한다’고 표현해서는 안 된다.

실제 회수에는 위해평가 · 회수범위 결정 · 유통망 확인 · 거래처 통보 · 재고격리 · 회수물류 · 관계기관 보고 · 소비자 대응 등 별도의 절차가 따른다. 시스템이 빠르게 해야 하는 일은 의사결정을 위한 정확한 영향범위를 제공하는 것이다.

Quantity Reconciliation이 없는 자동 리포트는 절반짜리다

리포트가 빨리 나와도 수량이 맞지 않으면 다시 사람이 확인해야 한다. 따라서 Traceability Engine에서는 관계조회뿐 아니라 수량검산을 같이 해야 한다.

  • 원재료: 총 입고량 · 현재 잔량 · Batch별 투입량 · 반품 · 폐기 · 조정량
  • 완제품: 총 생산량 · 현재 정상재고 · QC HOLD · 폐기 · 반품 · 출하수량 · 각 거래처 출하량

추적성의 최종 질문은 두 가지다. “어디에 사용했는가”, 그리고 “그래서 지금 몇 개가 어디에 있는가”.

품질상태까지 연결돼야 회수범위를 통제할 수 있다

완제품 10,000개가 생산됐다고 하자. 이미 6,000개 출하, 정상재고 2,000개, QC HOLD 1,500개, 폐기대기 500개라면 시스템은 10,000개의 상태를 구분해 보여줄 수 있어야 한다. 단순 On Hand 4,000개라고 표시하면 품질상태가 사라진다.

Traceability Engine은 재고수량뿐 아니라 품질상태(Quality Status)까지 읽어야 한다. 이 데이터는 HOLD·부적합·회수 판단의 기록화와 자연스럽게 연결된다.

좋은 Traceability는 회수범위를 무조건 작게 만드는 시스템이 아니다

LOT를 세분화하면 회수범위가 무조건 작아진다고 생각하기 쉽다. 하지만 실제 공정에서 여러 LOT가 섞였는데 시스템만 인위적으로 LOT를 잘게 나누면 오히려 잘못된 추적결과가 나온다.

LOT 경계는 실제 제조공정에서 품질과 원료관계가 구분되는 단위와 맞아야 한다. 하나의 혼합탱크에서 여러 원료가 섞인 뒤 연속 포장했다면 해당 공정의 실제 혼합관계를 반영해야 한다. Traceability의 목적은 가능한 한 작은 회수범위를 만드는 게 아니라 실제로 영향을 받은 범위를 정확하게 특정하는 것이다. 정확한 범위가 작다면 작게 회수하고, 넓다면 넓게 회수해야 한다.

사고가 나기 전에 한 번은 LOT를 끝까지 따라가봐야 한다

공장에서 Traceability가 제대로 작동하는지 확인하는 가장 현실적인 방법은 복잡하지 않다.

  1. 오늘 생산한 완제품 하나를 골라 완제품 LOT를 읽는다
  2. 생산 Batch를 찾는다
  3. 실제 투입 원재료 LOT를 찾고, 입고 LOT와 공급업체를 확인한다
  4. 다시 원재료 하나를 선택해 그 원료가 들어간 다른 Batch를 찾는다
  5. 생산된 완제품 LOT를 확인하고, 창고재고와 출하처까지 내려간다
  6. 마지막으로 입고량·사용량·Loss·잔량·출하량이 설명되는지 확인한다

어느 지점에서 사람이 기억을 더듬기 시작하거나 별도의 엑셀을 만들어 숫자를 맞춰야 한다면, 그곳이 Traceability의 단절점이다.

식품제조업의 LOT 관리에서 중요한 것은 번호를 얼마나 정교하게 만드는지가 아니라 하나의 원재료가 입고된 순간부터 마지막 완제품이 출하될 때까지 동일한 거래관계를 잃어버리지 않는 것이다.

표시(Labeling)는 그 LOT가 실물 포장에 정확하게 표시되도록 하고, 감사 대응은 그 관계를 외부 감사에서도 증명할 수 있게 하며, 품질기록은 HOLD·부적합·회수 판단과 변경이력을 연결한다. MES와 ERP는 그 사이의 생산과 재고 Transaction을 이어준다.

클레임이 발생한 뒤 두 시간 동안 서류철을 뒤지는 공장과, 몇 분 안에 영향 LOT와 수량을 조회한 뒤 나머지 시간을 위해평가와 회수 의사결정에 쓰는 공장의 차이는 단순한 업무속도가 아니다. 사고가 났을 때 무엇을 회수해야 하는지 이미 데이터로 알고 있는가의 차이다.

이 글 다음엔

그래서 회수 결정이 내려지면, 그다음 실제로 뭘 어떻게 움직여야 할까?

HACCP · 품질식품제조업 부적합·회수관리 실무 — LOT 격리부터 출하차단·폐기·회수까지3분 만에 확인
저자 Michael Han

글 · Michael Han
(주)단지 대표(식품제조, 2016~) · VSL Vietnam MD · ISO 9001·14001·45001 인증심사원.저자 소개 →

최종 검증:

개정 이력

· 발행

여기 담긴 규정·수치는 최소 6개월마다 위 공식 출처와 대조해 재확인합니다. 실질적 변경(요건·기준·수치)은 조용히 덮어쓰지 않고 개정 이력에 남깁니다.

이 글은 일반적인 실무 정보이며 법률·세무·행정 자문이 아닙니다. 규정·수치는 관할과 시점에 따라 달라지므로, 실제 판단 전 위 공식 출처와 관할 기관에서 최신 기준을 확인하시기 바랍니다.