Files
vmall/openspec/changes/archive/2026-09-18-add-flash-sales/proposal.md
T
james c93bff28b0 chore(openspec): archive add-flash-sales
Sync the flash-sales capability plus the order, frontend-mall, and
frontend-shop-admin requirements into the main specs, and write the capability
Purpose the archive leaves as a placeholder.

Restate the flash-price and coupon-exclusion scenarios in the group-buying
order delta, since its MODIFIED checkout block must carry the scenarios the main
order spec now has.
2026-09-18 12:53:26 +00:00

1.9 KiB

Why

The mall's flash-sale page is display-only and prices are fixture-derived. A real event must allocate stock and resolve activity pricing inside checkout, not trust a price shown by the client.

What Changes

  • Add shop-managed flash-sale sessions and activity products with localized display data, fixed minor-unit activity price, window, per-customer limit, and isolated activity stock.
  • Add public session and product discovery APIs and replace the flash-sale page fixtures with live data.
  • Make checkout resolve an active eligible activity server-side, atomically decrement activity stock with SKU stock, and snapshot the applied activity price on the order item.
  • Compose exclusively with other promotions: a line MAY receive flash pricing or group-buy pricing, never both; a shop order that applied any flash price SHALL reject a coupon. Restate shop-coupon redemption and pending-payment coupon restore in this change's order spec so archival does not drop them.
  • Add shop-admin session and activity-product management scoped to the authenticated shop; mall payment and order-detail views show the snapshotted activity price.

Capabilities

New Capabilities

  • flash-sales: Timed shop flash-sale sessions, reserved activity inventory, eligibility, and public discovery.

Modified Capabilities

  • order: Checkout resolves and snapshots active flash-sale pricing.
  • frontend-mall: Flash-sale discovery and product purchase use live data.
  • frontend-shop-admin: Shops manage their own flash-sale configuration.

Non-goals

Queues, bot mitigation, platform-wide campaigns, waitlists, automatic retry after sell-out, and stacking coupons onto flash-priced shop orders are excluded. Overlapping group-buy on the same SKU is rejected rather than merged.

Impact

Adds a Rust marketing module and migrations, shared contract/locales, mall and shop-admin screens, and checkout concurrency coverage.