SCENE LIVE · 功能已实施

真实场景与截图封面验证报告

场景保存截图封面及列表按创建时间倒序的功能已实施。本报告记录使用现有模型创建真实场景、保存当前三维视口封面及异常回退的实际验证结果。

2026-09-05 · http://127.0.0.1:6180 · Microsoft Edge · 教员

Markdown 报告

狐狸场景验证更正:撤回原完整通过结论

用户指出狐狸没有出现在场景中,经复现确认属实。原报告的 7/7 仅证明引用、保存、封面上传和发布等链路,漏掉了模型真正可见的视觉检查,因此撤回原“完整 E2E 通过”结论。下列修复后证据增加了真实画面和像素差异验证。

原结论与漏验

根因

修复内容

修复后验证

修复后独立浏览器重新打开场景 160:狐狸模型清晰可见,并完成像素差异验证。
修复后独立浏览器重新打开场景 160:狐狸模型清晰可见,并完成像素差异验证。 · 点击查看原图

下方标为“历史记录(已更正)”的检查及截图保留用于追溯,不计入当前通过率,也不作为狐狸已经可见的证据。

7 / 7当前证据项通过
0失败
0其他或未标注
2已更正历史记录
22图片文件已校验

保留场景与封面证据

实测场景-牛奶卡车检验区-20260905

场景 159 保存后封面回读证据
场景 159 保存后封面回读证据 · 点击查看原图
场景 / 状态
159 / PUBLISHED
当前工程版本
209
引用模型 / 版本
156 / 204
封面大小
32937 字节 · 640 × 408
封面持久化与项目证据
{
  "id": "159",
  "name": "实测场景-牛奶卡车检验区-20260905",
  "modelId": "156",
  "modelVersionId": "204",
  "finalStatus": "PUBLISHED",
  "finalVersionId": "209",
  "cover": {
    "image": "screenshots/24-truck-final-cover.jpg",
    "width": 640,
    "height": 408,
    "sizeBytes": 32937,
    "assetId": "2087",
    "versionId": "209",
    "mimeType": "image/jpeg",
    "sha256": "e103a473b74f3809365890296180c42f6c37a8005f2fd4c27fb64c437c245786",
    "storageUri": "fsvc://unreal-tran/image/2026/09/05/d29810b273d75e43dff07622424f333f.jpg"
  }
}

实测场景-狐狸野外训练区-20260905

场景 160 保存后封面回读证据
场景 160 保存后封面回读证据 · 点击查看原图
场景 / 状态
160 / PUBLISHED
当前工程版本
208
引用模型 / 版本
157 / 201
封面大小
45706 字节 · 640 × 408
封面持久化与项目证据
{
  "id": "160",
  "name": "实测场景-狐狸野外训练区-20260905",
  "modelId": "157",
  "modelVersionId": "201",
  "finalStatus": "PUBLISHED",
  "finalVersionId": "208",
  "cover": {
    "image": "screenshots/22-fox-final-cover.jpg",
    "width": 640,
    "height": 408,
    "sizeBytes": 45706,
    "assetId": "2084",
    "versionId": "208",
    "mimeType": "image/jpeg",
    "sha256": "1b6e4d1eb6e65ccc15ba820a8ae4bd40ab1bee900cf91d4ec3db9af82153618d",
    "storageUri": "fsvc://unreal-tran/image/2026/09/05/c176d359087fc9bea4235e43dd43a691.jpg"
  }
}

最终列表与创建时间倒序

保留场景的实际封面与创建时间倒序列表
保留场景的实际封面与创建时间倒序列表 · 点击查看原图

逐项验证记录

通过数仅统计未被更正且 status 明确为 PASS 的当前证据项;历史记录单独标注。checks 用于展示实际断言,不重复累加。故障注入中的预期错误响应不等于用例失败;缺少状态时不推断通过。图片文件存在校验不等于视觉内容验证。

1. 创建牛奶卡车检验区场景

PASS
  • 通过列表新建并进入真实场景编辑器
  • 首次加载认证服务短暂503,点击重新加载后成功;原创建记录159复用
浏览器现场
浏览器现场 · 点击查看原图

2. 牛奶卡车场景保存并回读封面

PASS
  • 场景资源库双击引用模型 156 的已发布版本 204
  • 编辑对象坐标与设备绑定后,未保存状态 2.5 秒内无上传或项目写入
  • 保存草稿发出 SCENE_COVER JPEG 上传与同一次项目 PUT
  • 认证访问 /cover 返回 JPEG,封面尺寸 640×408,列表可用的 coverUri 已写入
浏览器现场
浏览器现场 · 点击查看原图
浏览器现场
浏览器现场 · 点击查看原图
浏览器现场
浏览器现场 · 点击查看原图
浏览器现场
浏览器现场 · 点击查看原图

3. 牛奶卡车场景刷新恢复并发布

PASS
  • 整页刷新后模型 156/版本 204、对象名称、X=4.2 和设备编号均恢复
  • 发布前校验 8 项全部通过
  • 发布动作先成功保存再成功发布,最终状态为 PUBLISHED
检查详情
{
  "details": {
    "total": 8,
    "warnings": 0,
    "text": "✓\n场景环境已配置\n真实装备车库\n✓\n模型资源加载完成\n全部受控模型已就绪\n✓\n场景用途配置有效\n1 个实训装备\n✓\n对象设备编号完整\n用于接收物理设备和消息事件\n✓\n物模型绑定完整\n用于训练步骤和动作映射\n✓\n设备编号不重复\n设备编号唯一\n✓\n物模型编号不重复\n物模型编号唯一\n✓\n受控资源引用正常\n2 个导入模型可跨刷新恢复"
  }
}
浏览器现场
浏览器现场 · 点击查看原图
浏览器现场
浏览器现场 · 点击查看原图

4. 狐狸野外场景保存并锁定已发布模型版本

历史记录(已更正)
  • 切换到真实野外训练场模板并导入模型 157
  • 模型 157 当前草稿版本为 202,但场景严格依赖其已发布版本 201
  • 保存草稿上传 SCENE_COVER JPEG,并在同次项目 PUT 写入 content、依赖和 coverUri
  • 认证回读 /cover 返回 JPEG,尺寸 640×408
检查详情
{
  "superseded": true
}
历史截图(不作为修复后的视觉通过证据):原测试现场
历史截图(不作为修复后的视觉通过证据):原测试现场 · 点击查看原图
历史截图(不作为修复后的视觉通过证据):原测试现场
历史截图(不作为修复后的视觉通过证据):原测试现场 · 点击查看原图
历史截图(不作为修复后的视觉通过证据):原测试现场
历史截图(不作为修复后的视觉通过证据):原测试现场 · 点击查看原图
历史截图(不作为修复后的视觉通过证据):原测试现场
历史截图(不作为修复后的视觉通过证据):原测试现场 · 点击查看原图

5. 场景封面上传失败保留原封面

PASS
  • 对 SCENE_COVER 上传实施浏览器网络故障注入
  • 保存请求仍成功,场景内容继续提交
  • coverUri 保持为保存前的旧值,未产生空封面或错误替换
检查详情
{
  "details": {
    "sceneId": "160",
    "oldCoverUri": "fsvc://unreal-tran/image/2026/09/05/bb1e8717cd2e7ba6ca10f16b817b1ec5.jpg",
    "putRequests": 1
  }
}
浏览器现场
浏览器现场 · 点击查看原图

6. 狐狸野外场景刷新恢复并发布

历史记录(已更正)
  • 整页刷新后狐狸模型依赖仍为项目 157 的已发布版本 201
  • 封面上传失败后的场景正文编辑 X=-7.5 已恢复
  • 8 项发布校验全部通过,发布时重新保存并成功发布
  • 发布后的 coverUri 有效;保存前封面与发布后封面均由当前场景视图生成
检查详情
{
  "superseded": true,
  "details": {
    "validation": {
      "total": 8,
      "warnings": 0,
      "text": "✓\n场景环境已配置\n真实野外训练场\n✓\n模型资源加载完成\n全部受控模型已就绪\n✓\n场景用途配置有效\n3 个实训装备\n✓\n对象设备编号完整\n用于接收物理设备和消息事件\n✓\n物模型绑定完整\n用于训练步骤和动作映射\n✓\n设备编号不重复\n设备编号唯一\n✓\n物模型编号不重复\n物模型编号唯一\n✓\n受控资源引用正常\n2 个导入模型可跨刷新恢复"
    },
    "coverBeforePublish": "fsvc://unreal-tran/image/2026/09/05/bb1e8717cd2e7ba6ca10f16b817b1ec5.jpg",
    "coverAfterPublish": "fsvc://unreal-tran/image/2026/09/05/62e5d4a05316badb631e252f44ecbec3.jpg"
  }
}
历史截图(不作为修复后的视觉通过证据):原测试现场
历史截图(不作为修复后的视觉通过证据):原测试现场 · 点击查看原图
历史截图(不作为修复后的视觉通过证据):原测试现场
历史截图(不作为修复后的视觉通过证据):原测试现场 · 点击查看原图

7. 场景列表创建时间倒序与封面展示

PASS
  • 列表请求默认携带 sort=CREATED_DESC
  • 较晚创建的狐狸野外场景显示在较早创建的牛奶卡车场景之前
  • 卡车于 19:32 更新,晚于狐狸的 19:31,但狐狸仍排在卡车之前,证实没有按更新时间倒序
  • 两条场景均通过受控 /cover 接口展示修复后服务器 JPEG 封面;列表中可辨认狐狸和卡车
检查详情
{
  "details": {
    "foxIndex": 0,
    "truckIndex": 1,
    "rows": [
      {
        "name": "狐狸野外场景",
        "projectId": "160",
        "addTime": 1788605625,
        "updateTime": "2026-09-05T19:31:30",
        "imageIsBlob": true
      },
      {
        "name": "牛奶卡车场景",
        "projectId": "159",
        "addTime": 1788603808,
        "updateTime": "2026-09-05T19:32:28",
        "imageIsBlob": true
      }
    ]
  }
}
浏览器现场
浏览器现场 · 点击查看原图

8. 修复后狐狸新增导入、保存发布与刷新可见性

PASS
  • 从真实 UI 资源库新增模型 157 / 已发布版本 201,默认缩放约 0.0361637593,包围盒约 0.966 × 2.812 × 6,狐狸在视口中可见;该临时新增未保存、无写请求
  • 场景 160 原狐狸修复尺寸和镜头后,保存并发布为版本 208;服务器封面资产 2084 为真实 JPEG,640 × 408,45706 字节
  • 独立 Edge / Playwright 新会话按保存的镜头重新打开场景,狐狸网格已加载且可见,pendingLoads=0
  • 显示/隐藏狐狸前后进行像素对比,禁用模型投影排除仅阴影可见:320 × 180 采样改变 4472 像素(7.764%),超过 500 像素阈值
  • 实际检查发布截图、独立刷新截图及服务器 JPEG,均可辨认狐狸;模型 157 草稿 202 仍为 DRAFT,已发布版本仍为 201
检查详情
{
  "details": {
    "sceneId": "160",
    "currentVersionId": "208",
    "publishedVersionId": "208",
    "modelProjectId": "157",
    "modelVersionId": "201",
    "newImportWriteRequests": [],
    "visibilityEvidence": "visibility-evidence.json",
    "changedPixels": 4472,
    "changedPercentage": 7.764,
    "pendingLoads": 0,
    "boundsSize": [
      0.9658796100519353,
      2.811899945787403,
      6
    ]
  }
}
真实 UI 新增狐狸后尺寸正常且可见;临时测试未保存。
真实 UI 新增狐狸后尺寸正常且可见;临时测试未保存。 · 点击查看原图
场景 160 修复后保存发布为版本 208。
场景 160 修复后保存发布为版本 208。 · 点击查看原图
从服务器回读的最终狐狸 JPEG 封面,资产 2084。
从服务器回读的最终狐狸 JPEG 封面,资产 2084。 · 点击查看原图
独立浏览器重新打开后狐狸可见;像素差异 4472。
独立浏览器重新打开后狐狸可见;像素差异 4472。 · 点击查看原图

9. 修复后牛奶卡车保存发布与刷新可见性

PASS
  • 场景 159 保持模型 156 / 已发布版本 204,修复比例和镜头后保存并发布为版本 209
  • 独立 Edge / Playwright 新会话重新打开场景,按保存镜头确认卡车 5 个网格均可见、pendingLoads=0
  • 显示/隐藏卡车前后对比,禁用模型投影:320 × 180 采样改变 7515 像素(13.047%),超过 500 像素阈值
  • 服务器回读最终封面资产 2087 为真实 JPEG,640 × 408,32937 字节;封面及刷新截图可辨认卡车
  • 默认镜头部分车身被立柱遮挡,属于本次可见画面的已知限制
检查详情
{
  "details": {
    "sceneId": "159",
    "currentVersionId": "209",
    "publishedVersionId": "209",
    "modelProjectId": "156",
    "modelVersionId": "204",
    "visibilityEvidence": "visibility-evidence.json",
    "changedPixels": 7515,
    "changedPercentage": 13.047,
    "pendingLoads": 0,
    "boundsSize": [
      3.4406057210321332,
      3.390913184034896,
      6.000000000000001
    ]
  }
}
场景 159 修复后保存发布为版本 209。
场景 159 修复后保存发布为版本 209。 · 点击查看原图
从服务器回读的最终卡车 JPEG 封面,资产 2087;部分车身被立柱遮挡。
从服务器回读的最终卡车 JPEG 封面,资产 2087;部分车身被立柱遮挡。 · 点击查看原图
独立浏览器重新打开后卡车可见;像素差异 7515。
独立浏览器重新打开后卡车可见;像素差异 7515。 · 点击查看原图

数据保留与清理

保留开发环境场景 159(牛奶卡车检验区,PUBLISHED,当前及已发布版本 209,模型 156 / 已发布版本 204)和场景 160(狐狸野外训练区,PUBLISHED,当前及已发布版本 208,模型 157 / 已发布版本 201)。模型原发布版本未修改;模型 157 的当前草稿版本 202 继续保留,未发布或修改。本次无需 DDL 变更。
场景模型 / 发布版本最终状态当前版本
159 · 实测场景-牛奶卡车检验区-20260905156 / 204PUBLISHED209
160 · 实测场景-狐狸野外训练区-20260905157 / 201PUBLISHED208
保留两条真实场景及历史截图用于后续测试和追溯。新增导入狐狸仅在隔离浏览器会话中测试,未保存、无写请求;测试结束后丢弃临时对象。

本次问题记录

{
  "title": "狐狸存在于对象树但不在真实视口中显示",
  "status": "FIXED_AND_VISUALLY_VERIFIED",
  "details": "原完整 E2E 通过结论已撤回。同步蒙皮矩阵并保留归一化缩放,修复场景数据和镜头后,新增导入、保存发布、独立刷新与像素可见性均通过;详见更正区。"
}

后续独立事项

既存受控文件资产的 fsvc URI 分支未完整覆盖上传票据绑定校验,属于本次场景封面变更前已存在的问题。本次保留现有流程,后续应独立补齐校验并验证历史资产、版本复制与引用兼容性;不计入本次场景功能失败数。

{
  "scope": "independent",
  "title": "fsvc 新资产上传票据绑定校验",
  "details": "既存流程的 fsvc URI 分支未完整覆盖上传票据绑定校验;本次未扩大修改范围,应单独补齐并验证历史资产、版本复制与引用兼容性。"
}

实际命令与结果

pnpm run build

{
  "status": "PASS",
  "details": "前端生产构建及遗留模型编辑器产物校验通过。"
}

node --test tools/scene-cover-api.test.mjs tools/scene-cover-capture.test.mjs tools/scene-model-placement.test.mjs

{
  "status": "PASS",
  "details": "33 / 33 通过:封面同次 PUT、异常回退、并发队列、项目切换、截图尺寸、渲染状态恢复,以及蒙皮模型包围盒与归一化缩放回归。"
}

原 Microsoft Edge 场景链路 E2E(更正说明)

{
  "status": "SUPERSEDED",
  "details": "原 7/7 只覆盖模型引用、保存、封面上传和发布等链路,未证明狐狸真实可见;完整通过结论已撤回,当前视觉验证见下列独立浏览器 E2E。"
}

node tools/scene-model-visibility.e2e.mjs

{
  "status": "PASS",
  "details": "独立 Edge / Playwright 会话重开 160/208 与 159/209,使用保存镜头,显示/隐藏模型并禁用投影进行像素比较;狐狸 4472 像素、卡车 7515 像素,均超过 500 阈值。证据保存在 visibility-evidence.json,截图 26 / 27;无写请求。"
}

当前行为与限制