Files
FT546-WCS/javaTest/README.md

96 lines
4.4 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.
# FT546 WCS 中心调度与交通管制 Demo
这是一个独立的 Java 8 Maven Demo。它保留 FT546 WCS 的 LEGACY 调度模拟,并旁路提供 P0-B1 离线 SHADOW 交通决策内核。
## 安全边界
- 仅使用内存车辆、任务、队列和地图。
- 不启动 Spring,不连接 SQL Server、PLC 或 WMS。
- 不发送真实设备命令。
- 不修改生产 `ruoyi-*` 模块。
- SHADOW 仅在离线内存中计算、记录和回放,写端口会直接拒绝调用。
- 不启用现场 SHADOW、HIL、LIMITED_ACTIVE、ACTIVE 或 PRODUCTION。
- 不把离线模拟结果作为现场证据。
## 已覆盖行为
- 每个调度周期只执行一次业务任务准入。
- 在线、自动、空闲、允许下发且电量大于 30 的车辆才可参与分配。
- 同层、楼层差、Y 距离、X 距离、车辆编号的稳定选车规则。
- 其他车辆剩余路径和离线车辆当前位置锁定。
- 同通道阻挡、高优先级避让任务和避让去重。
- 模拟协议失败、下一周期重试。
- 队列 `0/1 → 1/3 → 1/4` 状态流转、完成归档和占用释放。
- 无路可达时返回 HOLD,而不是抛出空指针。
## P0-B1 离线 SHADOW 覆盖
- 带版本、区域确认和基础地图校验和的不可变交通地图。
- `NODE`、规范化无向 `EDGE` 和显式 `CONFLICT` 资源及容量。
- `SOFT/COMMIT_GUARD/HARD/UNKNOWN_HARD/RELEASED` 资源保护契约。
- 区段 Prepare/Commit 状态机及非法跳转拒绝。
- 带 `plcBootId/heartbeatSeq/snapshotSeq` 的不可变复合快照。
- 陈旧、序号倒退、PLC 重启、失联和人工模式的 fail-closed 检查。
- 确定性 `GRANT/HOLD/YIELD`、等待图环拒绝及安全让行点门禁。
- 匹配反馈逐步释放;重复、跳点、版本错配和 ACK 未知不释放。
- SHADOW PLC、业务状态和权威预约三类禁写端口。
- JSON 黄金决策事件、SHA-256 输入哈希和离线回放。
- 固定种子 `546001` 至 `546010` 的容量、无环和确定性不变量回归。
- `shadow-simulation-60.json` 提供 60 条独立模拟数据,覆盖 12 类资源、决策、快照和反馈场景;每条数据由参数化测试独立计数。
- `shadow/history` 保存从 `FT546-wcs.dbo.wcs_srgv_queue_finish` 只读抽取的 240 条真实队列历史样本,保留原始任务号、车辆号、站点号和路径。
- 真实历史数据覆盖车辆 `1/2/3` 和任务类型 `1/2/3`;数据库全量扫描口径为 17,136 条,其中 11,943 条带有非空路径。
- 历史回放使用 `[create_date, finish_date)` 推导潜在并发窗口;数据库“已完成”事实与当前 SHADOW 的 `GRANT/HOLD/INSUFFICIENT_DATA` 推演结果分栏记录。
`com.ft546.wcs.demo` 是 LEGACY 演示;新增能力位于 `com.ft546.wcs.shadow`,交通区段状态不会写入 LEGACY 业务队列。
## 运行测试
```bash
mvn clean test
```
测试必须由 Maven Surefire 实际发现并执行;验收标准为测试数大于 0、Failures 为 0、Errors 为 0。
真实历史专项测试:
```bash
mvn -Dtest=HistoricalQueueDatabaseReplayTest test
```
生成真实历史离线回放证据:
```bash
mvn exec:java \
-Dexec.mainClass=com.ft546.wcs.shadow.history.HistoricalReplayApplication \
-Dexec.args="outputs/wcs-shadow-history-replay-local"
```
输出包括 `summary.json`、`replay-results.csv`、`data-quality-issues.csv` 和
`manifest.sha256`。报告保留数据库原始业务编号,方便回查。
> 这些结果是“真实历史队列离线回放”,不是现场 SHADOW 验收。历史队列表没有保存
> 当时每一轮 PLC 快照、资源账本或 LEGACY 决策,因此不能把最终完成状态当作算法正确率。
## 运行控制台模拟
```bash
mvn exec:java
```
输出事件包括:
- `CYCLE`:调度周期开始
- `ASSIGN`:任务选车和裁决理由
- `PATH`:规划成功的路径
- `AVOID`:创建避让队列
- `HOLD`:交通或协议原因导致等待
- `SEND`:模拟协议下发成功
- `MOVE`:模拟车辆推进
- `COMPLETE`:队列完成并归档
- `SUMMARY`:最终周期、活动队列、历史和协议尝试次数
- `SHADOW-SUMMARY`:离线 SHADOW 的 GRANT/HOLD 数量和零写入声明
## 未覆盖的生产门槛
本项目不包含 SQL Server 事务与 Outbox、真实 PLC Prepare/Commit、CRC 与寄存器布局、提升机物理信号、深位真实执行、硬件在环、现场 SHADOW 样本或区域 ACTIVE 回退。相关能力仍以 `docs/WCS算法优化` 的外部签字和验收门禁为准。