熟食消费模式开发设计冻结

1. 冻结的含义

这里的“冻结”不是冻结代码,也不是要求马上提交 Git,而是在开发前把数据字段、上传格式、页面边界和计算规则定成唯一口径。开发人员按此实现,不再在不同类中各自发明字段名或金额算法;如果后续要改,先更新本文件和验收标准。

2. 已冻结决策

2.1 页面与消费模式

2.2 本地商品数据

2.3 本地订单明细

第一期采用订单表独立 JSON 字段,而不是新增明细表。

选择原因:当前应用使用 SQLite 直接保存订单,第一期只要求订单恢复和展示熟食明细,不要求按熟食商品统计;订单 JSON 可以与订单摘要一次写入,改动面和离线风险更小。未来出现商品统计、报表或按行查询需求时,再迁移独立明细表。

2.4 明细 JSON

{
  "version": 1,
  "lines": [
    {
      "productId": "product_cooked_food_1",
      "name": "卤鸡腿",
      "unitPrice": "18.00",
      "basisGrams": 500,
      "weightGrams": 250,
      "amount": "9.00"
    }
  ],
  "customAmount": "5.00",
  "cookedFoodAmount": "9.00",
  "totalAmount": "14.00"
}

2.5 上传摘要

在线支付请求和离线补传请求统一使用一条 DishItem

{
  "uuid": "custom_dish",
  "number": "1",
  "money": "14.00"
}

熟食明细不进入 categories,离线补传不读取 cooked_food_details 构造 dishes

2.6 金额和重量

3. 开发边界

必须改动

不改动

4. 进入编码前的唯一检查