Files
vmall/openspec/changes/replace-mock-api-wave-5/specs/frontend-mall/spec.md
T
james 51f8bb7c1d docs(openspec): plan wave 5, the store directory
Planning only: proposal, delta specs, design and tasks for replacing the
store surfaces. No code yet.

The batch adds a public shop read (profile + products) so the store directory,
store home and product-page store card stop reading MOCK_STORES, and so the
cart, payment and order surfaces can name a shop instead of printing "Shop".

Decisions recorded in the design:

- a `shop_profiles` table beside `shops`, so the existing admin and
  shop-admin contracts are untouched
- the four store scores stay stored profile values, because there is no review
  model and deriving them would dress fabricated numbers as computed ones
- `distanceKm` is dropped rather than faked: there is no geo model behind it
- profiles are filled by seed-demo.mjs, since they hang off shops that script
  creates
- order surfaces resolve names from one cached shop read rather than growing a
  denormalised shop name on every order payload

openspec validate --strict passes and the change is ready to apply.
2026-09-17 16:54:22 +00:00

19 lines
1.2 KiB
Markdown

# Spec Delta
## MODIFIED Requirements
### Requirement: Store and marketing pages
The mall SHALL provide a store directory and store home reading live shops from the shop API, with each store's products coming from the catalog API, and SHALL keep the timed seckill page, collective-buy list and points-mall home on fixed bilingual content for now. The cart, payment and order surfaces SHALL show each order's shop by name from the shop API rather than a generic label. Marketing pages MAY be display-only except navigation to product detail.
#### Scenario: navigate storefront discovery channels
- **WHEN** a shopper opens stores, seckill, collective or integral routes
- **THEN** each page renders the appropriate B2B2C mall-style banner/filter/session/card layout, the store directory and store home list real shops, and product links resolve to product detail
#### Scenario: order surfaces name the shop
- **WHEN** a shopper views a cart line, a payment group or an order card
- **THEN** the shop is shown by its name, not a placeholder
#### Scenario: a shop without a profile still renders
- **WHEN** a shop has no profile row
- **THEN** the directory and store home render it without inventing logo, scores or copy