MAKITTHandoff
Handoff Boards
finishedargo-order-sync

Argo Order Sync — E2E Handoff 보드

Argo Order Sync — E2E Handoff 보드

⚠️ 2026-04-30 — 이 spec 은 1차 검증 자료로 보존됨. 후속 작업은 fulfillment-dispatch 사이클에서 진행.

  • ArgoOrderRouter 클래스 자체 삭제 (fulfillment-dispatch 사이클에서 일반화된 dispatcher 로 완전 대체)
  • Argo 측 산출물 (argo-oms makitt-order-event consumer + internal endpoint, wms-outbound NPE 방어 패치) 은 그대로 유효 — makitt-order-event topic 이름 + 메시지 schema 동일
  • dev 배포 (argo-oms@deploy-dev, wms-outbound@test) 도 그대로 유효

즉 이 spec 의 Argo 측 spec + 검증 결과 는 production 자료로 살아있고, MAKITT 측 ArgoOrderRouter 는 fulfillment-dispatch 의 ArgoFulfillmentDispatchStrategy 로 흡수됨.

단계결과
kcat -P -t makitt-order-event -k MK-E2E-KR-006 (kcat publish)✅
MakittOrderEventConsumerContainer.handle (oms-consumer)✅ "[MAKITT order event] received. eventType=OrderPaid orderId=MK-E2E-KR-006"
OmsInternalMakittClient.createOrder (WebClient → localhost:10002)✅
InternalMakittOrderController + MakittOrderSyncApplication (oms-api)✅ argoOrderInternalId=CO0000000365464
OMS → distribution → wms-outbound✅ SH0000000172754 INIT
Step 1~7 출고완료✅ OUTBOUND_COMPLETED
OMS 피드백✅ DELIVERY_START / OUTBOUND_COMPLETE

중간 발견: OmsInternalMakittClient default base URL 이 https://oms-api.argoport.co (dev cluster) 라 로컬 검증 시 dev OMS 가 받았는데 dev OMS 엔 우리 신규 endpoint 없어서 silent null 응답 → 주문 미생성. 로컬 검증 시 --argo.oms.base-url=http://localhost:10002 명시 필요. 또한 run-argo.sh 가 ARGO_OMS_BASE_URL env var 를 EXTRA_ARGS 로 전달 안 함 → run-argo.sh 보강 또는 직접 gradle bootRun --args 사용. 운영 환경에선 default 가 정상.

단계결과
POST /internal/api/makitt/orders (KR-004)✅ argoOrderInternalId=CO0000000365463
OMS → distribution → wms-outbound✅ SH0000000172753 INIT
Step 1 create-by-workplace✅ OB0000002159328, READY_TO_PICK
Step 2 produce-batch (dev wms-job 자동)✅ batch BT0000001305840, job JB0000000063481 STANDBY
Step 3 worker assign✅ JB0000000063481 STANDBY, worker=makitt_test_worker_03
Step 4a container 할당 (TT0000000015710)✅
Step 4b v2/picking-process✅ READY_TO_PACK
Step 5 box-scan (ARG601)✅ PACKING
Step 6 sku-scan + packing-complete✅ PACKED
Step 7 outbound-complete (수동 label TEST-MAKITT-365463)✅ OUTBOUND_COMPLETED
OMS 피드백 (order_tracking)✅ DELIVERY_START / OUTBOUND_COMPLETE

진행 중 발견한 핵심 이슈 (수정 필요)

  1. OMS OrderValidator: deliveryServiceCode 만 있고 deliveryCompanyCode 없으면 거부 — MakittOrderSyncApplication.toCreateOrderDto 수정으로 우회 (deliveryCompanyCode null 이면 deliveryServiceType 도 안 보냄). distribution 이 알아서 routeType 결정.

  2. wms-outbound OmsCustomerOrderOutboundInitializer.isUseNaaverBox NPE — Set.of(...).contains(null) 이 NPE 던짐. MAKITT-TECHTAKA channel 의 commercePlatformCode=null 가 그대로 wms-outbound 까지 propagate. 로컬 working tree 패치: commercePlatformCode != null && NAVER_COMMERCES.contains(commercePlatformCode). 미커밋 — wms-outbound makitt 브랜치 신규 생성 + commit 결정 사용자 대기.

  3. commercePlatformCode propagation 누락: OMS RegisterCustomerOrderVoGenerator 가 cms 의 getVendorSalesChannel 응답에서 commercePlatformId 만 사용하고 platformCode 는 안 가져옴. distribution OrderDropDto 와 wms-outbound 메시지 모두 platformCode=null. 임시로 NPE 방어로 우회했으나 정상 path 는 platformCode 가 채워져야 함 (e.g., MAKITT, SELF_PLATFORM 식별 위해).

  4. dev DB 사전 세팅 필요 (MAKITT-TECHTAKA channel 신규) — Phase 0 link 시 cms.sales_channel 만 만들고 oms.sales_channel 은 cms→oms 전파에 의존. 우리 검증에선 직접 INSERT 함. spec 보강 필요.

미진행 (다음 사이클)

  • US 시나리오 — workplace 1280 stock 추가 했지만 dev 의 US route_type / delivery_company 매핑 부재 + worker setup 부재로 출고완료까지 어려움. KR 검증으로 해피 패스 1차 완료. US 는 별도 dev 인프라 검증 필요 (handoff 항목).

  • wms-outbound OrderPool 분기에서 막힘 — 우리 신규 channel 11200 (MAKITT-TECHTAKA) + vendor 900938 메시지가 wms-outbound consumer 에서 SUCCESS 로 처리되지만 outbound_order INSERT 가 안 됨. 핵심 로그:

    divideRecuresive orderPoolId : OP0000000000519
    isTrue key=VENDOR_ID, actual=900938, expected=[OrderPoolConditionValue(start=900671)], operation=EQUAL → false
    Set Order Pool [null]
    ERROR: Invalid delivery company code : HANJIN
    
    • 동일 vendor 900938 + channel 11070 (SELF_PLATFORM) 으로는 과거 정상 처리됨 (SH0000000171894 등). 신규 channel 11200 만 막힘.
    • 가능한 원인 후보: (a) wms.outbound.order_pool* 테이블에 channel 11200 또는 collect_group_code MAKITT-TECHTAKA 매핑 부재, (b) DeliveryCompanyCode enum 에 HANJIN 없음 (DUMMY fallback) — 이게 주 원인이면 코드 수정 필요, (c) wms-metadata 의 vendor↔channel 매핑이 11200 에 대해 미세팅.
    • 결정 필요: 어느 경로로 풀까?
      1. dev wms.outbound OrderPool 테이블에 channel 11200 매핑 INSERT — 사용자가 Argo 도메인으로 어디 INSERT 하면 되는지 알려줘야 함.
      2. MAKITT 측이 임시로 channel 11070 (SELF_PLATFORM) 로 보내는 path — 그러나 spec 의도(MAKITT-TECHTAKA) 위배.
      3. wms-outbound 코드 분석으로 어떤 테이블이 OrderPool/DeliveryCompany 결정하는지 추적 (시간 소요).
단계결과
dev DB 선행 세팅 (cms.sales_channel 11200, oms.sales_channel 11200, wms.inventory.sku_stock workplace 1280)✅
oms-api 로컬 기동✅ port 10002
oms-consumer 로컬 기동✅ port 10072
wms-outbound-api 로컬 기동✅ port 10080
wms-outbound-consumer 로컬 기동✅
wms-outbound-batch-api 로컬 기동✅ port 10082
MakittOrderSyncApplication 수정: deliveryCompanyCode 없으면 deliveryServiceType 도 안 보냄 (OrderValidator 우회)✅
POST /internal/api/makitt/orders (KR-003)✅ argoOrderInternalId=CO0000000365462
oms.orders / order_vendor_item / order_address INSERT✅
Kafka argo-order-event-dropped → distribution.original_orders✅ out_of_stock=false, refine 성공
distribution.outbound_order_instruction (workplace=376, NORMAL, EXSD/PDD 산출)✅ OI0000000194921
Kafka oms-external-outbound-order-instruction → wms-outbound consumer✅ 메시지 수신 + 처리 SUCCESS
wms.outbound.outbound_order INSERT❌ 위 OrderPool null + Invalid delivery company HANJIN 로 막힘
Step 1~7 출고완료⏸ 위 막힘 풀려야 진행 가능

비어 있음

당신이 처리할 항목

docs / spec / finished / argo-order-sync / e2e.md