Files

1.5 KiB

Spec delta: catalog

ADDED Requirements

Requirement: Localized product content

Product and category names/descriptions SHALL be stored as JSONB maps keyed by locale (en, zh). The API MUST return the full map; clients pick the display locale.

Scenario: bilingual round-trip

  • WHEN a shop owner creates a product with name {"en": "Mug", "zh": "马克杯"}
  • THEN both public detail and shop-admin GET return the identical map

Requirement: Publish lifecycle

Products SHALL have status draft | published | unpublished. Only published products appear in public list/detail.

Scenario: publish then unpublish

  • WHEN a product is published
  • THEN it appears in GET /api/products
  • WHEN it is unpublished
  • THEN public detail returns 404 and it disappears from listings

Scenario: publish requires sellable SKU

  • WHEN publishing a product with no active SKU having price > 0
  • THEN the API returns 400

Requirement: Shop isolation

Shop-role users SHALL only see and mutate their own shop's products under /api/shop/products.

Scenario: cross-shop access denied

  • WHEN shop owner A requests /api/shop/products/{id} of shop B
  • THEN the API returns 404

Requirement: SKU pricing

Each SKU SHALL carry price_minor (integer minor units) and an ISO currency code; stock is a non-negative integer.

Scenario: negative stock rejected

  • WHEN upserting a SKU with stock < 0
  • THEN the API returns 400