click
AddToCartButton이 bookId와 quantity를 서버 액션에 넘긴다.
버튼은 클라이언트 컴포넌트가 누르지만, 재고 확인, 수량 변경, 주문 확정, 캐시 재검증은 서버 액션에서 끝나야 한다.
AddToCartButton이 bookId와 quantity를 서버 액션에 넘긴다.
사용자 세션이 없으면 로그인으로 보낸다.
Book을 조회해 재고와 존재 여부를 검증한다.
CartItem을 만들거나 수량을 증가시킨다.
cart와 books 경로를 재검증해 화면을 최신화한다.
| 동작 | 서버에서 막아야 할 것 | 화면에서 보여줄 것 |
|---|---|---|
| 장바구니 추가 | 없는 책, 재고 초과, 미로그인 | 로딩 상태와 오류 메시지 |
| 수량 변경 | 0 이하 수량, 다른 사용자 항목 수정 | 낙관적 UI 또는 pending 상태 |
| 주문 생성 | 빈 장바구니, 가격/재고 불일치 | 성공 페이지와 장바구니 초기화 |