您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

498 行
15 KiB

  1. {
  2. "time": "2026-09-06T08:34:35.457Z",
  3. "scope": "截图与当前 results.json 的附件逐字节 SHA256 一致性;同名预跑或重拍不自动计本轮通过。",
  4. "screenshots": [
  5. {
  6. "file": "screenshots/01-components-saved.png",
  7. "title": "对象属性与扩展标记保存",
  8. "status": "PASS",
  9. "associations": [
  10. {
  11. "title": "对象名称、变换、PBR、属性与扩展标记保存重开;撤销重做",
  12. "status": "PASS",
  13. "hashMatches": true
  14. }
  15. ]
  16. },
  17. {
  18. "file": "screenshots/02-properties-reopened.png",
  19. "title": "刷新后的模型属性",
  20. "status": "PASS",
  21. "associations": [
  22. {
  23. "title": "对象名称、变换、PBR、属性与扩展标记保存重开;撤销重做",
  24. "status": "PASS",
  25. "hashMatches": true
  26. }
  27. ]
  28. },
  29. {
  30. "file": "screenshots/03-fox-preview.png",
  31. "title": "狐狸模型运行预览",
  32. "status": "PASS",
  33. "associations": [
  34. {
  35. "title": "场景树搜索、可见性、选择、视口工具、原生动画与截图",
  36. "status": "PASS",
  37. "hashMatches": true
  38. }
  39. ]
  40. },
  41. {
  42. "file": "screenshots/04-new-retry-dialog.png",
  43. "title": "新建失败后的重试界面",
  44. "status": "PASS",
  45. "associations": [
  46. {
  47. "title": "新建工程取消及失败保留输入;成功创建新ID且不覆盖当前模型",
  48. "status": "PASS",
  49. "hashMatches": true
  50. }
  51. ]
  52. },
  53. {
  54. "file": "screenshots/05-new-separate-project.png",
  55. "title": "新建独立模型工程",
  56. "status": "PASS",
  57. "associations": [
  58. {
  59. "title": "新建工程取消及失败保留输入;成功创建新ID且不覆盖当前模型",
  60. "status": "PASS",
  61. "hashMatches": true
  62. }
  63. ]
  64. },
  65. {
  66. "file": "screenshots/06-readonly-permissions.png",
  67. "title": "只读模型入口",
  68. "status": "PASS",
  69. "associations": [
  70. {
  71. "title": "管理员只读权限:编辑、新建、导入、保存发布均不可越权",
  72. "status": "PASS",
  73. "hashMatches": true
  74. }
  75. ]
  76. },
  77. {
  78. "file": "screenshots/21-truck-timeline-controls.png",
  79. "title": "卡车时间轴与部件轨道",
  80. "status": "PASS",
  81. "associations": [
  82. {
  83. "title": "时间轴真实控件:轨道/关键帧/播放与曲线 5 插值,保存后重新加载一致",
  84. "status": "PASS",
  85. "hashMatches": true
  86. }
  87. ]
  88. },
  89. {
  90. "file": "screenshots/22-truck-curve-value-five.png",
  91. "title": "曲线编辑:部件 X=5 的测试姿态",
  92. "status": "PASS",
  93. "associations": [
  94. {
  95. "title": "时间轴真实控件:轨道/关键帧/播放与曲线 5 插值,保存后重新加载一致",
  96. "status": "PASS",
  97. "hashMatches": true
  98. }
  99. ]
  100. },
  101. {
  102. "file": "screenshots/23-truck-blueprint-seven-nodes.png",
  103. "title": "七种蓝图节点与真实端口连线",
  104. "status": "PASS",
  105. "associations": [
  106. {
  107. "title": "蓝图真实节点库与端口拖线:七种参数、内部边复制/剪切、撤销重做及保存",
  108. "status": "PASS",
  109. "hashMatches": true
  110. }
  111. ]
  112. },
  113. {
  114. "file": "screenshots/24-truck-blueprint-real-message.png",
  115. "title": "蓝图执行到操作提示",
  116. "status": "PASS",
  117. "associations": [
  118. {
  119. "title": "蓝图真实节点库与端口拖线:七种参数、内部边复制/剪切、撤销重做及保存",
  120. "status": "PASS",
  121. "hashMatches": true
  122. }
  123. ]
  124. },
  125. {
  126. "file": "screenshots/25-truck-blueprint-completed-log.png",
  127. "title": "蓝图完成与本次运行日志",
  128. "status": "PASS",
  129. "associations": [
  130. {
  131. "title": "蓝图真实节点库与端口拖线:七种参数、内部边复制/剪切、撤销重做及保存",
  132. "status": "PASS",
  133. "hashMatches": true
  134. }
  135. ]
  136. },
  137. {
  138. "file": "screenshots/26-truck-condition-branches-runtime.png",
  139. "title": "条件真假出口的运行时补充检查",
  140. "status": "PASS",
  141. "associations": [
  142. {
  143. "title": "已保存蓝图:条件出口与目标匹配 runtime 检查,真实模型单击/双击/进入预览自动触发",
  144. "status": "PASS",
  145. "hashMatches": true
  146. }
  147. ]
  148. },
  149. {
  150. "file": "screenshots/27-truck-preview-auto.png",
  151. "title": "进入预览自动触发蓝图",
  152. "status": "PASS",
  153. "associations": [
  154. {
  155. "title": "已保存蓝图:条件出口与目标匹配 runtime 检查,真实模型单击/双击/进入预览自动触发",
  156. "status": "PASS",
  157. "hashMatches": true
  158. }
  159. ]
  160. },
  161. {
  162. "file": "screenshots/27-truck-preview-click.png",
  163. "title": "真实单击卡车触发蓝图",
  164. "status": "PASS",
  165. "associations": [
  166. {
  167. "title": "已保存蓝图:条件出口与目标匹配 runtime 检查,真实模型单击/双击/进入预览自动触发",
  168. "status": "PASS",
  169. "hashMatches": true
  170. }
  171. ]
  172. },
  173. {
  174. "file": "screenshots/27-truck-preview-double-click.png",
  175. "title": "真实双击卡车触发蓝图",
  176. "status": "PASS",
  177. "associations": [
  178. {
  179. "title": "已保存蓝图:条件出口与目标匹配 runtime 检查,真实模型单击/双击/进入预览自动触发",
  180. "status": "PASS",
  181. "hashMatches": true
  182. }
  183. ]
  184. },
  185. {
  186. "file": "screenshots/28-curve-axis-y-negative.png",
  187. "title": "曲线分量切换与负值",
  188. "status": "PASS",
  189. "associations": [
  190. {
  191. "title": "补充时间轴与蓝图工具:刻度/按键/记录/分量、基准匹配、节点搜索拖入与画布平移",
  192. "status": "PASS",
  193. "hashMatches": true
  194. }
  195. ]
  196. },
  197. {
  198. "file": "screenshots/29-timeline-seek-record.png",
  199. "title": "真实刻度定位、方向键与关键帧记录",
  200. "status": "PASS",
  201. "associations": [
  202. {
  203. "title": "补充时间轴与蓝图工具:刻度/按键/记录/分量、基准匹配、节点搜索拖入与画布平移",
  204. "status": "PASS",
  205. "hashMatches": true
  206. }
  207. ]
  208. },
  209. {
  210. "file": "screenshots/30-assets-environment-reopened.png",
  211. "title": "主狐狸与外部方盒环境同时重开",
  212. "status": "PASS",
  213. "associations": [
  214. {
  215. "title": "受控模型与外部环境 GLB 上传、JSON 往返和刷新重开",
  216. "status": "PASS",
  217. "hashMatches": true
  218. }
  219. ]
  220. },
  221. {
  222. "file": "screenshots/30-blueprint-palette-canvas.png",
  223. "title": "蓝图库搜索、真实拖入与画布操作",
  224. "status": "PASS",
  225. "associations": [
  226. {
  227. "title": "补充时间轴与蓝图工具:刻度/按键/记录/分量、基准匹配、节点搜索拖入与画布平移",
  228. "status": "PASS",
  229. "hashMatches": true
  230. }
  231. ]
  232. },
  233. {
  234. "file": "screenshots/31-bridge-baseline-reopened.png",
  235. "title": "匹配模型的基准时间轴保存重开",
  236. "status": "PASS",
  237. "associations": [
  238. {
  239. "title": "补充时间轴与蓝图工具:刻度/按键/记录/分量、基准匹配、节点搜索拖入与画布平移",
  240. "status": "PASS",
  241. "hashMatches": true
  242. }
  243. ]
  244. },
  245. {
  246. "file": "screenshots/31-invalid-import-keeps-model.png",
  247. "title": "无效工程导入保留原模型",
  248. "status": "PASS",
  249. "associations": [
  250. {
  251. "title": "非法 JSON 与未登记 blob 引用导入失败时保留当前文档",
  252. "status": "PASS",
  253. "hashMatches": true
  254. }
  255. ]
  256. },
  257. {
  258. "file": "screenshots/32-save-conflict-keeps-recovery.png",
  259. "title": "版本冲突阻断保存并保留恢复稿",
  260. "status": "PASS",
  261. "associations": [
  262. {
  263. "title": "保存请求超时和 409 保留恢复副本,解除故障后可重试",
  264. "status": "PASS",
  265. "hashMatches": true
  266. }
  267. ]
  268. },
  269. {
  270. "file": "screenshots/33-save-retry-success.png",
  271. "title": "保存失败后再次保存成功",
  272. "status": "PASS",
  273. "associations": [
  274. {
  275. "title": "保存请求超时和 409 保留恢复副本,解除故障后可重试",
  276. "status": "PASS",
  277. "hashMatches": true
  278. }
  279. ]
  280. },
  281. {
  282. "file": "screenshots/34-published-current-cover.png",
  283. "title": "发布版本与当前视口封面",
  284. "status": "PASS",
  285. "associations": [
  286. {
  287. "title": "直接发布同步截图封面、固定版本目录与真实离线步骤 HTML",
  288. "status": "PASS",
  289. "hashMatches": true
  290. }
  291. ]
  292. },
  293. {
  294. "file": "screenshots/35-offline-step-demo-actual-file.png",
  295. "title": "实际下载的步骤演示 HTML",
  296. "status": "PASS",
  297. "associations": [
  298. {
  299. "title": "直接发布同步截图封面、固定版本目录与真实离线步骤 HTML",
  300. "status": "PASS",
  301. "hashMatches": true
  302. }
  303. ]
  304. },
  305. {
  306. "file": "screenshots/41-resource-search-restored.png",
  307. "title": "资源搜索清空后恢复卡片",
  308. "status": "PASS",
  309. "associations": [
  310. {
  311. "title": "补充资源库:搜索清空、真实卡片切换与刷新保留",
  312. "status": "PASS",
  313. "hashMatches": true
  314. }
  315. ]
  316. },
  317. {
  318. "file": "screenshots/42-resource-card-switch-reopened.png",
  319. "title": "真实资源卡片切换后刷新",
  320. "status": "PASS",
  321. "associations": [
  322. {
  323. "title": "补充资源库:搜索清空、真实卡片切换与刷新保留",
  324. "status": "PASS",
  325. "hashMatches": true
  326. }
  327. ]
  328. },
  329. {
  330. "file": "screenshots/43-builtin-workshop-reopened.png",
  331. "title": "内置车间环境保存重开",
  332. "status": "PASS",
  333. "associations": [
  334. {
  335. "title": "补充环境与树:内置三环境保存重开、节点计数与折叠展开",
  336. "status": "PASS",
  337. "hashMatches": true
  338. }
  339. ]
  340. },
  341. {
  342. "file": "screenshots/44-builtin-outdoor-reopened.png",
  343. "title": "内置野外环境保存重开",
  344. "status": "PASS",
  345. "associations": [
  346. {
  347. "title": "补充环境与树:内置三环境保存重开、节点计数与折叠展开",
  348. "status": "PASS",
  349. "hashMatches": true
  350. }
  351. ]
  352. },
  353. {
  354. "file": "screenshots/45-builtin-depot-reopened.png",
  355. "title": "内置装备车库保存重开",
  356. "status": "PASS",
  357. "associations": [
  358. {
  359. "title": "补充环境与树:内置三环境保存重开、节点计数与折叠展开",
  360. "status": "PASS",
  361. "hashMatches": true
  362. }
  363. ]
  364. },
  365. {
  366. "file": "screenshots/46-preview-navigation.png",
  367. "title": "预览前后步与退出",
  368. "status": "PASS",
  369. "associations": [
  370. {
  371. "title": "补充视口与工作区:鼠标镜头、聚焦、面板、预览导航、日志与自动保存",
  372. "status": "PASS",
  373. "hashMatches": true
  374. }
  375. ]
  376. },
  377. {
  378. "file": "screenshots/47-navigation-autosave-log.png",
  379. "title": "等待自动保存后刷新核对字段",
  380. "status": "PASS",
  381. "associations": [
  382. {
  383. "title": "补充视口与工作区:鼠标镜头、聚焦、面板、预览导航、日志与自动保存",
  384. "status": "PASS",
  385. "hashMatches": true
  386. }
  387. ]
  388. },
  389. {
  390. "file": "screenshots/51-transform-gizmos.png",
  391. "title": "真实手柄操作的旋转与单轴缩放测试姿态",
  392. "status": "PASS",
  393. "associations": [
  394. {
  395. "title": "真实三维移动、旋转、缩放手柄拖动及撤销重做保存重开",
  396. "status": "PASS",
  397. "hashMatches": true
  398. }
  399. ]
  400. },
  401. {
  402. "file": "screenshots/52-leave-save-failure.png",
  403. "title": "未保存离开遇到保存失败",
  404. "status": "PASS",
  405. "associations": [
  406. {
  407. "title": "未保存离开:关闭确认保留工作、保存失败留在原页、重试保存后离开",
  408. "status": "PASS",
  409. "hashMatches": true
  410. }
  411. ]
  412. },
  413. {
  414. "file": "screenshots/60-same-version-real-recovery.png",
  415. "title": "真实未保存修改触发同版本恢复",
  416. "status": "PASS",
  417. "associations": [
  418. {
  419. "title": "真实未保存稿同版本恢复并显式保存;旧版本恢复稿下载隔离保留",
  420. "status": "PASS",
  421. "hashMatches": true
  422. }
  423. ]
  424. },
  425. {
  426. "file": "screenshots/61-recovered-draft-explicitly-saved.png",
  427. "title": "恢复稿经显式保存后落库",
  428. "status": "PASS",
  429. "associations": [
  430. {
  431. "title": "真实未保存稿同版本恢复并显式保存;旧版本恢复稿下载隔离保留",
  432. "status": "PASS",
  433. "hashMatches": true
  434. }
  435. ]
  436. },
  437. {
  438. "file": "screenshots/62-stale-version-recovery-protection.png",
  439. "title": "旧版本恢复稿只下载与隔离",
  440. "status": "PASS",
  441. "associations": [
  442. {
  443. "title": "真实未保存稿同版本恢复并显式保存;旧版本恢复稿下载隔离保留",
  444. "status": "PASS",
  445. "hashMatches": true
  446. }
  447. ]
  448. },
  449. {
  450. "file": "screenshots/63-controlled-glb-download-failed.png",
  451. "title": "受控模型下载失败时禁止编辑",
  452. "status": "PASS",
  453. "associations": [
  454. {
  455. "title": "受控 GLB 下载失败阻止编辑,重试成功;发布预检开关无写入且拒绝错误资源 JSON",
  456. "status": "PASS",
  457. "hashMatches": true
  458. }
  459. ]
  460. },
  461. {
  462. "file": "screenshots/64-controlled-glb-retry-loaded.png",
  463. "title": "解除资源故障后实际重试成功",
  464. "status": "PASS",
  465. "associations": [
  466. {
  467. "title": "受控 GLB 下载失败阻止编辑,重试成功;发布预检开关无写入且拒绝错误资源 JSON",
  468. "status": "PASS",
  469. "hashMatches": true
  470. }
  471. ]
  472. },
  473. {
  474. "file": "screenshots/65-publish-preflight-readonly.png",
  475. "title": "发布预检清单与只读开关行为",
  476. "status": "PASS",
  477. "associations": [
  478. {
  479. "title": "受控 GLB 下载失败阻止编辑,重试成功;发布预检开关无写入且拒绝错误资源 JSON",
  480. "status": "PASS",
  481. "hashMatches": true
  482. }
  483. ]
  484. },
  485. {
  486. "file": "screenshots/66-depot-saved-return-list.png",
  487. "title": "车库保存后正常返回列表",
  488. "status": "PASS",
  489. "associations": [
  490. {
  491. "title": "补充环境与树:内置三环境保存重开、节点计数与折叠展开",
  492. "status": "PASS",
  493. "hashMatches": true
  494. }
  495. ]
  496. }
  497. ]
  498. }