quickstart.md 2.1 KB

Quickstart 验证: 商品规格

Feature: 013-food-spec | Date: 2026-07-15

手动端到端验证(项目无自动化测试)。接口契约见 contracts/api.md,数据模型见 data-model.md

前置

  1. 数据库已执行 updatesql/sql.md 中三张规格表的 DDL。
  2. 存在一个门店(mdId=3)与至少一个商品(pos_food 记录)。
  3. 商家账号 token 可用。

场景 1:规格模板管理

  1. POST /chanting/foodSpec/saveFoodSpec,建"甜度"(单选/必选) + 规格值 无糖(0)/半糖(0)/全糖(0)。
  2. GET /chanting/foodSpec/foodSpecPageList?mdId=3 → 列表含该规格及 3 个值。
  3. GET /chanting/foodSpec/getSpecs?id={id} → 详情正确。
  4. GET /chanting/foodSpec/changeOpen?id={id}&isOpen=false → 再查 getAvailableSpecsList 不含该规格。

预期:增删改查、启停、软删均生效;跨门店(mdId=4)查询不可见。

场景 2:商品挂规格

  1. GET /chanting/foodSpec/getAvailableSpecsList?mdId=3 → 拿到可用规格。
  2. POST /chanting/food/setposfood,商品带 foodSpecs=[甜度, 加料]。
  3. GET /chanting/food/getfood?id={foodId} → 返回 foodSpecs 含甜度 + 加料。

预期food_spec_relation 写入 2 条;food_sku JSON 同步更新;重新勾选(减为仅甜度)后关联更新为 1 条。

场景 3:列表返回规格

  1. GET /chanting/food/getidlist(含该商品)→ 每条商品带 foodSpecs。
  2. GET /chanting/food/stallFoodList、/foodSearch 同样带规格。

预期:列表注入规格结构完整、仅含启用项;无规格商品返回空规格。

场景 4:计价一致性

  1. 顾客选 全糖(加价 0) + 珍珠(加价 5) 下单。
  2. 检查订单快照 otherPrice = 5;订单单价 = 商品价 + 5。
  3. 若参与促销,specPrice = 5 正确叠加。

预期:otherPrice / specPrice / 规格加价三者一致,金额 0 误差。

场景 5:兼容性

  • 仅用旧 food_sku JSON(不经关联表)的历史商品:列表/详情仍能返回规格 JSON,不报错。
  • 后台 add/edit 编辑商品:规格能正确持久化(FR-011)。