## ADDED Requirements ### Requirement: Mall aftersale customer flow The Mall SHALL use the shared selected API adapter to expose an after-sale action for eligible order items, an aftersale list and detail view, chronological buyer/merchant messages, cancellation and one-time rejected appeal, and return-refund shipping tracking. The form SHALL show the localized reason/type, integer minor-unit amount and remaining limit, evidence URL inputs, current status, and authoritative refund result. Anonymous actions SHALL redirect to sign-in with the current route as return destination. #### Scenario: apply from an eligible order line - **WHEN** a signed-in shopper opens a paid or shipped order inside its after-sale window and submits a valid item application - **THEN** the Mall creates the aftersale through the shared client and shows its pending status without fixture-only state #### Scenario: return shipping is recorded - **WHEN** an approved return-refund shopper submits carrier and tracking data - **THEN** the detail view shows the buyer-shipping status and the persisted tracking information after reload #### Scenario: shopper cancels an application - **WHEN** a shopper cancels a non-terminal pending aftersale - **THEN** the API state and list/detail views show cancelled and merchant actions are no longer offered #### Scenario: shopper messages the merchant - **WHEN** a shopper sends a localized message with optional evidence URLs - **THEN** it appears in chronological detail history and remains after a reload #### Scenario: fixed adapter remains usable - **WHEN** the aftersale domain is configured for fixed data - **THEN** Mall list, detail, messages, cancellation, tracking, and refund-history flows behave deterministically through the same shared methods