Files
DishMatch/配比秤烹饪时长-设备端对接文档.md
T
mazengfei 94bcdb3d9b feat(ratio-scale): 新增烹饪时长采集及调料放置时间支持
- 配比秤采样提交接口新增字段 cookStart,传递烹饪开始时间
- 食材构成中调料项新增 putTime 字段,记录调料首次使用时间
- 设备端提交采样时食材构造调整,调料按名称匹配 putTime 填充
- 新增对烹饪时长的后端计算功能,时长单位为分钟自动向上取整
- 采样列表接口响应新增 cookStart 与 cookDuration 字段,用于显示烹饪时长
- 配比秤采样模式相关API文档同步更新,废弃制作模式接口及字段
- 烹饪完成接口要求强化传递 cookStart,后端基于此计算并更新烹饪时长
- 关联数据库迁移支持烹饪时长字段持久化及历史记录完善
2026-09-21 14:21:17 +08:00

117 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 配比秤烹饪时长 - 设备端对接文档
> 本次变更:配比秤新增「烹饪时长」采集与计算能力。设备端只需**传烹饪开始时间**和**调料放置时间**,时长由后端自动计算落库,设备端不需要自己算。
>
> 部署依赖:数据库迁移 `V21__nut_innovation_cook_duration.sql` 需先于服务发布执行。
---
## 通用说明
- 时间格式统一为 `yyyy-MM-dd HH:mm:ss`
- 时长单位:**分钟**,由后端计算,规则:`时长 = 接口调用时间 - 烹饪开始时间`,**向上取整,正数至少 1 分钟**(如 90 秒 → 2 分钟,30 秒 → 1 分钟)
- 烹饪开始时间为空、或晚于当前时间(无效)时,后端**跳过时长计算**,接口正常成功
---
## 1. 提交采样(新增入参字段)
**POST** `/nutrition/neglect/ratio-scale/constitute/save`
### 请求参数(仅列出新增字段,其余字段不变)
| 字段 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| cookStart | string | 建议 | **新增**。烹饪开始时间,用于与提交时间计算烹饪时长(分钟) |
| items[].putTime | string | - | **新增**。调料放置时间,仅调料项(`isMain=3`)传,主材/辅材不传 |
### 完整请求示例
```json
{
"foodName": "低钠宫保鸡丁",
"foodWeight": 1250.5,
"cookStart": "2026-09-21 10:30:00",
"items": [
{ "materId": 1001, "useWeight": 500, "isMain": 1 },
{ "materId": 1002, "useWeight": 200, "isMain": 2 },
{ "materId": 1003, "useWeight": 15, "isMain": 3, "putTime": "2026-09-21 10:32:10" },
{ "materId": 1004, "useWeight": 8, "isMain": 3, "putTime": "2026-09-21 10:35:40" }
]
}
```
### 后端行为
- 烹饪开始时间落库 `nut_innovation.cook_start`,时长落库 `nut_innovation.cook_duration`,调料放置时间落库 `nut_innovation_ing.put_time`
- 响应结构不变(`Result<Void>`
---
## 2. 烹饪完成(入参字段无变化,传值要求强化)
**POST** `/nutrition/neglect/ratio-scale/cook-orders/complete`
### 相关字段
| 字段 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| cookOrderId | long | ✓ | 烹制单 id(原有) |
| cookStart | string | **强烈建议** | 烹饪开始时间(字段原有)。**本次开始烹饪时务必回传**,否则不计算时长 |
| seasonings[].putTime | string | - | 调料放置时间(字段原有),继续按原逻辑传 |
### 后端行为(新增)
- 每次完成按 `本次 cookStart → 接口调用时间` 计算时长,**更新菜品烹饪工艺表 `nut_food_cook.cook_duration`**
- **多次烹饪时长不累计、各算各的**:同一烹制单多次提交时,每次都用本次的时长**覆盖**菜品烹饪时长
- 同时写一条餐品操作记录(后台可见):操作标题「配比秤烹饪餐品计算」,记录时长从 X 分钟更新为 Y 分钟
- `cookStart` 为空时跳过以上更新,其余原有逻辑(流水、生熟比、累加)不受影响
---
## 3. 已提交采样列表(响应新增字段)
**POST** `/nutrition/neglect/ratio-scale/sample-list`
### 响应 `data.list[]` 新增字段
| 字段 | 类型 | 说明 |
|------|------|------|
| cookStart | string | **新增**。烹饪开始时间;提交时未传则为 null |
| cookDuration | int | **新增**。烹饪时长(分钟);提交时未传 cookStart 则为 null |
### 响应示例
```json
{
"code": "00000",
"msg": "操作成功",
"data": {
"list": [
{
"innovId": 1930123456789,
"innovNo": "INN-H-2026-041",
"foodName": "低钠宫保鸡丁",
"foodWeight": 1250.5,
"cookStart": "2026-09-21 10:30:00",
"cookDuration": 12,
"status": 1,
"statusName": "实验中",
"createTime": "2026-09-21 10:42:03"
}
],
"total": 1
}
}
```
---
## 设备端改动清单
| 接口 | 改动 |
|------|------|
| constitute/save | 请求新增 `cookStart` + 调料项 `putTime`(开始烹饪时记录时间,放调料时记录时间) |
| cook-orders/complete | 字段无变化,确保每次提交回传 `cookStart``seasonings[].putTime` 继续传 |
| sample-list | 响应新增 `cookDuration`,列表可展示「烹饪时长(分钟)」 |