Files
SystemSimulationApp/docs/other/2026-09-12-test-input-path-refresh.md
lujingze b6c22a54f8 修复测试模型路径并完善四路八路回归与文档
- 按文件哈希区分当前八路工程和历史 Amesim 基准,修复测试与清单中的旧路径。
- 四路审计从 JSON 按需生成 XML,八路新增只核对模式,并显式使用 UTF-8 与 LF。
- 将缺失高刚度夹具的测试替换为当前八路完整 BDF 运行,明确未恢复原 RK45 专项覆盖。
- 更新前端大型工程测试、历史活动回放入口、数据说明、现行规范和相关报告。

验证:全量后台 374 项通过、1 项条件跳过;前端 11 项通过、历史独立服务用例 1 项跳过;四路八路 AME 审计通过。
环境、缓存和运行产物保持忽略;本次未实施工程 JSON 字段精简。
2026-09-12 15:49:09 +00:00

9.6 KiB
Raw Permalink Blame History

测试输入路径修复与八路替代验证

报告版本:1.0.0;日期:2026-09-12;基线:44b6ea7 加本次改动。

用户确认曾移动 AME/JSON、删除 fixture,并要求找回实际路径;找不到专项 XML 时先改用当前八路系统。此次修复了测试入口和文档引用,四路/八路工程及 AME 内容均未修改。全量后台检查恢复为 OK;原高刚度 RK45 专项没有被伪装成已恢复。

当前文件与身份

后续浏览器建模和优化仍用 八路 corrected JSON 与 当前八路 AME。备用为 四路 corrected JSON 与 四路 AME。方便后续删改的目录索引见 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:锁定 XML/JSON 双哈希和配置;2026-08-18 日志 07:58、23:10:独立 AME 防漂移、单位/参数/精确端口、manifest 来源绑定 指向历史 AME 和历史 sources,保留原物理、哈希和结果断言
tests/test_amesim_results.py 2026-08-18 日志:AME 二进制结果及变量、时间轴读取,支撑外部物理基准 只修复历史 AME 路径,已保存结果继续原样核对
八路/四路 AME 审计脚本 八路模型修正、四路模型复核、管流求根与四路网页验证:逐组件、参数和参考端口核对 当前 JSON 作为工程输入,AME 图纸独立作为参照;不再依赖已删除 legacy JSON 或独立四路 XML
frontend/tests/e2e/fit-view.spec.ts 2026-08-17 日志 20:01、22:48:大型工程导入、视口、端点、结果系统图线桥 改用当前 corrected 八路;按其 P4 布局选取实际交叉边;兼容新版本提示,仍检查展开日志里的加载/恢复成功
frontend/tests/e2e/simulation-live-mql8.spec.ts 八路修正报告的测试范围说明:这是 August Python 内部活动心跳流程,不是当前原生验收入口 改为读取历史 sources JSON;新证据写入忽略目录,避免覆盖历史报告。普通 4173 配置明确跳过;独立 live 配置依然保留,未重新验收旧遥测流程
原 tests/test_high_stiffness_explicit_rk45.py 前次输入合同验收 披露该夹具缺失;旧测试自身要求刚度 XML 的短时 RK45 事件/重启。未找到另一个单独规定该文件的现行报告;历史运行源码清单出现其测试名不等于恢复了夹具 XML 未找到,按本次用户授权改为 tests/test_current_mql8_simulation.py,用当前八路完整 BDF 运行验证
后续优化案例 现行优化验证约定 维持 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):

.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 与本轮新增文档链接检查通过。