- 按文件哈希区分当前八路工程和历史 Amesim 基准,修复测试与清单中的旧路径。 - 四路审计从 JSON 按需生成 XML,八路新增只核对模式,并显式使用 UTF-8 与 LF。 - 将缺失高刚度夹具的测试替换为当前八路完整 BDF 运行,明确未恢复原 RK45 专项覆盖。 - 更新前端大型工程测试、历史活动回放入口、数据说明、现行规范和相关报告。 验证:全量后台 374 项通过、1 项条件跳过;前端 11 项通过、历史独立服务用例 1 项跳过;四路八路 AME 审计通过。 环境、缓存和运行产物保持忽略;本次未实施工程 JSON 字段精简。
78 lines
9.6 KiB
Markdown
78 lines
9.6 KiB
Markdown
# 测试输入路径修复与八路替代验证
|
||
|
||
报告版本:1.0.0;日期:2026-09-12;基线:`44b6ea7` 加本次改动。
|
||
|
||
用户确认曾移动 AME/JSON、删除 fixture,并要求找回实际路径;找不到专项 XML 时先改用当前八路系统。此次修复了测试入口和文档引用,四路/八路工程及 AME 内容均未修改。全量后台检查恢复为 OK;原高刚度 RK45 专项没有被伪装成已恢复。
|
||
|
||
## 当前文件与身份
|
||
|
||
后续浏览器建模和优化仍用 [八路 corrected JSON](../../tests/data/test-mql-8-corrected.json) 与 [当前八路 AME](../../tests/data/test_mql.ame)。备用为 [四路 corrected JSON](../../tests/data/test-mql-4-corrected.json) 与 [四路 AME](../../tests/data/test_mql_4.ame)。方便后续删改的目录索引见 [tests/data/README.md](../../tests/data/README.md)。
|
||
|
||
| 文件(仓库相对路径) | 字节数 | SHA-256 |
|
||
| --- | ---: | --- |
|
||
| `tests/data/test-mql-8-corrected.json` | 271259 | `670977bef67e62d9c66e8af497bada208bd72a7301be45128d185d47282cf288` |
|
||
| `tests/data/test_mql.ame` | 21698560 | `1ff0ea4284b9248260eeceb8b27cd0bc14dbccb43554ab8c0b49900d0b944c3d` |
|
||
| `tests/data/test-mql-4-corrected.json` | 457639 | `542494eed8e235cb36eae5f80a0776b812e547d9215fa370949b0882834ebc8b` |
|
||
| `tests/data/test_mql_4.ame` | 13578240 | `99a071896671d634d651a7b21f487662dd7c122af8fd3d60ead404a5afa53ed4` |
|
||
| `tests/data/AmesimModels/test_mql.ame` | 21708800 | `cbc3aadd4569a49b3a63e5d66d4143ec16126c0f950df73fb637e07673c20fbb` |
|
||
| `tests/baselines/simulation/test_mql_8/sources/test-mql-8.json` | 272592 | `b44bf540ccd1c293fe2af2b9b9052b540abf83961ad955a0f6a4ab40fbe0bb18` |
|
||
| `tests/baselines/simulation/test_mql_8/sources/test-mql-8.xml` | 104110 | `0a2d9331df9eb5974daec25a61c1238ba32b1742d933ffc8b16ce316c5627b0b` |
|
||
|
||
历史 AME 原路径为 `AmesimModels/test_mql.ame`,现为 `tests/data/AmesimModels/test_mql.ame`,其身份与原测试要求完全一致。对应历史 JSON/XML 已在 `tests/baselines/simulation/test_mql_8/sources/`。本次只修复 manifest 中的 AME 路径,没有改动历史哈希、golden、采样曲线或耗时。
|
||
|
||
被删除的 legacy 八路 JSON 的历史 SHA 为 `4f1bf698519ba21429a11a83653adc7e52191f2d2b51fca943ee0b84f62feebd`;现存 sources JSON 是 `b44bf540…`。两者不是同一字节文件。普通画布测试因此转到当前 corrected 工程,历史基准读取则保持自己的 sources/AME 配对。
|
||
|
||
## 测试及报告来源
|
||
|
||
| 测试 / 工具 | 原报告或规范中的要求、用途 | 本次处理 |
|
||
| --- | --- | --- |
|
||
| `tests/test_test_mql_ame_contract.py` | [2026-08-17 日志 22:35](../update-log/更新日志-2026-08-17.md):锁定 XML/JSON 双哈希和配置;[2026-08-18 日志 07:58、23:10](../update-log/更新日志-2026-08-18.md):独立 AME 防漂移、单位/参数/精确端口、manifest 来源绑定 | 指向历史 AME 和历史 sources,保留原物理、哈希和结果断言 |
|
||
| `tests/test_amesim_results.py` | [2026-08-18 日志](../update-log/更新日志-2026-08-18.md):AME 二进制结果及变量、时间轴读取,支撑外部物理基准 | 只修复历史 AME 路径,已保存结果继续原样核对 |
|
||
| 八路/四路 AME 审计脚本 | [八路模型修正](test-mql-8模型对照与修正-2026-09-11.md)、[四路模型复核](test-mql-4模型复核与输入修正-2026-09-11.md)、[管流求根与四路网页验证](牛顿管流求根与四路网页验证-2026-09-11.md):逐组件、参数和参考端口核对 | 当前 JSON 作为工程输入,AME 图纸独立作为参照;不再依赖已删除 legacy JSON 或独立四路 XML |
|
||
| `frontend/tests/e2e/fit-view.spec.ts` | [2026-08-17 日志 20:01、22:48](../update-log/更新日志-2026-08-17.md):大型工程导入、视口、端点、结果系统图线桥 | 改用当前 corrected 八路;按其 P4 布局选取实际交叉边;兼容新版本提示,仍检查展开日志里的加载/恢复成功 |
|
||
| `frontend/tests/e2e/simulation-live-mql8.spec.ts` | [八路修正报告的测试范围说明](test-mql-8模型对照与修正-2026-09-11.md):这是 August Python 内部活动心跳流程,不是当前原生验收入口 | 改为读取历史 sources JSON;新证据写入忽略目录,避免覆盖历史报告。普通 4173 配置明确跳过;独立 live 配置依然保留,未重新验收旧遥测流程 |
|
||
| 原 `tests/test_high_stiffness_explicit_rk45.py` | [前次输入合同验收](2026-09-12-project-contract-acceptance.md) 披露该夹具缺失;旧测试自身要求刚度 XML 的短时 RK45 事件/重启。未找到另一个单独规定该文件的现行报告;历史运行源码清单出现其测试名不等于恢复了夹具 | XML 未找到,按本次用户授权改为 `tests/test_current_mql8_simulation.py`,用当前八路完整 BDF 运行验证 |
|
||
| 后续优化案例 | [现行优化验证约定](../standard/optimization-benchmark-model.md) | 维持 corrected 八路优先;四路只作明确的退路,历史冻结基准不能混入当前性能比较 |
|
||
|
||
前次所谓“三处旧夹具缺失”是三个报错位置,并不代表三个不同文件。两处依赖同一份被移动的历史 AME,另一处依赖已删除的高刚度 XML。补查还发现前端/审计依赖的 legacy JSON 和独立四路 XML 已删除,一并消除了活动路径依赖。
|
||
|
||
相关历史日志、模型报告、物性资料路径、native README、数据索引和现行规范已加当前位置或迁移说明。历史 `goldens/`、`runs/`、已归档审计 JSON 中的旧路径和源码状态保留为当时证据,当前位置由 manifest、数据索引和新增历史基准 README 说明。
|
||
|
||
## 实现及验收边界
|
||
|
||
- 共享路径集中在 `app/simulation/paths.py`,区分当前八路与 August 历史八路;前端用相对模块 URL 定位工程;审计脚本显式使用 UTF-8 读写文本,并固定写出 LF,避免 Windows 系统默认编码影响中文 JSON。
|
||
- 八路 `--check` 逐项检查 AME 的 157 个元件、1092 个公开参数、178 条连接以及时间配置,参数/端口差异均为 0。证据写入 `test/model-audit/mql8/`,不改工程文件。
|
||
- 四路 `--check` 从 JSON 经正式 CLI 输入转换生成内存 XML,再对照独立 AME 图纸,81 个元件、582 个参数、90 条连接通过;原 XML 缺失不再阻塞审计。无需另保存一份需同步维护的 fixture XML。
|
||
- 新八路运行测试沿正式 JSON → SI XML → 原生 C 路径执行完整 0~10 s,使用工程保存的 BDF、step 0.01、max_step 1e30 和后端 rtol 1e-8。检查终态、事件/重启、时间单调、规则采样点完整性、各列长度和所有值有限,并检查源文件未变。这不等于原 RK45 高刚度覆盖,也不单凭运行成功判定 Amesim 曲线一致。
|
||
- 更新 `.gitattributes` 与配套测试,使用现有历史 sources 和当前 JSON 的 LF 规则,避免 Windows checkout 改变受哈希保护的文本字节。
|
||
|
||
| 验证 | 结果 |
|
||
| --- | --- |
|
||
| AME 读取、历史契约、当前八路定向运行 | 11 项通过,4.988 s |
|
||
| 全量后台 `unittest discover` | 375 项:374 通过、1 条原条件跳过,57.360 s;0 失败/错误 |
|
||
| 跳过的后台项目 | Linux 完整发布锁版本实机对照,按原有 `SYSTEM_SIMULATION_VERIFY_LOCKED_ENV=1` 开关控制;不是夹具缺失 |
|
||
| 当前四路/八路 AME 审计 | 均通过;另外在临时副本故意修改参数、端口,四个错误输入均被拒绝 |
|
||
| 前端定向复测 | 11 项通过,31.4 s;历史真实后端活动回放 1 项因普通配置跳过 |
|
||
| 文件身份 | 上表 7 个输入均逐字节等于本次改动前 HEAD,模型未被审计覆盖 |
|
||
|
||
前端首次扩展检查中,两项仍期待加载信息占据最后一条摘要;新合同会追加旧工程单位提示。现在同时检查最新提示和展开日志中的加载/恢复成功。另一个线桥断言使用旧 P4 布局中已经不相交的边,已换成 corrected 工程实际相交的 P4 #5 边,仍要求生成线桥。第一次还误用普通无后端配置运行了历史 live 测试;独立服务要求现已显式标记,不能将该跳过记为真实浏览器求解通过。
|
||
|
||
本次没有重跑 Amesim 官方程序,没有新增八路网页求解耗时结论;前端是模拟 API 的画布回归,实际八路完整求解由后台测试完成。全量后台包含现有四路冻结 Amesim 曲线比较。Linux 实测完成,Windows 路径/换行兼容保持,但没有 Windows 实机环境验收。
|
||
|
||
## 复现与产物
|
||
|
||
从仓库根执行(Windows 将解释器替换为 `.venv-win\Scripts\python.exe`):
|
||
|
||
```bash
|
||
.venv/bin/python tools/audit_test_mql8_model.py --check
|
||
.venv/bin/python tests/model_audit/audit_mql4_model.py --check
|
||
.venv/bin/python -m unittest tests.test_current_mql8_simulation -v
|
||
.venv/bin/python -m unittest discover -s tests -v
|
||
```
|
||
|
||
在 `frontend/` 中用项目 Node 环境执行 `npm run test:e2e -- fit-view.spec.ts simulation-live-mql8.spec.ts`;Linux 浏览器依赖沿用 `.venv/native/browser-libs/`。需要当前真实网页/HTTP/C 验收时,使用 `tests/manual/browser_native_simulation.mjs` 和 corrected JSON;不以历史 Python 心跳脚本代替。
|
||
|
||
本次原始日志和身份摘要位于被 Git 忽略的 `test/model-path-refresh-20260912/`:`summary.json`、`targeted.log`、`backend-all.log`、`audit-mql4.log`、`audit-mql8.log`、`audit-negative.log`、`frontend.log`(首次诊断)、`frontend-final.log`(最终复测)。临时 XML/AME 审计证据位于 `test/model-audit/`。环境、缓存、测试产物均未纳入 Git;本次未提交或推送。
|
||
|
||
临时前端服务已退出;收尾检查 4173、5173、8000 均无监听。`git diff --check` 与本轮新增文档链接检查通过。
|