REINDEERS CORE ENGINE DEEP DIVE — 재고할당·직배송·AI 지시엔진·RAG 인덱싱까지
REINDEERS 플랫폼의 핵심은 단순한 화면이나 기능의 집합이 아니라, “입고 → 재고 → 출고 → 배차 → 배송 → 정산” 전체를 하나의 상태머신 위에서 자동으로 운용하는 Core Logistics Engine이다.
이 문서는 그 중에서도 가장 중요한 4개의 심층 기술 요소, 즉 재고 할당 알고리즘 · 직배송(Direct DO) 고급 라우팅 · AI Orchestrator Action Schema · RAG 벡터 인덱싱 전략을 개발자 기준으로 상세히 기록한 기술 문서이다.
1. 재고 할당 엔진의 알고리즘 상세
출고 ASN(OSN)이 승인되면, 시스템은 자동으로 재고를 분석하여 창고별 DO를 생성한다. 이 과정은 다음 4개의 핵심 알고리즘을 기반으로 한다.
1.1 FEFO(유통기한 우선) 알고리즘
재고 할당의 최우선 규칙은 FEFO이다.
1. SKU별로 모든 로트 수집
2. 유통기한 오름차순으로 정렬
3. 출고 요청 수량을 상위 로트부터 채움
4. 유통기한 임박 로트는 경고 플래그 기록
FEFO 적용 예시
출고 요청: 120개
재고:
LOT-A(2025-03-01): 50개
LOT-B(2025-04-01): 70개
LOT-C(2025-06-01): 100개
→ A 50 + B 70 = 120 (C는 미사용)
1.2 거리 우선 알고리즘 (Warehouse Distance Ordering)
출고지(창고)와 고객 배송지 간의 거리 차이는 DO 생성에서 중요한 요소다. 거리 계산은 Haversine Formula를 기반으로 한다.
// Haversine Distance
d = 2r * arcsin( sqrt( sin²((lat2-lat1)/2)
+ cos(lat1)*cos(lat2)*sin²((lng2-lng1)/2) ) )
- 70km 이하인 창고는 1순위 후보
- 70–150km는 2순위
- 150km 이상은 예외 처리 → 관리자 승인 필요
1.3 CBM 기반 적재 가능성 검사
출고된 재고가 실질적으로 트럭 CBM에 적재 가능한지 계산한다.
필요CBM = Σ (SKU.volume * qty)
트럭CBM ≥ 필요CBM ? OK : FAIL
필요한 CBM이 트럭의 여유 CBM보다 클 경우:
- 다른 트럭 추천
- 배송 분할 제안
- 직접 경로가 아닌 중간 Drop-Off 경로 제안
1.4 로트 분산 최소화 알고리즘
가능한 한 “로트 일관성”을 유지하는 방향으로 할당한다.
1. 동일 로트 → 동일 DO
2. 분산 로트 구성 시 각 DO가 최소 로트 수 가지도록 분리
3. 다중 창고 재고의 경우 창고별로 로트 일관성을 유지
2. Direct DO(직배송) 고급 처리 — 다구간 경로 & 시간 제약 기반 알고리즘
Direct DO는 ASN 없이 바로 DO가 생성되는 케이스로, 실제 운영에서는 긴급 배송, 단일 라우팅, 생산지→고객 직배송에 주로 사용된다.
2.1 다구간 경로 계산
Direct DO는 다음과 같은 복수 경로 옵션을 생성한다.
- 단일 구간: A → B
- 다중 구간: A → 허브1 → B
- 재적재 경로: A → 창고 → B
각 시나리오별 ETA/비용/적재율을 계산해 최종 추천 경로를 AI가 선택한다.
2.2 시간 제약 기반 DO 생성
Direct DO는 다음의 시간 제약을 고려해야 한다.
- 고객 수령 가능 시간대(time_window)
- 기사 근무시간(shift_start/end)
- 트럭의 도착 예상시간(ETA)
ETA + unload_time ≤ time_window_end ? OK : FAIL
2.3 우선순위 결정 알고리즘
Direct DO는 출고 DO보다 우선순위가 높은 경우가 많다.
- Priority 1: 긴급(urgent)
- Priority 2: 당일 요청(same_day)
- Priority 3: 일반 일반 예약
AI는 우선순위에 따라 트럭 재배치, 경로 삽입 여부를 결정한다.
3. AI Orchestrator — JSON Action Schema 상세 구조
AI는 업무를 직접 실행하지 않는다. 대신 “업무를 수행하기 위해 필요한 Action 리스트”를 JSON으로 설계해 서버로 전달한다.
3.1 Action Schema 기본
{
"action": "create_asn_out",
"parameters": {
"customer_id": 10,
"items": [...],
"delivery_date": "2025-12-01"
},
"context": {
"company_id": 2,
"locale": "th-TH",
"initiator": "user:34"
}
}
3.2 Action 타입 구성
- create_asn_in
- create_asn_out
- allocate_inventory
- generate_pickup_do
- generate_delivery_do
- generate_direct_do
- schedule_dispatch
- reschedule_route
- request_inventory_confirmation
3.3 Action 검증 흐름
AI → JSON Action → Schema Validation
→ 상태머신 검증
→ 권한/회사 분리 검증
→ 실제 API or MQ로 실행
이 구조는 AI가 잘못 판단해도 시스템 오류로 이어지지 않도록 한다.
4. RAG 벡터 스키마 & Embedding 전략
LLM이 물류 데이터 전체를 이해하게 하는 것은 불가능하다. 따라서 REINDEERS는 RAG 기법을 이용해 “AI에게 꼭 필요한 문맥만” 전달한다.
4.1 RAG 인덱싱 대상
- SKU 데이터 (다국어명, 속성, 규격)
- ASN(입고/출고)의 텍스트화된 요약
- DO 기록 및 dispatch 로그
- 고객사 정책(출고 정책/유통기한 정책)
- 창고 Zone/Rack/Bin 설명
- AI Action 결과 히스토리
4.2 Vector Schema 설계
{
"id": "sku:501:lotA",
"company_id": 2,
"type": "sku",
"vector": [...],
"payload": {
"sku_id": 501,
"name_ko": "알루미늄 프로파일",
"name_th": "...",
"size": "...",
"lot": "LOT-A",
"expire_at": "2025-03-01"
}
}
4.3 Embedding 전략
- SKU 이름 + 규격 + 고객사 설명을 하나의 문맥으로 묶어 Embedding
- ASN/DO는 JSON 형식을 “텍스트화한 상태”로 Embedding
- 고객사 정책은 “규칙 기반 문장”으로 Embedding
- 다국어 처리를 위해 multilingual embedding 사용
4.4 Retrieval Flow
사용자 명령
→ 질의 벡터화
→ top-k 문맥 검색
→ context bundle 구성
→ LLM에 지시문 + 문맥 전달
→ Action JSON 생성
5. 이 모든 기술이 연결되는 실제 예시
다음과 같은 운영자 명령이 있다고 가정한다.
“내일 고객 A에게 120박스 출고 준비해줘.”
5.1 단계별 실제 동작
- 문장 → AI 입력 처리
- RAG로 고객 A 재고·정책·과거 출고 문맥 조회
- AI가 Action 리스트 생성
- 서버에서 Action Validation
- ASN(출고) 자동 생성
- 재고 할당(FEFO + 거리 + 로트 최소화)
- 창고별 Delivery DO 자동 분리 생성
- Direct DO 후보와 비교 후 일반 출고 선택
- 배차 엔진이 트럭·기사 자동 배정
6. 결론 — REINDEERS 기술 엔진의 본질
REINDEERS는 단순한 WMS나 배송 관리 시스템이 아니다. 내부적으로는 데이터 모델 + 상태머신 + AI + RAG + 배차 알고리즘 + 재고 엔진을 결합한 하나의 거대한 자동화 엔진이다.
이 문서에 소개된 구조들은 모두 실제 운영 환경에서 확장 가능한 형태로 설계되었으며, AI가 잘못된 판단을 하더라도 시스템은 안정적으로 작동하도록 설계되어 있다. 이것이 REINDEERS가 만드는 차세대 동남아 물류 OS의 핵심이다.
Comments
Post a Comment