2026-08-12 22:46:55 +08:00
|
|
|
|
# 操作日志:合同启用失败原因明确化
|
|
|
|
|
|
|
|
|
|
|
|
操作时间:2026-08-12
|
|
|
|
|
|
操作类型:修改
|
|
|
|
|
|
影响模块:配送合同生命周期接口
|
|
|
|
|
|
|
|
|
|
|
|
## 操作前状态
|
|
|
|
|
|
|
|
|
|
|
|
合同启用的附件、有效期、气瓶绑定及状态校验失败后,接口统一返回“Invalid Argument”,前端只能提示“请求参数不正确,请检查填写内容”,业务人员无法定位处理方式。
|
|
|
|
|
|
|
|
|
|
|
|
## 具体操作
|
|
|
|
|
|
|
|
|
|
|
|
- 将合同状态不允许启用、附件无效、未到生效时间、合同已到期、未绑定有效气瓶拆分为明确中文原因。
|
|
|
|
|
|
- 终止非生效合同也返回明确状态原因。
|
|
|
|
|
|
- 仅透传预定义业务错误;数据库及其他内部异常继续使用通用参数错误,避免泄露内部信息。
|
|
|
|
|
|
- 增加业务错误白名单和中文消息回归测试。
|
2026-08-13 00:10:42 +08:00
|
|
|
|
- 明确区分绑定气瓶时的合同状态、气瓶停用、气瓶报废、用户归属不一致和重复绑定原因。
|
|
|
|
|
|
- 后端同步限制仅草稿合同允许绑定,与列表按钮可见规则保持一致。
|
|
|
|
|
|
- 合同气瓶表单按当前合同过滤候选项,仅展示合同用户所属、已启用、未报废且未在该合同重复绑定的气瓶。
|
|
|
|
|
|
- 切换合同时清空原气瓶并重新加载候选项;后端业务校验继续作为安全兜底。
|
2026-08-12 22:46:55 +08:00
|
|
|
|
|
|
|
|
|
|
## 行为变化
|
|
|
|
|
|
|
|
|
|
|
|
- 变更前:所有启用前置条件失败均提示“请求参数不正确,请检查填写内容”。
|
|
|
|
|
|
- 变更后:页面直接显示具体失败项及处理建议,例如“合同尚未绑定有效气瓶,请先绑定气瓶后再启用”。
|
2026-08-13 00:10:42 +08:00
|
|
|
|
- 绑定失败时会提示具体处理原因,例如“所选气瓶不属于该合同用户,请选择合同用户所属的气瓶”。
|
2026-08-12 22:46:55 +08:00
|
|
|
|
|
|
|
|
|
|
## 代码变更
|
|
|
|
|
|
|
|
|
|
|
|
- `backend/api/internal/logic/platform/gasorder/gasorder.go`:细分合同生命周期业务错误并安全透传。
|
|
|
|
|
|
- `backend/api/internal/logic/platform/gasorder/contract_change_error_test.go`:新增错误分类及提示文案测试。
|
|
|
|
|
|
|
|
|
|
|
|
## 验证结果
|
|
|
|
|
|
|
|
|
|
|
|
- `go test ./internal/logic/platform/gasorder/...`:通过。
|
|
|
|
|
|
- `go test ./...`:通过;首次受沙箱 Go 构建缓存权限影响失败,授权后重新执行全部通过。
|
|
|
|
|
|
|
|
|
|
|
|
## 风险评估
|
|
|
|
|
|
|
|
|
|
|
|
- 不修改接口路径、请求字段、成功响应和合同状态流转规则,保持向下兼容。
|
|
|
|
|
|
- 业务失败响应的 `message` 由通用英文变为具体中文,前端现有客户端会直接展示。
|
|
|
|
|
|
- 内部数据库错误不会透传,安全边界保持不变。
|