Files
platforms/docs/项目文档_配送合同候选范围修复_v1.0.md
2026-08-13 23:38:29 +08:00

2.6 KiB
Raw Blame History

项目文档_配送合同候选范围修复_v1.0

1. 项目概述

本次修复平台总后台业务表单直接加载全部配送合同的问题。合同管理列表需要展示完整生命周期,但创建订单和绑定合同气瓶属于受状态约束的业务操作,候选范围必须与服务端最终校验一致。

2. 业务规则

  • 创建配送订单只显示当前可履约合同:状态为“生效中”、当前时间不早于生效时间、到期时间存在且当前时间早于到期时间。
  • 草稿、未到生效时间、已过期、已终止和缺少到期时间的合同不进入订单候选。
  • 绑定合同气瓶只显示草稿合同。
  • 合同管理列表不携带候选用途参数,继续展示全部合同。
  • 没有可用候选时,页面显示对应业务引导并禁止保存。
  • 页面重新加载后,严格筛选结果中不存在的旧合同选择会被清空。
  • 服务端创建订单和绑定气瓶时继续执行最终校验,前端筛选不构成安全控制。

3. 接口兼容

GET /gasorder_contract 新增可选查询参数 candidate

  • 不传:合同管理全量列表,保持原行为。
  • candidate=order:仅返回当前可履约合同。
  • candidate=binding:仅返回草稿合同。

未新增数据库字段、表或迁移,也未修改合同数据。

4. 关键文件

backend/api/internal/logic/platform/gasorder/gasorder.go       # 合同候选过滤与订单最终校验
backend/api/internal/logic/platform/gasorder/gasorder_test.go  # 五类合同状态与查询条件测试
frontend/platform_admin/src/api/resources.ts                   # 两类合同候选配置与中文提示
frontend/platform_admin/src/views/resource/use-resource-relations.ts # 字段级筛选参数
frontend/platform_admin/src/views/resource/use-resource-relation-linkage.ts # 失效选择清理和空候选阻断

5. 变更记录

操作时间2026-08-13

操作类型:修复

影响模块:配送合同、配送订单、合同气瓶

操作前状态:订单和合同气瓶表单均展示全部合同,用户选中后才由服务端拒绝。

操作后状态:不同业务表单只展示当前允许操作的合同,并继续保留服务端最终校验。

风险评估:管理列表和既有无参数调用保持兼容;候选接口只收窄可选数据,不修改数据事实。

6. 验证方式

cd backend/api
go test ./internal/logic/platform/gasorder
go test ./...
go vet ./...

cd frontend/platform_admin
npm run gasorder-contract-candidates:check
npm run type:check
npm run contract:check
npm run build