4.2 KiB
4.2 KiB
javaTest 调度闭环完成审计设计
日期: 2026-08-06
状态: 已确认并进入执行
范围: javaTest 历史负载驱动中心调度仿真、路线质量和可视化验收
1. 目标
在现有真实历史任务全链路仿真的基础上,补齐上线前最关键的可证明边界:
create_date未来任务不能提前进入调度,优先级排序仍受饥饿保护影响。- 已选路线必须是权威地图上的连续合法路径,公开质量评价接口不能接受非法候选。
- 活动任务的反向剩余路线必须被识别为对向风险,且优先级高于一般路线重合。
- 已知地图但无路可达的历史任务必须以明确
FAILED/NO_ROUTE结束并进入报告。 - 第三次同一交通 HOLD 的集成重规划、预约失败回滚和移动后防抖必须有可复现证据。
- 240 条真实历史任务仍然全部经过中心重新选车、重新规划、交通裁决、PLC/ACK、逐节点移动、资源释放、归档和幂等 WMS 回调。
2. 保留的业务语义
task_no、任务类型、物理起点、物理终点和优先级是业务输入。create_date只控制任务到达顺序,并按 10x/100x 加速;不截断真实相邻时间差。- 历史
agv_id只做对照;历史path_info只做权威地图上的公平比较,不进入新算法输入。 - 历史完成状态和
finish_date不推进仿真;仿真完成只由 PLC/ACK 和逐节点移动产生。 - 车辆资格和中心选车规则保持现有
VehicleAssignmentService作为权威策略。 - 路线质量只使用固定字典序元组,不使用受故障影响的耗时。
3. 技术设计
3.1 路线质量输入边界
RouteQualityEvaluator 在计算前校验候选路径的每个站点存在、每条相邻边存在且候选距离与权威地图坐标距离一致。非法候选直接抛出 IllegalArgumentException,防止调用方绕过 RouteCandidatePlanner 把任意节点序列参与排序。
活动路线的相邻有向边与候选边方向相反时,计入 oppositeDirectionConflictCount;同方向或仅物理边重合仍计入 activeRouteOverlapEdgeCount。已计入对向风险的边不再重复计入不兼容边预约。
3.2 调度端到端证据
在 HistoricalDispatchSimulatorTest 中增加小型权威地图夹具:
- 一个未来到达的高优先级任务和一个已到达的低优先级任务,验证未来任务不在其
create_date前产生ASSIGN,到达后按有效优先级选择。 - 一个已知但被永久阻断的目标,验证结果为
FAILED、原因NO_ROUTE,并且没有ASSIGN或COMPLETE。 - 一个相同交通 HOLD 连续三次的活动冲突,验证
REROUTE_TRIGGER、严格更优路线、原子替换失败时旧路线保持不变,以及成功换路后移动前不再次换路。
这些测试不改变真实历史数据,只补足真实回放无法自然覆盖的可控边界。
3.3 报告与浏览器
现有 JSON/CSV/API/HTML 继续消费 Java 产生的 plannedPath、候选、质量、事件和不变量证据。新增测试只验证这些字段在上述边界下不会丢失;浏览器继续显示完整地图、历史参考、当前规划、接近路径、MOVE/HOLD 和重规划前后路线。
4. 风险与降级
- 临时资源冲突仍然进入 HOLD,不转换为
NO_ROUTE。 - 无严格更优路线或原子预约替换失败时保留旧路线和旧资源。
- PLC 失败、断线、重启、低电量和车辆故障不进入交通 HOLD 计数。
- 真实 240 条回放若出现等待或失败,必须保留明确原因,不能用历史完成状态补齐。
- 本设计仍是离线内存仿真,不构成生产 SQL Server、PLC、WMS、HIL 或 ACTIVE 证据。
5. 验收门禁
- Maven 全量测试失败、错误、跳过均为 0。
- 240 条历史任务的完成、等待、失败之和等于 240;默认真实负载全部完成。
- 每个路线阶段候选唯一选中,选中距离不超过最短距离 110%。
- 节点双占、边容量、对向换边和死锁均为 0。
- 归档数等于完成数,重复 WMS 投递不产生重复业务效果。
- 浏览器桌面和移动 QA 通过,完整地图与路径图层开关不改变权威拓扑。