## ADDED Requirements ### Requirement: Live group-buying page The mall SHALL render active group-buying activities and open groups from the shared API client, including group price, required member count, current paid-member count, and expiry. It SHALL let an authenticated shopper choose to open or join a group and replace derived fixture counts. Checkout SHALL submit the open-or-join intent for a single activity SKU at quantity 1. Payment and order-detail views SHALL show the snapshotted group price. This change SHALL NOT add group price or join CTAs to the catalog product-detail page (`/goods/[id]`); opening and joining happen from the group-buying page and checkout intent. #### Scenario: open a group - **WHEN** a shopper selects an active group-buying product and chooses to open a group - **THEN** the checkout intent identifies the activity and requests a new group #### Scenario: order shows group snapshot - **WHEN** checkout succeeds with group-buy intent - **THEN** payment and order-detail views show the server group unit price from the order payload #### Scenario: product detail stays on catalog price - **WHEN** a shopper opens a catalog product that also has an active group-buying activity - **THEN** the product-detail page still shows catalog SKU prices and does not require a group-buy overlay in this change