import fs from 'node:fs';
const dir='reports/bridge-model-match-20260914';
const read=name=>JSON.parse(fs.readFileSync(`${dir}/${name}.json`,'utf8'));
const results=['acceptance','originals','picking'].map(name=>({name,...read(name)}));
if(results.some(r=>!r.pass))throw new Error('Acceptance incomplete');
const esc=s=>String(s).replaceAll('&','&').replaceAll('<','<').replaceAll('"','"');
const rows=[
['005 应急切换','原模型对应最完整','5 步、6 次操作;7 个登记节点均唯一存在,沿用原转轴。开关精度及故障物理仿真仍有限。'],
['006 应急替代','部分匹配','4 次操作复用原车开关;双管接头与软管联动、阀体固定只转手柄。保障车和接口仍为补充示意。'],
['007 换件修复','原位泵体、螺栓已匹配','复用原泵网格和世界姿态,拆出原有 4 颗螺栓;安装位置复原,增加细节视角和直接拾取。管路、纸垫等仍为补充件。'],
['008 平衡阀互换','仍为补充装配模型','补齐油缸与两腔关系;擦拭贴面、阀座保留油口、封堵与换位对应。原整车缺少可确认的两腔平衡阀节点。'],
];
const images=[['TASK-VIRTUAL-005-original.png','005 原始流程回归'],['TASK-VIRTUAL-006-step-2.png','006 两端接头与双管连接'],['TASK-VIRTUAL-007-step-4.png','007 原模型四颗安装螺栓拆卸'],['TASK-VIRTUAL-007-step-8.png','007 新泵原位安装'],['TASK-VIRTUAL-007-context.png','007 复位视角保留拆卸状态'],['TASK-VIRTUAL-008-step-4.png','008 小腔拆阀后封堵油口'],['TASK-VIRTUAL-008-step-16.png','008 完成两腔互换']];
fs.writeFileSync(`${dir}/index.html`,`
桥梁四套脚本模型匹配验收桥梁四套脚本 · 模型匹配验收
2026-09-14 · 对照桥梁文件夹图片 4–10,以及实际 GLB 网格、节点、变换和运行结果。
结论:005 原模型对应最完整;007 已改为原位拆装;006、008 仍有实车模型缺失,不能声称四套已完全匹配。
| 任务 | 匹配程度 | 核对与修正 |
${rows.map(r=>`${r.map(c=>`| ${esc(c)} | `).join('')}
`).join('')}
验证范围
原 005 完整 5 步和后加三套 34 步,共 39 步、94 次操作,经真实教学预览校验;未创建学员成绩。附加 8 项单元/路由检查与生产构建通过。
${results.map(r=>`${esc(r.name)} · PASS
${r.checks.map(c=>`- ${esc(c)}
`).join('')}
原始结果`).join('')}39 步逐项核对及模型缺项说明 · 临时验收数据清理结果
运行截图
${images.filter(([file])=>fs.existsSync(`${dir}/${file}`)).map(([file,title])=>`
${esc(title)}`).join('')}`);