| Screen ID |
Screen Title |
Screen Path |
| CART-ADD-01 |
장바구니 담기 바텀시트 (SH_112_Product_Cart) |
PDP “장바구니 담기” 클릭 시 진입 |
PDP(pdp-detail.md)에서 “장바구니 담기” 버튼 클릭 시 열리는 바텀시트다. 사이즈/수량 선택, 수량 검증, 저장 후 토스트/팝업 피드백을 정의한다.
원본: 쇼핑 · 상품상세 마스터.md(SH_112_Product_Cart) + 장바구니 담기 정책.md 병합.
- 상품 상세페이지 하단 고정 영역에 장바구니 담기 버튼이 위치한다.
- 상품이 품절 상태인 경우 버튼 영역은 “품절”로 표시되며 클릭 불가능하다.
- 장바구니 버튼 클릭 시 하단 바텀시트 형태로 사이즈와 수량 선택 영역이 노출된다.
| 항목 |
KR / 공통 기준 |
JP |
| 사이즈 선택 방식 |
단일 선택, 동일 사이즈 재선택으로 해제 불가 |
동일 |
| 품절 사이즈 |
current_stock = 0 → 회색, 클릭 불가 |
동일 |
| 수량 기본값 |
1개 (1개 미만 선택 불가) |
동일 |
| 마지막 재고 |
재고 1개 → 수량 1 고정, 증감 버튼 비활성. “마지막 재고입니다” 메시지 표시 |
동일 |
| 버튼 활성 조건 |
사이즈 선택 완료 시 |
동일 |
재고값(current_stock) 계산 규칙은 공통 ERP 재고 매핑 참고. 이 문서에서 재정의하지 않는다.
장바구니 수량 제한 조건: 아래 두 제약으로 제한된다.
- 사용자별 구매 가능 수량(
available_stock_user)
- 상품 사이즈별 재고(
product_size.current_stock)
제한 메시지 (마스터 문구 채택)
| 조건 |
메시지 |
기존 장바구니 + 추가 > current_stock (재고초과) |
장바구니에 담을 수 있는 수량을 초과했습니다 |
기존 장바구니 + 추가 > available_stock_user (사용자한도초과) |
구매 가능한 수량을 초과했습니다. |
토스트 문구 차이는 미결 사항 참고.
| 사용자 |
처리 |
| 회원 |
토스트: {사이즈}사이즈를 장바구니에 담았습니다. + 보러가기 |
| 비회원 |
팝업: 상품이 장바구니에 담겼습니다 + 로그인 버튼 |
로그인하지 않은 상태에서 장바구니 담기 버튼을 클릭했을 때, 상품이 회원전용인지 일반 상품인지에 따라 동작이 분기된다.
| 상품 유형 |
비로그인 사용자 클릭 시 동작 |
| 회원 전용 상품 |
로그인 안내 팝업 노출. 팝업에는 “로그인” 버튼과 “X” 버튼이 포함됨. “로그인” 클릭 시 로그인 화면으로 이동, 로그인 완료 후 메인 화면으로 이동 |
| 일반 상품 |
장바구니에 해당 상품이 담기고, “계속 쇼핑하기”와 “장바구니 이동” 버튼이 포함된 팝업이 노출됨 |
- 동일한 상품을 다시 장바구니에 담을 경우 장바구니 내 해당 상품의 수량이 추가된다 (구매 가능 수량 제한 초과 불가).
- 장바구니에 담긴 상품의 사이즈·수량 변경은 장바구니 화면에서 가능하다.
- 사이즈 변경 시 해당 사이즈의 재고 상태를 실시간으로 확인하여 변경 가능 여부를 판단한다.
- 품절된 사이즈로는 변경할 수 없다.
- 장바구니에 담긴 상품은 기본적으로 영구적으로 유지된다.
- 상품 노출이 끝났더라도 삭제하지 않는 이상 장바구니에서 보관된다.
- 장바구니에 담긴 상품이 품절됐다면 “이 사이즈는 품절되었습니다.” 표시와 함께 체크박스가 선택 불가 상태로 장바구니에 유지된다.
| 케이스 |
동작 |
| 사이즈 미선택 상태 |
장바구니 담기 버튼 비활성 |
| 사이즈 선택 + 재고 1개 |
수량 1 고정, “마지막 재고입니다.” 표시 |
| 기존 수량 + 추가 수량이 재고 초과 |
장바구니에 담을 수 있는 수량을 초과했습니다 토스트, 저장 차단 |
| 기존 수량 + 추가 수량이 사용자 한도 초과 |
구매 가능한 수량을 초과했습니다. 토스트, 저장 차단 |
| 회원 저장 성공 |
토스트 + “보러가기” 액션 |
| 비회원 저장 성공(일반 상품) |
팝업 + “계속 쇼핑하기”/“장바구니 이동” |
| 비회원 클릭(회원전용 상품) |
로그인 안내 팝업 (저장 자체가 진행되지 않음) |
| 기능 |
API |
요청 필드 |
| 장바구니 추가 |
POST /v1/carts/{productId} |
sizeId, count, answer |
| 장바구니 수량 조회 (성공 후 이동 시) |
GET /v1/carts |
— |
| 확인 항목 |
정상 기준 |
| 사이즈 목록 |
1개 이상 |
| 품절 여부 |
current_stock = 0 이면 비활성 |
| 퀴즈 여부 |
question 있으면 퀴즈 영역 노출 |
| 수량 제한 |
available_stock_user / current_stock 합산 초과 여부 |
| 저장 API |
POST /v1/carts/{productId} 정상 응답 여부 |
| 증상 |
예상 원인 |
1차 조치 |
| 장바구니 담기 BS — 수량 증가 불가 |
마지막 재고 또는 제한 초과 |
재고/구매 제한 확인 |
| 항목 |
내용 |
| 재고초과/사용자한도초과 토스트 문구 차이 |
마스터: 재고초과 = 장바구니에 담을 수 있는 수량을 초과했습니다(마침표 없음), 사용자한도초과 = 구매 가능한 수량을 초과했습니다.(마침표 있음, “한”이 포함됨). 정책(장바구니 담기 정책.md): 사용자한도초과 = 구매 가능 수량을 초과했습니다.(“한” 없음), 재고초과 = 장바구니에 담을 수 있는 수량을 초과했습니다.(마침표 있음). 의미상 동일 조건이나 문구가 미묘하게 다름(조사·마침표 차이). 본 문서는 마스터 문구를 채택했으며, 최종 문구는 운영팀 확정 필요 |
| 재고 관련 표시값 |
current_stock 계산 규칙은 공통 ERP 재고 매핑 참고 |
| 버전 |
날짜 |
변경 내용 |
| v1.0 |
2026-07-30 |
최초 작성 — 쇼핑 · 상품상세 마스터.md(SH_112_Product_Cart) + 장바구니 담기 정책.md 병합. 로그인 상태 처리(회원전용/일반상품 분기) 흡수, 토스트 문구는 마스터 채택 |