Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

539 linhas
19 KiB

  1. {
  2. "time": "2026-09-06T10:31:52.558Z",
  3. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  4. "overallStatus": "PASS",
  5. "finalRun": true,
  6. "scope": "默认路由的119项功能;浏览器证据与聚焦单元合同分别计数。较大功能扩展未实施。",
  7. "e2e": {
  8. "tests": 33,
  9. "pass": 33,
  10. "fail": 0,
  11. "retries": 0,
  12. "startTime": "2026-09-06T10:24:04.121Z",
  13. "durationMs": 422286.673,
  14. "complete": true
  15. },
  16. "priorFullRun": {
  17. "pass": 32,
  18. "fail": 1,
  19. "reason": "关闭保存失败用例的提示定位同时匹配成功和失败消息,已限定目标错误;另补列表搜索遮罩消失后截图的等待条件。",
  20. "privateArchived": true,
  21. "countedAsFinal": false
  22. },
  23. "secondFullRun": {
  24. "pass": 32,
  25. "fail": 1,
  26. "reason": "并行加载同源模型时恢复顺序不稳定;已保留文档对象顺序,并以实例编号验证部件隔离和重开。",
  27. "privateArchived": true,
  28. "countedAsFinal": false
  29. },
  30. "frontend": {
  31. "status": "PASS",
  32. "command": "pnpm run build",
  33. "legacyModelPayloadUnchanged": true
  34. },
  35. "backend": {
  36. "status": "PASS",
  37. "command": "mvn -pl ut_tran -am test package",
  38. "tests": 373,
  39. "failures": 0,
  40. "errors": 0,
  41. "skipped": 0,
  42. "suites": 54
  43. },
  44. "runtime": {
  45. "status": "PASS",
  46. "tests": 106,
  47. "pass": 106,
  48. "fail": 0,
  49. "skipped": 0
  50. },
  51. "client": {
  52. "status": "PASS",
  53. "tests": 32,
  54. "pass": 32,
  55. "fail": 0,
  56. "skipped": 0
  57. },
  58. "coverage": [
  59. {
  60. "kind": "unit",
  61. "status": "PASS",
  62. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  63. "testTitle": "scene granular update permission enables editing without the retired shared code",
  64. "featureIds": [
  65. "permission.update"
  66. ],
  67. "source": "tools/scene-closure-engine.test.mjs",
  68. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  69. },
  70. {
  71. "kind": "unit",
  72. "status": "PASS",
  73. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  74. "testTitle": "typing undo/redo stays inside text controls and inactive cached editors ignore global shortcuts",
  75. "featureIds": [
  76. "history.undo",
  77. "history.redo",
  78. "transform.keys",
  79. "lifecycle.cache"
  80. ],
  81. "source": "tools/scene-closure-engine.test.mjs",
  82. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  83. },
  84. {
  85. "kind": "unit",
  86. "status": "PASS",
  87. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  88. "testTitle": "preview locks mutation controls and Delete while Escape restores editing",
  89. "featureIds": [
  90. "preview.lock",
  91. "preview.exit"
  92. ],
  93. "source": "tools/scene-closure-engine.test.mjs",
  94. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  95. },
  96. {
  97. "kind": "unit",
  98. "status": "PASS",
  99. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  100. "testTitle": "real Three ray hits on hidden descendants are excluded before selecting a root or part",
  101. "featureIds": [
  102. "selection.hidden"
  103. ],
  104. "source": "tools/scene-closure-engine.test.mjs",
  105. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  106. },
  107. {
  108. "kind": "unit",
  109. "status": "PASS",
  110. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  111. "testTitle": "deleting a root disposes its geometry and materials after clearing selection",
  112. "featureIds": [
  113. "object.delete",
  114. "lifecycle.destroy"
  115. ],
  116. "source": "tools/scene-closure-engine.test.mjs",
  117. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  118. },
  119. {
  120. "kind": "unit",
  121. "status": "PASS",
  122. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  123. "testTitle": "loading and history restoration preserve an authored camera rather than auto-focusing a vehicle",
  124. "featureIds": [
  125. "json.rendering",
  126. "history.undo"
  127. ],
  128. "source": "tools/scene-closure-engine.test.mjs",
  129. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  130. },
  131. {
  132. "kind": "unit",
  133. "status": "PASS",
  134. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  135. "testTitle": "save B then undo A stays dirty, and redo B returns to the actual saved baseline",
  136. "featureIds": [
  137. "history.undo",
  138. "history.redo"
  139. ],
  140. "source": "tools/scene-closure-engine.test.mjs",
  141. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  142. },
  143. {
  144. "kind": "unit",
  145. "status": "PASS",
  146. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  147. "testTitle": "new resource bindings do not reuse a saved serial after earlier objects were deleted",
  148. "featureIds": [
  149. "validation.bindings"
  150. ],
  151. "source": "tools/scene-closure-engine.test.mjs",
  152. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  153. },
  154. {
  155. "kind": "unit",
  156. "status": "PASS",
  157. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  158. "testTitle": "a failed replacement GLB keeps the previous live scene rather than clearing an unsaved draft",
  159. "featureIds": [
  160. "json.missing-resource"
  161. ],
  162. "source": "tools/scene-closure-engine.test.mjs",
  163. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  164. },
  165. {
  166. "kind": "unit",
  167. "status": "PASS",
  168. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  169. "testTitle": "failed undo restoration retains live objects and keeps the undo target available for retry",
  170. "featureIds": [
  171. "history.failure"
  172. ],
  173. "source": "tools/scene-closure-engine.test.mjs",
  174. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  175. },
  176. {
  177. "kind": "unit",
  178. "status": "PASS",
  179. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  180. "testTitle": "selection highlight cleanup restores source materials and releases its own GPU helper",
  181. "featureIds": [
  182. "selection.highlight",
  183. "lifecycle.destroy"
  184. ],
  185. "source": "tools/scene-closure-engine.test.mjs",
  186. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  187. },
  188. {
  189. "kind": "unit",
  190. "status": "PASS",
  191. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  192. "testTitle": "replacement failure waits for other started loads before restoring the original scene",
  193. "featureIds": [
  194. "history.failure",
  195. "glb.pending"
  196. ],
  197. "source": "tools/scene-closure-engine.test.mjs",
  198. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  199. },
  200. {
  201. "kind": "unit",
  202. "status": "PASS",
  203. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  204. "testTitle": "activity log reflects actual session events and keeps API error details transient",
  205. "featureIds": [
  206. "panel.logs"
  207. ],
  208. "source": "tools/scene-closure-engine.test.mjs",
  209. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  210. },
  211. {
  212. "kind": "unit",
  213. "status": "PASS",
  214. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  215. "testTitle": "verify opens live validation and whitespace binding edits immediately invalidate the active tab",
  216. "featureIds": [
  217. "panel.validation",
  218. "validation.bindings"
  219. ],
  220. "source": "tools/scene-closure-engine.test.mjs",
  221. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  222. },
  223. {
  224. "kind": "unit",
  225. "status": "PASS",
  226. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  227. "testTitle": "model source navigation locates the published owner and falls back without source permission",
  228. "featureIds": [
  229. "assets.model-link"
  230. ],
  231. "source": "tools/scene-closure-engine.test.mjs",
  232. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  233. },
  234. {
  235. "kind": "unit",
  236. "status": "PASS",
  237. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  238. "testTitle": "gizmo scaling across its pivot follows the same strictly positive scale contract as inspector edits",
  239. "featureIds": [
  240. "transform.scale",
  241. "property.scale"
  242. ],
  243. "source": "tools/scene-closure-engine.test.mjs",
  244. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  245. },
  246. {
  247. "kind": "unit",
  248. "status": "PASS",
  249. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  250. "testTitle": "default history caps at 60 snapshots, stops at either edge and discards redo only after a new branch",
  251. "featureIds": [
  252. "history.capacity",
  253. "history.undo",
  254. "history.redo"
  255. ],
  256. "source": "tools/scene-closure-engine.test.mjs",
  257. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  258. },
  259. {
  260. "kind": "unit",
  261. "status": "PASS",
  262. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  263. "testTitle": "two published instances have unique tree part IDs and editing the second persists independently after reopen",
  264. "featureIds": [
  265. "part.transform",
  266. "selection.tree"
  267. ],
  268. "source": "tools/scene-closure-engine.test.mjs",
  269. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  270. },
  271. {
  272. "kind": "unit",
  273. "status": "PASS",
  274. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  275. "testTitle": "legacy duplicate instance IDs migrate only later owners in document order despite reversed GLB completion",
  276. "featureIds": [
  277. "part.transform",
  278. "publish.fixed-model"
  279. ],
  280. "source": "tools/scene-closure-engine.test.mjs",
  281. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  282. },
  283. {
  284. "kind": "unit",
  285. "status": "PASS",
  286. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  287. "testTitle": "successful parallel restores retain document order after delayed GLBs and split-object batches finish out of order",
  288. "featureIds": [
  289. "project.load",
  290. "selection.tree"
  291. ],
  292. "source": "tools/scene-closure-engine.test.mjs",
  293. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  294. },
  295. {
  296. "kind": "unit",
  297. "status": "PASS",
  298. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  299. "testTitle": "closing one selected scene checks its cached guard, leaves unrelated workspaces alone",
  300. "featureIds": [
  301. "leave.cancel",
  302. "lifecycle.cache"
  303. ],
  304. "source": "tools/scene-tab-close.test.mjs",
  305. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  306. },
  307. {
  308. "kind": "unit",
  309. "status": "PASS",
  310. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  311. "testTitle": "cancel or failed save in a later tab never commits earlier draft discard",
  312. "featureIds": [
  313. "leave.cancel",
  314. "leave.save",
  315. "leave.role-switch"
  316. ],
  317. "source": "tools/scene-tab-close.test.mjs",
  318. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  319. },
  320. {
  321. "kind": "unit",
  322. "status": "PASS",
  323. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  324. "testTitle": "all successful confirmations commit together and unmounted guards are removed",
  325. "featureIds": [
  326. "leave.save",
  327. "lifecycle.destroy"
  328. ],
  329. "source": "tools/scene-tab-close.test.mjs",
  330. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  331. },
  332. {
  333. "kind": "unit",
  334. "status": "PASS",
  335. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  336. "testTitle": "fixed model reads the exact version and downloads through its visible scene dependency",
  337. "featureIds": [
  338. "publish.fixed-model",
  339. "permission.update"
  340. ],
  341. "source": "tools/scene-closure-assets.test.mjs",
  342. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  343. },
  344. {
  345. "kind": "unit",
  346. "status": "PASS",
  347. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  348. "testTitle": "an explicit missing code cannot fall back to the first READY asset",
  349. "featureIds": [
  350. "validation.references",
  351. "json.missing-resource"
  352. ],
  353. "source": "tools/scene-closure-assets.test.mjs",
  354. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  355. },
  356. {
  357. "kind": "unit",
  358. "status": "PASS",
  359. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  360. "testTitle": "copied scene keeps its original pseudo URI but reads its own copied asset by stable code",
  361. "featureIds": [
  362. "glb.references"
  363. ],
  364. "source": "tools/scene-closure-assets.test.mjs",
  365. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  366. },
  367. {
  368. "kind": "unit",
  369. "status": "PASS",
  370. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  371. "testTitle": "a failed fixed-version lookup is evicted and the same reference can be retried",
  372. "featureIds": [
  373. "project.retry"
  374. ],
  375. "source": "tools/scene-closure-assets.test.mjs",
  376. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  377. },
  378. {
  379. "kind": "unit",
  380. "status": "PASS",
  381. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  382. "testTitle": "scene image ticket, fixed asset replacement, dependencies and coverUri commit in one versioned PUT",
  383. "featureIds": [
  384. "cover.atomic"
  385. ],
  386. "source": "tools/scene-cover-api.test.mjs",
  387. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  388. },
  389. {
  390. "kind": "unit",
  391. "status": "PASS",
  392. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  393. "testTitle": "capture failure saves content with the previous cover and reports a warning result",
  394. "featureIds": [
  395. "cover.failure"
  396. ],
  397. "source": "tools/scene-cover-api.test.mjs",
  398. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  399. },
  400. {
  401. "kind": "unit",
  402. "status": "PASS",
  403. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  404. "testTitle": "upload conflict propagates without any content PUT",
  405. "featureIds": [
  406. "project.conflict",
  407. "cover.failure"
  408. ],
  409. "source": "tools/scene-cover-api.test.mjs",
  410. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  411. },
  412. {
  413. "kind": "unit",
  414. "status": "PASS",
  415. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  416. "testTitle": "role switch waits through validation, save, and the later queued publish after dirty clears",
  417. "featureIds": [
  418. "publish.concurrent",
  419. "leave.busy",
  420. "leave.role-switch"
  421. ],
  422. "source": "tools/scene-cover-api.test.mjs",
  423. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  424. },
  425. {
  426. "kind": "unit",
  427. "status": "PASS",
  428. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  429. "testTitle": "role switch rechecks resource uploads started while the save was finishing",
  430. "featureIds": [
  431. "leave.busy"
  432. ],
  433. "source": "tools/scene-cover-api.test.mjs",
  434. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  435. },
  436. {
  437. "kind": "unit",
  438. "status": "PASS",
  439. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  440. "testTitle": "copies synchronously without bounds, gizmo, grid or selection glow, then restores before JPEG encoding",
  441. "featureIds": [
  442. "cover.capture",
  443. "selection.highlight",
  444. "view.grid"
  445. ],
  446. "source": "tools/scene-cover-capture.test.mjs",
  447. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  448. },
  449. {
  450. "kind": "unit",
  451. "status": "PASS",
  452. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  453. "testTitle": "fresh skinned placement reaches the requested size and floor after authored scale/pose replay",
  454. "featureIds": [
  455. "assets.model-double-click",
  456. "assets.model-drop"
  457. ],
  458. "source": "tools/scene-model-placement.test.mjs",
  459. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  460. },
  461. {
  462. "kind": "unit",
  463. "status": "PASS",
  464. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  465. "testTitle": "scale input accepts real GLTF normalization factors below 0.05",
  466. "featureIds": [
  467. "property.scale"
  468. ],
  469. "source": "tools/scene-model-placement.test.mjs",
  470. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  471. },
  472. {
  473. "kind": "unit",
  474. "status": "PASS",
  475. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  476. "testTitle": "fixed model dependencies are recursively collected, exact and de-duplicated",
  477. "featureIds": [
  478. "publish.fixed-model"
  479. ],
  480. "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
  481. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  482. },
  483. {
  484. "kind": "unit",
  485. "status": "PASS",
  486. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  487. "testTitle": "recovery conflict defaults to preserve and only explicit discard may remove it",
  488. "featureIds": [
  489. "recovery.discard"
  490. ],
  491. "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
  492. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  493. },
  494. {
  495. "kind": "unit",
  496. "status": "PASS",
  497. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  498. "testTitle": "per-page recovery keys prevent copied tabs from deleting each other checkpoints",
  499. "featureIds": [
  500. "recovery.multi-session"
  501. ],
  502. "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
  503. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  504. },
  505. {
  506. "kind": "unit",
  507. "status": "PASS",
  508. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  509. "testTitle": "project operation queue serializes upload, save and publish including failures",
  510. "featureIds": [
  511. "publish.concurrent"
  512. ],
  513. "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
  514. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  515. },
  516. {
  517. "kind": "unit",
  518. "status": "PASS",
  519. "runId": "scene-editor-2026-09-06T10:24:04.121Z",
  520. "testTitle": "an upload finishing after a project switch cannot register into the new session",
  521. "featureIds": [
  522. "glb.pending",
  523. "lifecycle.destroy"
  524. ],
  525. "source": "../unreal_tran_web/src/features/scene-legacy/contentApiClient.test.mjs",
  526. "note": "实际执行真实方法/纯函数合同,未冒称浏览器操作"
  527. }
  528. ],
  529. "database": {
  530. "ddlChanged": false,
  531. "reason": "未新增或修改表结构;仅注册并清理测试副本、账号和角色。"
  532. },
  533. "logSha256": {
  534. "web-build-final.log": "60909f032950078c3fc1e979de879a63626335d271a343f1eec3e9181c79a2bb",
  535. "api-build.log": "b7b7dfccd66ffba22116a7f2d1e034b0ec608b8a33d9b57226ff91c330b6abcf",
  536. "node-tests-final.log": "22f353c2a1c09f31c604fcaf7a4759cc2d652900e7090875b036b8aacc7ea56c",
  537. "scene-api-tests-final.log": "e37ac6f5e235ae4699e9b26601f72717927decbda5d7df616f680d23e2945897"
  538. }
  539. }