diff --git a/backend/order_api.py b/backend/order_api.py index 0f97f98..88ba9ad 100644 --- a/backend/order_api.py +++ b/backend/order_api.py @@ -281,25 +281,28 @@ def submit_geoyoung_order(order: dict, dry_run: bool, cart_only: bool = True) -> else: # ───────────────────────────────────────── - # 실제 주문 (빠른 API - ~1초/품목) + # 실제 주문 (선별 주문 - 기존 장바구니 보존) # ───────────────────────────────────────── from geoyoung_api import get_geo_session geo_session = get_geo_session() - # 1단계: 모든 품목을 장바구니에만 담기 (auto_confirm=False) + # 1단계: 모든 품목을 장바구니에 담기 (full_order, auto_confirm=False) for item in items: kd_code = item.get('kd_code') or item.get('drug_code') order_qty = item['order_qty'] spec = item.get('specification', '') + result = {} try: # 장바구니에만 담기 (주문 확정은 나중에 한번에) - result = geo_session.quick_order( + result = geo_session.full_order( kd_code=kd_code, quantity=order_qty, - spec=spec if spec else None, - check_stock=True + specification=spec if spec else None, + check_stock=True, + auto_confirm=False, # 장바구니만! + memo=f"자동주문 - {item.get('product_name', '')}" ) if result.get('success'): @@ -318,12 +321,11 @@ def submit_geoyoung_order(order: dict, dry_run: bool, cart_only: bool = True) -> result_code = 'ERROR' result_message = str(e) failed_count += 1 - result = {} update_item_result(item['id'], status, result_code, result_message) - # quick_order 결과에서 product_code 가져오기 - product_code = result.get('product', {}).get('product_code') if result.get('success') else None + # full_order 결과에서 internal_code 가져오기 (지오영은 internal_code 사용!) + internal_code = result.get('product', {}).get('internal_code') if result.get('success') else None # AI 학습용 컨텍스트 저장 save_order_context(item['id'], { @@ -335,7 +337,7 @@ def submit_geoyoung_order(order: dict, dry_run: bool, cart_only: bool = True) -> 'ordered_qty': order_qty, 'selection_reason': 'user_order', 'wholesaler_id': 'geoyoung', - 'product_code': product_code + 'internal_code': internal_code }) results.append({ @@ -347,15 +349,15 @@ def submit_geoyoung_order(order: dict, dry_run: bool, cart_only: bool = True) -> 'status': status, 'result_code': result_code, 'result_message': result_message, - 'product_code': product_code # 선별 주문용 + 'internal_code': internal_code # 선별 주문용 }) # 2단계: cart_only=False면 선별 주문 (기존 품목 보존) if not cart_only and success_count > 0: try: - # 이번에 담은 품목의 product_code만 수집 - ordered_codes = [r['product_code'] for r in results - if r['status'] == 'success' and r.get('product_code')] + # 이번에 담은 품목의 internal_code만 수집 + ordered_codes = [r['internal_code'] for r in results + if r['status'] == 'success' and r.get('internal_code')] if ordered_codes: # 선별 주문: 기존 품목은 건드리지 않고, 이번에 담은 것만 주문 @@ -375,7 +377,7 @@ def submit_geoyoung_order(order: dict, dry_run: bool, cart_only: bool = True) -> f'지오영 장바구니 담김, 확정 실패: {confirm_result.get("error", "알 수 없는 오류")}') else: update_order_status(order_id, 'partial', - f'지오영 장바구니 담김, product_code 없음') + f'지오영 장바구니 담김, internal_code 없음') except Exception as e: logger.error(f"지오영 주문 확정 오류: {e}") update_order_status(order_id, 'partial',