You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

626 rivejä
16 KiB

  1. [
  2. {
  3. "file": "01-fox-actual-scene.png",
  4. "status": "PASS",
  5. "captionPresent": true,
  6. "associations": [
  7. {
  8. "testTitle": "狐狸:真实细分权限、全部属性、清空绑定、蒙皮保护、相机与封面保存重开",
  9. "status": "PASS",
  10. "hashMatches": true
  11. }
  12. ]
  13. },
  14. {
  15. "file": "02-fox-reopened-skin-protection.png",
  16. "status": "PASS",
  17. "captionPresent": true,
  18. "associations": [
  19. {
  20. "testTitle": "狐狸:真实细分权限、全部属性、清空绑定、蒙皮保护、相机与封面保存重开",
  21. "status": "PASS",
  22. "hashMatches": true
  23. }
  24. ]
  25. },
  26. {
  27. "file": "03-truck-part-history-reopened.png",
  28. "status": "PASS",
  29. "captionPresent": true,
  30. "associations": [
  31. {
  32. "testTitle": "牛奶卡车:刚性部件独立变换、软删除、历史与保存基线一致",
  33. "status": "PASS",
  34. "hashMatches": true
  35. }
  36. ]
  37. },
  38. {
  39. "file": "04-new-failure-original-preserved.png",
  40. "status": "PASS",
  41. "captionPresent": true,
  42. "associations": [
  43. {
  44. "testTitle": "新建独立场景:取消、失败、保护原工程以及成功新 ID",
  45. "status": "PASS",
  46. "hashMatches": true
  47. }
  48. ]
  49. },
  50. {
  51. "file": "05-new-separate-scene.png",
  52. "status": "PASS",
  53. "captionPresent": true,
  54. "associations": [
  55. {
  56. "testTitle": "新建独立场景:取消、失败、保护原工程以及成功新 ID",
  57. "status": "PASS",
  58. "hashMatches": true
  59. }
  60. ]
  61. },
  62. {
  63. "file": "06-readonly-scene-permissions.png",
  64. "status": "PASS",
  65. "captionPresent": true,
  66. "associations": [
  67. {
  68. "testTitle": "只读管理员:可浏览预览与导出,模板/资源/键盘/接口不能改场景",
  69. "status": "PASS",
  70. "hashMatches": true
  71. }
  72. ]
  73. },
  74. {
  75. "file": "07-garage-full.png",
  76. "status": "PASS",
  77. "captionPresent": true,
  78. "associations": [
  79. {
  80. "testTitle": "牛奶卡车:刚性部件独立变换、软删除、历史与保存基线一致",
  81. "status": "PASS",
  82. "hashMatches": true
  83. }
  84. ]
  85. },
  86. {
  87. "file": "07-garage-hidden.png",
  88. "status": "PASS",
  89. "captionPresent": true,
  90. "associations": [
  91. {
  92. "testTitle": "牛奶卡车:刚性部件独立变换、软删除、历史与保存基线一致",
  93. "status": "PASS",
  94. "hashMatches": true
  95. }
  96. ]
  97. },
  98. {
  99. "file": "07-garage-xray.png",
  100. "status": "PASS",
  101. "captionPresent": true,
  102. "associations": [
  103. {
  104. "testTitle": "牛奶卡车:刚性部件独立变换、软删除、历史与保存基线一致",
  105. "status": "PASS",
  106. "hashMatches": true
  107. }
  108. ]
  109. },
  110. {
  111. "file": "10-invalid-reference-rolled-back.png",
  112. "status": "PASS",
  113. "captionPresent": true,
  114. "associations": [
  115. {
  116. "testTitle": "工程 JSON 与小 GLB:真实上传、损坏拒绝、引用失败回滚、相机参数往返",
  117. "status": "PASS",
  118. "hashMatches": true
  119. }
  120. ]
  121. },
  122. {
  123. "file": "11-small-glb-real-upload.png",
  124. "status": "PASS",
  125. "captionPresent": true,
  126. "associations": [
  127. {
  128. "testTitle": "工程 JSON 与小 GLB:真实上传、损坏拒绝、引用失败回滚、相机参数往返",
  129. "status": "PASS",
  130. "hashMatches": true
  131. }
  132. ]
  133. },
  134. {
  135. "file": "12-json-glb-reopened.png",
  136. "status": "PASS",
  137. "captionPresent": true,
  138. "associations": [
  139. {
  140. "testTitle": "工程 JSON 与小 GLB:真实上传、损坏拒绝、引用失败回滚、相机参数往返",
  141. "status": "PASS",
  142. "hashMatches": true
  143. }
  144. ]
  145. },
  146. {
  147. "file": "13-save-failure-keeps-draft.png",
  148. "status": "PASS",
  149. "captionPresent": true,
  150. "associations": [
  151. {
  152. "testTitle": "保存失败与封面降级:503 保留草稿,封面上传失败保留旧图,恢复后可重试",
  153. "status": "PASS",
  154. "hashMatches": true
  155. }
  156. ]
  157. },
  158. {
  159. "file": "14-cover-failure-keeps-old-image.png",
  160. "status": "PASS",
  161. "captionPresent": true,
  162. "associations": [
  163. {
  164. "testTitle": "保存失败与封面降级:503 保留草稿,封面上传失败保留旧图,恢复后可重试",
  165. "status": "PASS",
  166. "hashMatches": true
  167. }
  168. ]
  169. },
  170. {
  171. "file": "15-save-retry-success.png",
  172. "status": "PASS",
  173. "captionPresent": true,
  174. "associations": [
  175. {
  176. "testTitle": "保存失败与封面降级:503 保留草稿,封面上传失败保留旧图,恢复后可重试",
  177. "status": "PASS",
  178. "hashMatches": true
  179. }
  180. ]
  181. },
  182. {
  183. "file": "16-real-unsaved-recovery.png",
  184. "status": "PASS",
  185. "captionPresent": true,
  186. "associations": [
  187. {
  188. "testTitle": "同版本恢复与 409:真实未保存草稿重载、服务器新版本保护与隔离下载",
  189. "status": "PASS",
  190. "hashMatches": true
  191. }
  192. ]
  193. },
  194. {
  195. "file": "17-conflict-does-not-overwrite.png",
  196. "status": "PASS",
  197. "captionPresent": true,
  198. "associations": [
  199. {
  200. "testTitle": "同版本恢复与 409:真实未保存草稿重载、服务器新版本保护与隔离下载",
  201. "status": "PASS",
  202. "hashMatches": true
  203. }
  204. ]
  205. },
  206. {
  207. "file": "18-stale-recovery-explicit-decision.png",
  208. "status": "PASS",
  209. "captionPresent": true,
  210. "associations": [
  211. {
  212. "testTitle": "同版本恢复与 409:真实未保存草稿重载、服务器新版本保护与隔离下载",
  213. "status": "PASS",
  214. "hashMatches": true
  215. }
  216. ]
  217. },
  218. {
  219. "file": "19-publish-failure-stays-draft.png",
  220. "status": "PASS",
  221. "captionPresent": true,
  222. "associations": [
  223. {
  224. "testTitle": "发布:前端绑定校验、保存与发布失败阻断、真实固定版本供训练目录使用",
  225. "status": "PASS",
  226. "hashMatches": true
  227. }
  228. ]
  229. },
  230. {
  231. "file": "20-scene-published-fixed-version.png",
  232. "status": "PASS",
  233. "captionPresent": true,
  234. "associations": [
  235. {
  236. "testTitle": "发布:前端绑定校验、保存与发布失败阻断、真实固定版本供训练目录使用",
  237. "status": "PASS",
  238. "hashMatches": true
  239. }
  240. ]
  241. },
  242. {
  243. "file": "20-template-depot-1.png",
  244. "status": "PASS",
  245. "captionPresent": true,
  246. "associations": [
  247. {
  248. "testTitle": "场景模板实际加载、保存重开:真实装备车库",
  249. "status": "PASS",
  250. "hashMatches": true
  251. }
  252. ]
  253. },
  254. {
  255. "file": "21-published-scene-cover-in-list.png",
  256. "status": "PASS",
  257. "captionPresent": true,
  258. "associations": [
  259. {
  260. "testTitle": "发布:前端绑定校验、保存与发布失败阻断、真实固定版本供训练目录使用",
  261. "status": "PASS",
  262. "hashMatches": true
  263. }
  264. ]
  265. },
  266. {
  267. "file": "21-template-terrain-1.png",
  268. "status": "PASS",
  269. "captionPresent": true,
  270. "associations": [
  271. {
  272. "testTitle": "场景模板实际加载、保存重开:真实野外训练场",
  273. "status": "PASS",
  274. "hashMatches": true
  275. }
  276. ]
  277. },
  278. {
  279. "file": "22-template-workshop-1.png",
  280. "status": "PASS",
  281. "captionPresent": true,
  282. "associations": [
  283. {
  284. "testTitle": "场景模板实际加载、保存重开:综合检验车间",
  285. "status": "PASS",
  286. "hashMatches": true
  287. }
  288. ]
  289. },
  290. {
  291. "file": "23-template-workshop-real.png",
  292. "status": "PASS",
  293. "captionPresent": true,
  294. "associations": [
  295. {
  296. "testTitle": "场景模板实际加载、保存重开:演示维修车间(可拆分)",
  297. "status": "PASS",
  298. "hashMatches": true
  299. }
  300. ]
  301. },
  302. {
  303. "file": "24-template-workshop-2.png",
  304. "status": "PASS",
  305. "captionPresent": true,
  306. "associations": [
  307. {
  308. "testTitle": "场景模板实际加载、保存重开:总成拆卸车间",
  309. "status": "PASS",
  310. "hashMatches": true
  311. }
  312. ]
  313. },
  314. {
  315. "file": "25-template-workshop-3.png",
  316. "status": "PASS",
  317. "captionPresent": true,
  318. "associations": [
  319. {
  320. "testTitle": "场景模板实际加载、保存重开:部件分解车间",
  321. "status": "PASS",
  322. "hashMatches": true
  323. }
  324. ]
  325. },
  326. {
  327. "file": "26-template-workshop-4.png",
  328. "status": "PASS",
  329. "captionPresent": true,
  330. "associations": [
  331. {
  332. "testTitle": "场景模板实际加载、保存重开:清洗检测车间",
  333. "status": "PASS",
  334. "hashMatches": true
  335. }
  336. ]
  337. },
  338. {
  339. "file": "27-template-workshop-5.png",
  340. "status": "PASS",
  341. "captionPresent": true,
  342. "associations": [
  343. {
  344. "testTitle": "场景模板实际加载、保存重开:复装调试车间",
  345. "status": "PASS",
  346. "hashMatches": true
  347. }
  348. ]
  349. },
  350. {
  351. "file": "28-template-outdoor-1.png",
  352. "status": "PASS",
  353. "captionPresent": true,
  354. "associations": [
  355. {
  356. "testTitle": "场景模板实际加载、保存重开:室外综合训练场",
  357. "status": "PASS",
  358. "hashMatches": true
  359. }
  360. ]
  361. },
  362. {
  363. "file": "29-template-confirm-empty.png",
  364. "status": "PASS",
  365. "captionPresent": true,
  366. "associations": [
  367. {
  368. "testTitle": "模板搜索与未保存切换确认保留和放弃",
  369. "status": "PASS",
  370. "hashMatches": true
  371. }
  372. ]
  373. },
  374. {
  375. "file": "30-eight-basic-assets-reopened.png",
  376. "status": "PASS",
  377. "captionPresent": true,
  378. "associations": [
  379. {
  380. "testTitle": "八种基础资源逐项放置、真实拖放、搜索和保存重开",
  381. "status": "PASS",
  382. "hashMatches": true
  383. }
  384. ]
  385. },
  386. {
  387. "file": "31-venue-depot-reopened.png",
  388. "status": "PASS",
  389. "captionPresent": true,
  390. "associations": [
  391. {
  392. "testTitle": "两种整体场地加载、重复放置阻止与显式删除后替换",
  393. "status": "PASS",
  394. "hashMatches": true
  395. }
  396. ]
  397. },
  398. {
  399. "file": "32-venue-terrain-reopened.png",
  400. "status": "PASS",
  401. "captionPresent": true,
  402. "associations": [
  403. {
  404. "testTitle": "两种整体场地加载、重复放置阻止与显式删除后替换",
  405. "status": "PASS",
  406. "hashMatches": true
  407. }
  408. ]
  409. },
  410. {
  411. "file": "33-fox-placed-visible.png",
  412. "status": "PASS",
  413. "captionPresent": true,
  414. "associations": [
  415. {
  416. "testTitle": "模型成果狐狸卡车双击与真实拖入、树搜索和部件隐藏重开",
  417. "status": "PASS",
  418. "hashMatches": true
  419. }
  420. ]
  421. },
  422. {
  423. "file": "34-truck-placed-part-restored.png",
  424. "status": "PASS",
  425. "captionPresent": true,
  426. "associations": [
  427. {
  428. "testTitle": "模型成果狐狸卡车双击与真实拖入、树搜索和部件隐藏重开",
  429. "status": "PASS",
  430. "hashMatches": true
  431. }
  432. ]
  433. },
  434. {
  435. "file": "40-viewport-dark-1920.png",
  436. "status": "PASS",
  437. "captionPresent": true,
  438. "associations": [
  439. {
  440. "testTitle": "真实相机操控、视口拾取、预览禁写和两尺寸主题可读性",
  441. "status": "PASS",
  442. "hashMatches": true
  443. }
  444. ]
  445. },
  446. {
  447. "file": "41-viewport-light-1440.png",
  448. "status": "PASS",
  449. "captionPresent": true,
  450. "associations": [
  451. {
  452. "testTitle": "真实相机操控、视口拾取、预览禁写和两尺寸主题可读性",
  453. "status": "PASS",
  454. "hashMatches": true
  455. }
  456. ]
  457. },
  458. {
  459. "file": "42-fox-preview-original-material.png",
  460. "status": "PASS",
  461. "captionPresent": true,
  462. "associations": [
  463. {
  464. "testTitle": "真实相机操控、视口拾取、预览禁写和两尺寸主题可读性",
  465. "status": "PASS",
  466. "hashMatches": true
  467. }
  468. ]
  469. },
  470. {
  471. "file": "43-real-transform-gizmo.png",
  472. "status": "PASS",
  473. "captionPresent": true,
  474. "associations": [
  475. {
  476. "testTitle": "真实变换手柄移动旋转缩放、吸附与保存重开",
  477. "status": "PASS",
  478. "hashMatches": true
  479. }
  480. ]
  481. },
  482. {
  483. "file": "44-cache-close-save-failure.png",
  484. "status": "PASS",
  485. "captionPresent": true,
  486. "associations": [
  487. {
  488. "testTitle": "缓存标签暂停键盘、草稿恢复以及关闭取消和保存失败留页",
  489. "status": "PASS",
  490. "hashMatches": true
  491. }
  492. ]
  493. },
  494. {
  495. "file": "51-scene-update-only-saved.png",
  496. "status": "PASS",
  497. "captionPresent": true,
  498. "associations": [
  499. {
  500. "testTitle": "仅场景编辑权限:固定模型可加载和保存,不能发布或访问模型页面",
  501. "status": "PASS",
  502. "hashMatches": true
  503. }
  504. ]
  505. },
  506. {
  507. "file": "52-scene-publish-only-no-save.png",
  508. "status": "PASS",
  509. "captionPresent": true,
  510. "associations": [
  511. {
  512. "testTitle": "仅场景发布权限:浏览器发布已存副本,不发送保存或上传请求",
  513. "status": "PASS",
  514. "hashMatches": true
  515. }
  516. ]
  517. },
  518. {
  519. "file": "53-scene-route-access-denied.png",
  520. "status": "PASS",
  521. "captionPresent": true,
  522. "associations": [
  523. {
  524. "testTitle": "无场景页面权限:编辑路由和直接内容接口均拒绝访问",
  525. "status": "PASS",
  526. "hashMatches": true
  527. }
  528. ]
  529. },
  530. {
  531. "file": "54-scene-role-switch-cancel-keeps-draft.png",
  532. "status": "PASS",
  533. "captionPresent": true,
  534. "associations": [
  535. {
  536. "testTitle": "后台场景未保存时切换角色:关闭确认保留草稿,保存切换后重建只读权限",
  537. "status": "PASS",
  538. "hashMatches": true
  539. }
  540. ]
  541. },
  542. {
  543. "file": "55-scene-role-switch-saved-readonly.png",
  544. "status": "PASS",
  545. "captionPresent": true,
  546. "associations": [
  547. {
  548. "testTitle": "后台场景未保存时切换角色:关闭确认保留草稿,保存切换后重建只读权限",
  549. "status": "PASS",
  550. "hashMatches": true
  551. }
  552. ]
  553. },
  554. {
  555. "file": "56-scene-other-tab-recovery-preserved.png",
  556. "status": "PASS",
  557. "captionPresent": true,
  558. "associations": [
  559. {
  560. "testTitle": "双标签各自修改场景:保存和明确丢弃当前页均保留另一页真实恢复稿",
  561. "status": "PASS",
  562. "hashMatches": true
  563. }
  564. ]
  565. },
  566. {
  567. "file": "60-scene-load-failure-retry.png",
  568. "status": "PASS",
  569. "captionPresent": true,
  570. "associations": [
  571. {
  572. "testTitle": "加载失败重试与加载互斥:不展示可写半场景、恢复网络后模型完整加载",
  573. "status": "PASS",
  574. "hashMatches": true
  575. }
  576. ]
  577. },
  578. {
  579. "file": "61-model-loading-blocks-partial-save.png",
  580. "status": "PASS",
  581. "captionPresent": true,
  582. "associations": [
  583. {
  584. "testTitle": "加载失败重试与加载互斥:不展示可写半场景、恢复网络后模型完整加载",
  585. "status": "PASS",
  586. "hashMatches": true
  587. }
  588. ]
  589. },
  590. {
  591. "file": "62-new-edits-preserved-during-save.png",
  592. "status": "PASS",
  593. "captionPresent": true,
  594. "associations": [
  595. {
  596. "testTitle": "延迟保存快照:重复点击只提交一次,期间新编辑保留,旧恢复稿不会误报冲突",
  597. "status": "PASS",
  598. "hashMatches": true
  599. }
  600. ]
  601. },
  602. {
  603. "file": "70-fox-training-scene-reopened.png",
  604. "status": "PASS",
  605. "captionPresent": true,
  606. "associations": [
  607. {
  608. "testTitle": "fox:场景发布后在真实训练编排选择、保存并重开静态模型",
  609. "status": "PASS",
  610. "hashMatches": true
  611. }
  612. ]
  613. },
  614. {
  615. "file": "70-truck-training-scene-reopened.png",
  616. "status": "PASS",
  617. "captionPresent": true,
  618. "associations": [
  619. {
  620. "testTitle": "truck:场景发布后在真实训练编排选择、保存并重开静态模型",
  621. "status": "PASS",
  622. "hashMatches": true
  623. }
  624. ]
  625. }
  626. ]