import fs from 'node:fs'; const root='reports/virtual-html-workspace-20260912'; const main=JSON.parse(fs.readFileSync(root+'/checks.json','utf8')); const media=JSON.parse(fs.readFileSync(root+'/media-checks.json','utf8')); const fixture=JSON.parse(fs.readFileSync(root+'/fixture.json','utf8')); const checks=[...main.checks,...media.checks]; if(checks.some(check=>!check.pass)||main.errors.length||media.errors.length)throw new Error('Live verification is incomplete'); const escape=value=>String(value).replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c])); const shots=[['01-bridge-tools','桥梁:结构树、聚焦、目标高亮、标签与数字教员'],['02-bridge-explosion','桥梁:真实部件爆炸视图'],['03-learner-preparation-restored','学员:工具、安全与测量记录刷新恢复'],['04-submitted','完成真实三维操作,提交服务端'],['05-observer','维护账号只读观察学员运行'],['06-fox-native','狐狸:历史发布场景五个对象完整加载,1440×900 布局'],['07-digital-human-video','数字人讲解:播放已保存并授权给任务的成片']]; fs.writeFileSync(root+'/index.html',`虚拟仿真 JS+HTML 正式工作区验收

虚拟仿真 JS+HTML 正式工作区验收

2026-09-12 · 开发环境 · Edge 无头浏览器 · 1920×1080、1440×900

实施结果

虚拟仿真的运行、预览使用 JS+HTML 工作区。Vue 负责平台路由、认证、挂载和接口适配;任务列表继续使用正式教学接口。已有 /api、/legacy 运行与预览地址统一进入同一工作区。本次通过增量修改实现,没有 Git 回滚。

实测 ${checks.length} 项通过

${checks.map(check=>``).join('')}
检查结果
${escape(check.name)}通过

浏览器未捕获未处理 JavaScript 异常。断网用例实际拦截一次进度请求,验证失败时服务端和界面均未完成该步骤,随后重试成功。

构建与自动检查

无数据库或 DDL 变更。部署时前端与 Tran 服务一起更新。正式考试专用运行入口保持原有实现,本报告不将它计入本次迁移验收。

保留的验收记录

学员 ID ${escape(fixture.userId)};任务 ID ${escape(fixture.assignmentId)};运行 ID ${escape(fixture.runId)},状态已提交。媒体预览任务:${media.checks.map(c=>`${escape(c.assignmentId)}`).join('、')}。开发过程中使用独立验收副本,原训练内容未覆盖。

狐狸历史训练没有指定动画片段,因此实测验证原生 Survey / Walk / Run 资源完整加载;原生片段实际回放、末帧保持、复位与释放另由自动测试验证。

原始结果:操作检查 · 媒体检查 · 测试记录 ID

${shots.map(([file,title])=>`
${escape(title)}
${escape(title)}
`).join('')}
`); console.log(root+'/index.html');