fix(baekje): 장바구니 담기 시 internal_code 사용하도록 수정

- kd_code 대신 internal_code로 장바구니 추가
- internal_code 없으면 검색 후 규격 매칭으로 찾기
- 백제 장바구니 담기 정상 작동 확인
This commit is contained in:
thug0bin
2026-03-07 21:29:00 +09:00
parent 232a77006a
commit 0ae4ae66f0
9 changed files with 402 additions and 53 deletions

View File

@@ -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면 주문 확정까지 진행