ADR-001:订单明细与 custom_dish 上传分离

状态

已接受(2026-08-02)。

背景

熟食订单需要在本地保留多种商品的名称、单价、重量和金额,但现有订单的 categories 字段被离线补传逻辑直接解析为服务端 dishes 数组。熟食商品没有对应的服务端商品 UUID,现有服务端策略要求整单只上传一个 custom_dish

如果将熟食明细直接写入 categories,离线补传会把多条本地明细当成多个服务端菜品,造成上传语义错误;如果只保存 custom_dish,又无法恢复本地熟食消费明细。

决策

订单同时保存两类数据:

  1. categories:只保存一条与现有上传代码兼容的 custom_dish 摘要。
  2. cooked_food_details:在订单表中独立保存熟食明细和金额汇总,第一期采用版本化 JSON。
  3. 在线支付和离线补传均以 categories 作为服务端上传输入;本地订单详情、打印和查询以 cooked_food_details 作为熟食展示输入。

选项对比

方案结论原因
明细全部写入 categories离线补传会拆成多个服务端菜品
只保存一个 custom_dish本地丢失熟食明细,无法满足查询和审计
新增服务端熟食商品协议本期不采用超出本期范围,涉及后端商品模型和接口协同
独立保存本地明细并保留单 custom_dish采用满足本地可追溯与现有上传兼容性

影响

正面影响

代价

验证要求