diff --git a/backend/order_api.py b/backend/order_api.py index 6336305..7bbbc61 100644 --- a/backend/order_api.py +++ b/backend/order_api.py @@ -982,21 +982,34 @@ def submit_baekje_order(order: dict, dry_run: bool, cart_only: bool = True) -> d 'internal_code': internal_code }) - # cart_only=False면 주문 확정까지 진행 + # cart_only=False면 주문 확정까지 진행 (선별 주문!) if not cart_only and success_count > 0: try: - confirm_result = baekje_session.submit_order() - if confirm_result.get('success'): - update_order_status(order_id, 'submitted', - f'백제 주문 확정 완료: {success_count}개') - # 결과 메시지 업데이트 - for r in results: - if r['status'] == 'success': - r['result_code'] = 'OK' - r['result_message'] = '주문 확정 완료' + # 이번에 담은 품목의 internal_code만 수집 + ordered_codes = [r['internal_code'] for r in results + if r['status'] == 'success' and r.get('internal_code')] + + logger.info(f"[BAEKJE DEBUG] 선별 주문 시작, ordered_codes: {ordered_codes}") + + if ordered_codes: + # 선별 주문: 기존 품목은 건드리지 않고, 이번에 담은 것만 주문 + confirm_result = baekje_session.submit_order_selective(ordered_codes) + + if confirm_result.get('success'): + restored_info = f", 기존 {confirm_result.get('restored_count', 0)}개 복원" if confirm_result.get('restored_count', 0) > 0 else "" + update_order_status(order_id, 'submitted', + f'백제 주문 확정 완료: {success_count}개{restored_info}') + # 결과 메시지 업데이트 + for r in results: + if r['status'] == 'success': + r['result_code'] = 'OK' + r['result_message'] = '주문 확정 완료' + else: + update_order_status(order_id, 'partial', + f'백제 장바구니 담김, 확정 실패: {confirm_result.get("error", "알 수 없는 오류")}') else: update_order_status(order_id, 'partial', - f'백제 장바구니 담김, 확정 실패: {confirm_result.get("error", "알 수 없는 오류")}') + f'백제 장바구니 담김, internal_code 없음') except Exception as e: logger.error(f"백제 주문 확정 오류: {e}") update_order_status(order_id, 'partial',