# 操作日志:配送订单合同调度约束 操作时间:2026-08-15 操作类型:修改、扩展 影响模块:平台总后台、配送订单分配、配送点候选、配送人员候选 ## 操作前状态 分配弹窗独立预加载全平台配送点和启用在岗配送人员,没有读取订单合同的履约气站或配送点,也没有按所选配送点重新加载人员。跨组织组合会在提交后被后端统一转换为“请求参数不正确”;后端未校验合同固定配送点和配送人员有效资质。 ## 具体操作 - 分配弹窗读取订单履约气站和当前配送点;已有配送点时自动带出并锁定。 - 合同未指定配送点时,配送点候选限定为订单气站直属启用配送点。 - 配送点变化时清空旧配送人员,并按气站、配送点、配送角色、启用、在岗和有效资质重新加载。 - 配送点及工作人员列表增加可选的精确候选筛选参数,不改变无参数管理列表行为。 - 后端分配事务增加合同固定点、同点改派、配送点状态、人员组织、岗位状态和有效资质校验。 - 将预定义业务冲突转换为具体中文错误,数据库错误继续使用通用脱敏错误。 - 增加后端单元测试和前端静态联动检查。 ## 代码变更 - `frontend/platform_admin/src/views/resource/ResourceActionDialog.vue`:分配动作初始化、配送点锁定和人员级联。 - `frontend/platform_admin/src/api/resources.ts`:配送点启用筛选和人员有效资质策略。 - `frontend/platform_admin/src/api/resource-staff-relation.ts`:有效资质查询参数。 - `frontend/platform_admin/scripts/check-gasorder-assignment-linkage.mjs`:合同调度前端回归检查。 - `backend/api/internal/logic/platform/gasorder/gasorder.go`:分配事务的合同与人员准入校验。 - `backend/api/internal/logic/platform/gasorder/gasorder_test.go`:分配边界测试。 - `backend/api/internal/logic/platform/delivery/delivery.go`:配送点状态候选筛选。 - `backend/api/internal/logic/platform/staff/staff.go`:有效资质候选筛选。 - `docs/05-平台总后台需求.md`:同步分配与改派业务基线。 ## 操作后状态 订单只能在合同确定的履约范围内分配。合同有配送点时固定该点;合同无配送点时首次选择限于合同气站,后续改派锁定已选配送点。配送人员必须属于该点、启用、在岗且资质有效。 ## 验证结果 - 后端 `gasorder`、`staff`、`delivery` 专项测试通过。 - 后端 API 全量测试、`go vet` 和主程序构建通过。 - 前端 TypeScript 类型检查通过。 - 前端工作人员关系策略检查通过。 - 前端配送订单分配联动检查通过。 - 前端资源契约检查和生产构建通过。 - 前端全仓 lint 未通过,失败来自既有模板文件的 2 个错误和 178 个警告;本次变更文件单独检查没有新增错误。 ## 风险评估 - 本次未修改数据库结构、分配接口路径或请求字段,既有客户端保持兼容。 - 候选列表新增的筛选参数均为可选参数;普通管理列表不携带时维持原行为。 - 历史已分配订单沿用当前配送点并禁止跨点改派,可避免旧数据被静默迁移。 - 若历史人员没有有效资质,将不再进入候选;需先在工作人员资质页面补充或启用有效记录。