콘텐츠로 이동

[FAQ] 배송/주문

Slack QA 로그(원본 129건) 중 배송/주문 영역에서 반복 질문되거나 확정된 답변 13건을 정리했다. 배지가 붙은 항목은 과거 오답/정정 이력이 있거나 아직 결론이 나지 않은 주제이니 답변을 그대로 신뢰하지 말고 표시된 대로 재검증할 것.


Q23. 배송지가 없는 경우 배송정보 영역이 어떻게 보여 (JP)?

섹션 제목: “Q23. 배송지가 없는 경우 배송정보 영역이 어떻게 보여 (JP)?”

선택된 배송지가 없어 영역 자체가 빈 상태. 필드는 disabled, 상세주소 필드에만 placeholder(詳細住所を入力してください。)가 있고 나머지는 없음. 상단에 配送先情報を追加してください。 에러 문구 노출.

출처 [[26]][[27]]


Q24. 배송지 변경 시 주문상세에 표시되는 텍스트는?

섹션 제목: “Q24. 배송지 변경 시 주문상세에 표시되는 텍스트는?”

제목: お届け先の変更により送料が変更されました。 안내: 차액문의는 1:1문의로, 배송비 상세는 배송안내 확인. updatedDeliveryPrice 값이 있을 때만 조건부 노출되는 텍스트임.

출처 [[36]]


Q25. shippingTrackingNumber(송장번호)는 RETURNED 상태일 때 어디서 보여?

섹션 제목: “Q25. shippingTrackingNumber(송장번호)는 RETURNED 상태일 때 어디서 보여?”

일반 주문상세에서는 RETURNED 상품이 isHistoryProduct로 분류되어 송장번호 대신 “반품 상세” 버튼만 표시됨. 그 버튼을 눌러 들어간 반품/교환 내역 상세 화면에서만 반품 송장번호를 확인 가능.

⚠국가 주의: 국가별 UI문구가 다름(JP 최초답변 vs KR 재확인)

출처 [[104]]


Q26. worksout-kr 비회원 주문조회는 어떻게 동작해?

섹션 제목: “Q26. worksout-kr 비회원 주문조회는 어떻게 동작해?”

이름+휴대폰번호+주문번호 3개 조합으로 본인 주문만 조회(/non-member 페이지). 백엔드는 OrderProductRepositoryImpl+NonMemberOrderDetailQueryDto.

출처 [[98]]


Q27. 비회원/회원의 사이즈변경 가능조건 차이는?

섹션 제목: “Q27. 비회원/회원의 사이즈변경 가능조건 차이는?”

본인확인 방식만 다름(회원=userId, 비회원=이름+전화번호). 공통조건: 배송상태READY + OrderProduct.status=ORDERED + 라플제외 + 취소상품제외 + 동일사이즈 불가 + 구매전용(onlyPay)상품 불가. 공통 로직: OrderChangeService.changeSize()+checkPermission().

출처 [[98]]


Q28. order_product가 여러개인 주문에서 order.status는 언제 바뀌어?

섹션 제목: “Q28. order_product가 여러개인 주문에서 order.status는 언제 바뀌어?”

IN_DELIVERY: 1개라도 배송중이면 order 전체 전환. DELIVERED: 전부 DELIVERED/CANCELED여야 전환(하나라도 다른 상태면 미전환). 결제직후: shopBeginDate 있으면 READY_DELIVERY, 없으면 PENDING.

출처 [[99]][[103]][[111]]


Q29. order_product 하나가 READY_DELIVERY가 된 상태에서 다른 상품(PENDING)만 취소 가능해?

섹션 제목: “Q29. order_product 하나가 READY_DELIVERY가 된 상태에서 다른 상품(PENDING)만 취소 가능해?”

불가능. Order.status가 READY_DELIVERY가 되면(ERP에 SHOPBEGIN_DATE 설정됨) checkCanUpdateOrder가 Order 전체 단위로 취소가능여부를 판단해 개별상품만 골라 취소하는 것도 막힘.

⚠주의: 최초 확정 답변(“가능하다”)이 재반문 한번에 정반대로 뒤집힌 사례. READY_DELIVERY→PENDING 역행 가능여부(재고할당취소 시나리오)는 검증되지 않은 미해결 상태

출처 [[111]]


Q30. ORDER.STATUS의 AUTO_PAY, NONE 값은 뭐야?

섹션 제목: “Q30. ORDER.STATUS의 AUTO_PAY, NONE 값은 뭐야?”

AUTO_PAY=결제 전 자동결제 예약상태(라플은 READY 없이 여기로 바로 시작). NONE=enum에 정의만 있고 실제 코드에서 설정하는 로직이 없는 사실상 미사용 상태값.

출처 [[103]]


Q31. 주문취소가 orderProductId 기준이야, productId+sizeId 조합 기준이야?

섹션 제목: “Q31. 주문취소가 orderProductId 기준이야, productId+sizeId 조합 기준이야?”

orderProductId 기준. RequestCancelHandler.kt의 cancelOrderProductIds가 OrderRequestProduct.orderProductId로 필터링함.

출처 [[116]]


Q32. 처리 진행중인 주문건으로 취소불가(BAD_REQUEST_ALREADY_DELIVERY) 에러는 왜 어떤 주문은 뜨고 어떤건 안떠?

섹션 제목: “Q32. 처리 진행중인 주문건으로 취소불가(BAD_REQUEST_ALREADY_DELIVERY) 에러는 왜 어떤 주문은 뜨고 어떤건 안떠?”

ERP TEB_ORDERS.STATUS 값에 따라 갈림. N(신규접수)=취소가능, P(처리중)/C(완료)=취소불가. N→P는 WMS 출고지시(피킹시작) 시점, P→C는 실제출고완료(송장발행) 시점. 새벽/오전처럼 출고작업이 빠르게 진행되는 시간대는 취소불가 케이스가 많을 수 있음.

출처 [[116]]


Q33. 부분취소(반품/교환 요청 취소) 시 실제 버그가 있었다는데?

섹션 제목: “Q33. 부분취소(반품/교환 요청 취소) 시 실제 버그가 있었다는데?”

있었음(수정 필요했던 사례). RequestCancelHandler의 willAllCanceled 판단로직이 “이번 요청(OrderRequest)의 상품만” 보고 판단해, 첫 부분취소 시에도 true로 잘못 계산되어 카드결제(배송비 포함) 전액이 첫 취소에서 환불되고, 두번째 상품 취소 시 이미 취소된 결제라 PG사 에러가 발생하는 구조였음. RequestCancelHandler.kt 27~52줄.

출처 [[70]]


Q34. 하나의 Order에 OrderRequest(반품/교환)가 여러개 생길 수 있어?

섹션 제목: “Q34. 하나의 Order에 OrderRequest(반품/교환)가 여러개 생길 수 있어?”

네, 1:N 관계. RequestTransactionHandler.start()가 orderRequestRepository.countByOrderId로 기존건수를 조회한 후 OrderNumberUtils.createRequestOrderNumber로 R000123-1, -2 형태로 순번을 부여함. 부분취소/반품/교환 시마다 새 OrderRequest가 생성됨.

출처 [[72]]


Q35. RT(반품) 주문번호 생성 원리는? 상품 여러개를 한번에 체크해서 반품하면 RT가 1개야 여러개야?

섹션 제목: “Q35. RT(반품) 주문번호 생성 원리는? 상품 여러개를 한번에 체크해서 반품하면 RT가 1개야 여러개야?”

RT_{원본주문번호}_{일련번호} 형식. 반품 API 호출 횟수만큼 일련번호가 증가함(한번 호출에 상품 여러개 포함=RT 1개, 호출을 여러번=RT 여러개). 백엔드(store-api/backoffice-api)는 원래부터 리스트로 여러 상품을 한번에 받을 수 있게 설계돼 있음. 단, 어드민 프론트가 체크박스 단건선택만 되게 짜여있어 실제로는 상품 1개씩 개별 RT가 생성되는 중(프론트만 다중선택으로 고치면 백엔드 수정 없이 바로 다건 RT 가능).

출처 [[72]][[122]] · 확인 필요 시 담당자: 김규현