1.7 KiB
1.7 KiB
Why
The order lifecycle currently stops after confirmation of delivery. Without a per-line after-sale and refund path, a paid order has no marketplace-safe recovery when goods or fulfillment fail. This is a baseline commerce gap, not an optional enhancement.
What Changes
- Add customer-owned refund-only and return-refund applications for paid or shipped order items, with localized reasons, integer minor-unit amounts, and evidence URLs.
- Add guarded merchant decisions, buyer return tracking, bilateral messages, one-time rejected appeals, and optional platform arbitration.
- Credit completed refunds to
customer_accountsthrough the existing append-only ledger and aggregate refunded order totals without a real payment gateway. - Expose the flow in Mall, shop-admin, and platform-admin while preserving a deterministic Mall mock adapter and
LIVE_PICKSwiring.
Capabilities
New Capabilities
aftersale: Per-order-item applications, state transitions, messages, arbitration, and ledger-backed refund completion.
Modified Capabilities
order: After-sale eligibility windows, per-line refundable amounts, and authoritative refund totals.frontend-mall: Customer after-sale application, tracking, messages, and history surfaces.frontend-shop-admin: Shop-scoped after-sale processing workspace.frontend-admin: Platform read-only monitoring and dispute arbitration.
Non-goals
Real payment-channel refunds, exchanges, reshipments, shipping insurance, and IM negotiation are excluded; messages replace live negotiation.
Impact
Adds one after-sale migration, shared API contracts, Rust module and integration coverage, customer and console pages, fixed-adapter parity, and account-ledger/order-total integration.