fix(baekje): 장바구니 담기 시 internal_code 사용하도록 수정
- kd_code 대신 internal_code로 장바구니 추가 - internal_code 없으면 검색 후 규격 매칭으로 찾기 - 백제 장바구니 담기 정상 작동 확인
This commit is contained in:
@@ -898,12 +898,45 @@ def submit_baekje_order(order: dict, dry_run: bool, cart_only: bool = True) -> d
|
||||
# ─────────────────────────────────────────
|
||||
for item in items:
|
||||
kd_code = item.get('kd_code') or item.get('drug_code')
|
||||
internal_code = item.get('internal_code') # 프론트엔드에서 전달된 internal_code
|
||||
order_qty = item['order_qty']
|
||||
spec = item.get('specification', '')
|
||||
cart_result = {}
|
||||
|
||||
# 🔍 디버그: 백제 주문 파라미터 확인
|
||||
logger.info(f"[BAEKJE DEBUG] kd_code={kd_code}, internal_code={internal_code}, qty={order_qty}, spec={spec}")
|
||||
logger.info(f"[BAEKJE DEBUG] full item: {item}")
|
||||
|
||||
try:
|
||||
# 장바구니 추가
|
||||
cart_result = baekje_session.add_to_cart(kd_code, order_qty)
|
||||
if internal_code:
|
||||
# internal_code가 있으면 바로 장바구니 추가!
|
||||
logger.info(f"[BAEKJE DEBUG] Using internal_code directly: {internal_code}")
|
||||
cart_result = baekje_session.add_to_cart(internal_code, order_qty)
|
||||
logger.info(f"[BAEKJE DEBUG] add_to_cart result: {cart_result}")
|
||||
else:
|
||||
# internal_code가 없으면 검색 후 장바구니 추가
|
||||
logger.info(f"[BAEKJE DEBUG] No internal_code, searching by kd_code={kd_code}")
|
||||
search_result = baekje_session.search_products(kd_code)
|
||||
|
||||
if search_result.get('success') and search_result.get('items'):
|
||||
# 규격 매칭 (재고 있는 것 우선)
|
||||
matched_item = None
|
||||
for baekje_item in search_result.get('items', []):
|
||||
item_spec = baekje_item.get('spec', '')
|
||||
# 규격이 지정되어 있으면 매칭, 없으면 첫번째 재고 있는 것
|
||||
if not spec or spec in item_spec or item_spec in spec:
|
||||
if matched_item is None or baekje_item.get('stock', 0) > matched_item.get('stock', 0):
|
||||
matched_item = baekje_item
|
||||
|
||||
if matched_item:
|
||||
found_internal_code = matched_item.get('internal_code')
|
||||
logger.info(f"[BAEKJE DEBUG] Found internal_code via search: {found_internal_code}")
|
||||
cart_result = baekje_session.add_to_cart(found_internal_code, order_qty)
|
||||
internal_code = found_internal_code # 컨텍스트 저장용
|
||||
else:
|
||||
cart_result = {'success': False, 'error': 'NO_MATCHING_SPEC', 'message': f'규격 {spec} 미발견'}
|
||||
else:
|
||||
cart_result = {'success': False, 'error': 'PRODUCT_NOT_FOUND', 'message': '제품 검색 결과 없음'}
|
||||
|
||||
if cart_result.get('success'):
|
||||
status = 'success'
|
||||
@@ -921,6 +954,7 @@ def submit_baekje_order(order: dict, dry_run: bool, cart_only: bool = True) -> d
|
||||
result_code = 'ERROR'
|
||||
result_message = str(e)
|
||||
failed_count += 1
|
||||
logger.error(f"[BAEKJE DEBUG] Exception: {e}")
|
||||
|
||||
update_item_result(item['id'], status, result_code, result_message)
|
||||
|
||||
@@ -932,7 +966,8 @@ def submit_baekje_order(order: dict, dry_run: bool, cart_only: bool = True) -> d
|
||||
'ordered_spec': spec,
|
||||
'ordered_qty': order_qty,
|
||||
'selection_reason': 'user_order',
|
||||
'wholesaler_id': 'baekje'
|
||||
'wholesaler_id': 'baekje',
|
||||
'internal_code': internal_code
|
||||
})
|
||||
|
||||
results.append({
|
||||
@@ -943,7 +978,8 @@ def submit_baekje_order(order: dict, dry_run: bool, cart_only: bool = True) -> d
|
||||
'order_qty': order_qty,
|
||||
'status': status,
|
||||
'result_code': result_code,
|
||||
'result_message': result_message
|
||||
'result_message': result_message,
|
||||
'internal_code': internal_code
|
||||
})
|
||||
|
||||
# cart_only=False면 주문 확정까지 진행
|
||||
|
||||
Reference in New Issue
Block a user