# Proposal: cart-checkout-orders ## Why Shoppers must be able to collect items and place orders. Checkout splits the cart into one order per shop (B2B2C requirement), snapshots prices, and decrements stock atomically. ## What changes - Redis-backed cart per authenticated user (add/update/remove/list), merged SKU + product snapshot at read time. - Checkout: validate stock + published status, create orders (one per shop) with items, decrement stock in a transaction, clear cart. - Order lifecycle: pending_payment → paid (mock pay endpoint) → fulfilling → shipped → completed; customer cancel while pending_payment. - Customer APIs: my orders list/detail, cancel, mock-pay. ## Non-goals - Real payment gateways, partial refunds, guest checkout. ## Capabilities - `cart`: server-side cart. - `order`: checkout, order lifecycle, customer order APIs.