Files
platforms/docs/项目文档_配送订单合同调度约束_v1.0.md
2026-08-15 19:19:15 +08:00

83 lines
4.0 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. 目录结构与核心文件
```text
platforms/
├── backend/api/internal/logic/platform/
│ ├── gasorder/gasorder.go # 分配事务、合同范围和人员准入校验
│ ├── gasorder/gasorder_test.go # 合同固定点、同点改派及资质回归测试
│ ├── delivery/delivery.go # 启用配送点候选筛选
│ └── staff/staff.go # 有效资质人员候选筛选
├── frontend/platform_admin/
│ ├── src/api/resources.ts # 分配动作候选规则
│ ├── src/api/resource-staff-relation.ts # 有效资质筛选策略
│ ├── src/views/resource/ResourceActionDialog.vue # 动作弹窗履约联动
│ └── scripts/check-gasorder-assignment-linkage.mjs # 前端回归检查
└── docs/ # 需求基线、项目文档与操作日志
```
## 4. 接口行为
分配接口路径和请求字段保持不变:
```text
POST /gasorder_basic/:identity/assign
```
```json
{
"delivery_basic_identity": "配送点唯一标识",
"staff_account_identity": "配送人员唯一标识",
"reason": "分配或改派原因"
}
```
候选列表新增兼容性查询条件:
- `/delivery_basic?gas_basic_identities=<气站标识>&status=1`
- `/staff_account?gas_basic_identities=<气站标识>&delivery_basic_identities=<配送点标识>&role_code=delivery&status=1&work_status=on_duty&valid_credential_only=1`
未携带新增查询条件时,原有管理列表行为保持不变。
## 5. 行为变化
| 场景 | 修改前 | 修改后 |
| --- | --- | --- |
| 合同指定配送点 | 弹窗仍可选择其他配送点 | 自动带出并锁定合同配送点 |
| 合同未指定配送点 | 可看到全平台配送点 | 仅展示合同气站直属启用配送点 |
| 配送人员候选 | 仅按角色、启用和在岗筛选 | 追加气站、配送点和有效资质约束 |
| 已分配订单改派 | 可再次提交不同配送点 | 只能在当前配送点内改派人员 |
| 非法组合错误 | 统一显示请求参数不正确 | 返回合同点、组织、状态或资质的具体原因 |
## 6. 维护指南
- 调整合同配送点语义时,必须同步检查订单创建快照、分配弹窗和服务端分配校验。
- 新增配送人员准入条件时,应同时更新人员候选查询和服务端事务校验。
- 不得取消服务端校验或只依赖前端禁用状态。
- 修改本功能后至少运行后端 `gasorder``staff``delivery` 单元测试,以及前端类型检查、分配联动检查和生产构建。
## 7. 版本记录
- v1.02026-08-15建立合同履约范围内的订单分配与同点改派规则补充有效资质约束和具体业务错误。