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

65 lines
2.6 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.
# 项目文档_配送合同候选范围修复_v1.0
## 1. 项目概述
本次修复平台总后台业务表单直接加载全部配送合同的问题。合同管理列表需要展示完整生命周期,但创建订单和绑定合同气瓶属于受状态约束的业务操作,候选范围必须与服务端最终校验一致。
## 2. 业务规则
- 创建配送订单只显示当前可履约合同:状态为“生效中”、当前时间不早于生效时间、到期时间存在且当前时间早于到期时间。
- 草稿、未到生效时间、已过期、已终止和缺少到期时间的合同不进入订单候选。
- 绑定合同气瓶只显示草稿合同。
- 合同管理列表不携带候选用途参数,继续展示全部合同。
- 没有可用候选时,页面显示对应业务引导并禁止保存。
- 页面重新加载后,严格筛选结果中不存在的旧合同选择会被清空。
- 服务端创建订单和绑定气瓶时继续执行最终校验,前端筛选不构成安全控制。
## 3. 接口兼容
`GET /gasorder_contract` 新增可选查询参数 `candidate`
- 不传:合同管理全量列表,保持原行为。
- `candidate=order`:仅返回当前可履约合同。
- `candidate=binding`:仅返回草稿合同。
未新增数据库字段、表或迁移,也未修改合同数据。
## 4. 关键文件
```text
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. 验证方式
```bash
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
```