From 8f1a22485d15df7825dfc7de2f9f8a5d49006f37 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Mon, 21 Sep 2026 13:34:44 +0800 Subject: [PATCH] Record workbench release and final AC BC verification --- .../workbench/cloud.report.json | 14 + .../workbench/deployment.report.json | 25 + .../workbench/history.report.json | 1 + .../workbench/xyzac-regression.report.json | 983 ++++++++++++++++++ .../workbench/xyzbc-regression.report.json | 983 ++++++++++++++++++ docs/glb-machine-manager/01-项目功能内容.md | 2 + .../02-项目程序开发详细步骤.md | 2 + docs/glb-machine-manager/03-推进台账.md | 2 + docs/glb-machine-manager/05-验收证据.md | 5 +- docs/glb-machine-manager/06-决策记录.md | 4 + 10 files changed, 2020 insertions(+), 1 deletion(-) create mode 100644 coverage/glb-machine-manager/workbench/cloud.report.json create mode 100644 coverage/glb-machine-manager/workbench/deployment.report.json create mode 100644 coverage/glb-machine-manager/workbench/history.report.json create mode 100644 coverage/glb-machine-manager/workbench/xyzac-regression.report.json create mode 100644 coverage/glb-machine-manager/workbench/xyzbc-regression.report.json diff --git a/coverage/glb-machine-manager/workbench/cloud.report.json b/coverage/glb-machine-manager/workbench/cloud.report.json new file mode 100644 index 0000000..6185ff6 --- /dev/null +++ b/coverage/glb-machine-manager/workbench/cloud.report.json @@ -0,0 +1,14 @@ +{ + "report_id": "GLB-MGR-E14", + "status": "verified", + "url": "https://49.232.250.35:58015/", + "checks": [ + "search expands real nested nodes; axis overview locates selection; binding undo/redo", + "empty input preserves last pose; repeated selection/input does not concatenate; single-axis step and reset", + "TRT forbidden offset blocks export before build; calibration undo/redo", + "view presets and selected fitting; deletion undo restores model with all axis bindings", + "failed batch import leaves existing assembly intact", + "live mode locks edits; desktop, short viewport and narrow viewport keep footer visible without overflow" + ], + "errors": [] +} diff --git a/coverage/glb-machine-manager/workbench/deployment.report.json b/coverage/glb-machine-manager/workbench/deployment.report.json new file mode 100644 index 0000000..dfdf0f5 --- /dev/null +++ b/coverage/glb-machine-manager/workbench/deployment.report.json @@ -0,0 +1,25 @@ +{ + "report_id": "GLB-MGR-E14-CLOUD", + "status": "verified", + "checked_at": "2026-09-21T05:34:44.342351+00:00", + "url": "https://49.232.250.35:58015/", + "release": "/var/www/linuxcnc-wasm-58015/releases/20260921-linuxcnc-wasm-a7233bc", + "source_commit": "a7233bc8e4c4ccea4a4906d2d947ba84b549c39d", + "bundle": "assets/index-nddrUCCV.js", + "archive_sha256": "c9b69be1bc3f1f1e40693eb30c4dffb140aa92129c351ac509a8430457f220c7", + "cloud_checks": [ + "search expands real nested nodes; axis overview locates selection; binding undo/redo", + "empty input preserves last pose; repeated selection/input does not concatenate; single-axis step and reset", + "TRT forbidden offset blocks export before build; calibration undo/redo", + "view presets and selected fitting; deletion undo restores model with all axis bindings", + "failed batch import leaves existing assembly intact", + "live mode locks edits; desktop, short viewport and narrow viewport keep footer visible without overflow" + ], + "browser_errors": [], + "local_ac_bc_regression": { + "ac": "xyzac-regression.report.json", + "bc": "xyzbc-regression.report.json", + "samples_per_machine": 8, + "status": "verified" + } +} diff --git a/coverage/glb-machine-manager/workbench/history.report.json b/coverage/glb-machine-manager/workbench/history.report.json new file mode 100644 index 0000000..e9e2e25 --- /dev/null +++ b/coverage/glb-machine-manager/workbench/history.report.json @@ -0,0 +1 @@ +{"report_id":"GLB-MGR-E14-HISTORY","status":"verified","checks":["undo/redo","duplicate edits ignored","new edit discards redo","30-entry bound","clear preserves draft"]} diff --git a/coverage/glb-machine-manager/workbench/xyzac-regression.report.json b/coverage/glb-machine-manager/workbench/xyzac-regression.report.json new file mode 100644 index 0000000..27fa21f --- /dev/null +++ b/coverage/glb-machine-manager/workbench/xyzac-regression.report.json @@ -0,0 +1,983 @@ +{ + "report_id": "GLB-MGR-E13", + "status": "verified", + "url": "http://127.0.0.1:5180/", + "machines": [ + { + "coordinates": "XYZAC", + "checks": [ + "fixed or single DOF", + "direction/sign and parent isolation", + "pivot and child inheritance", + "duplicate axis rejected", + "JSON on scene and real bed", + "GLB roundtrip restores calibration and bindings", + "single-file apply", + "WASM runtime axis mapping", + "live dialog follows actual joints" + ], + "nodeCount": 134, + "samples": [ + { + "tick": 85, + "q": [ + 1.2389134479519215, + 0.6574092294801889, + 0.6448116444857956, + 1.2603902790766386, + 1.8905854186149578 + ], + "nodes": { + "X": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2", + "localMm": [ + 468.8777588916775, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.806400633739475, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -203.618586263455, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.8460937508812, + 18.940227031707764, + 1.3640552739163505 + ] + }, + "Z": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 375.2805213785855 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.05413065044785, + 22.693032245493615, + -7.676433922860993 + ] + }, + "A": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.09358363453630855, + 0, + 0, + 0.9956114218644615 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.06200155297278678, + 0.998076052928314 + ], + "world": [ + -18.516113758087158, + 9.164775530362324, + -8.403619073277603 + ] + } + } + }, + { + "tick": 180, + "q": [ + 2.7007255572479774, + 1.5379467155631636, + 1.4830952979680165, + 2.811733782839189, + 4.217600674258783 + ], + "nodes": { + "X": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2", + "localMm": [ + 470.3395710009736, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.791782512646513, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -202.738048777372, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.831475629788237, + 18.940227031707764, + 1.3728606487771806 + ] + }, + "Z": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 374.44223772510327 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.039512529354887, + 22.684649408958794, + -7.667628548000163 + ] + }, + "A": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.08009685716826766, + 0, + 0, + 0.9967870853255304 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.04172219310644397, + 0.999129250198586 + ], + "world": [ + -18.516113758087158, + 8.991635804504972, + -8.41027160637488 + ] + } + } + }, + { + "tick": 275, + "q": [ + 4.085999929781512, + 2.4909264365477166, + 2.3779308599752444, + 4.363077286601698, + 6.544615929902546 + ], + "nodes": { + "X": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2", + "localMm": [ + 471.7248453735071, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.77792976892118, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -201.78506905638747, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.817622886062903, + 18.940227031707764, + 1.382390445987026 + ] + }, + "Z": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 373.5474021630961 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.025659785629554, + 22.67570105333872, + -7.658098750790318 + ] + }, + "A": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.06659540002082798, + 0, + 0, + 0.9977800622863067 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.021425628607248472, + 0.9997704448716136 + ], + "world": [ + -18.516113758087158, + 8.818379437902781, + -8.412234333654848 + ] + } + } + }, + { + "tick": 370, + "q": [ + 5.387598173682366, + 3.5088324139082143, + 3.3365312733855843, + 5.914420790364206, + 8.871631185546308 + ], + "nodes": { + "X": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2", + "localMm": [ + 473.02644361740795, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.76491378648217, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -200.76716307902697, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.804606903623892, + 18.940227031707764, + 1.3925695057606307 + ] + }, + "Z": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 372.58880174968573 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.012643803190542, + 22.66611504920462, + -7.647919691016713 + ] + }, + "A": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.05308173757825106, + 0, + 0, + 0.9985901707585919 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.001120229000250849, + 0.9999993725432966 + ], + "world": [ + -18.516113758087158, + 8.645133439219864, + -8.409505816305332 + ] + } + } + }, + { + "tick": 465, + "q": [ + 6.598646792860076, + 4.583380703310395, + 4.365425131049058, + 7.46576429412713, + 11.198646441190695 + ], + "nodes": { + "X": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2", + "localMm": [ + 474.2374922365857, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.752803300290395, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -199.69261478962477, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.79249641743212, + 18.940227031707764, + 1.403314988654653 + ] + }, + "Z": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 371.55990789202224 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.00053331699877, + 22.655826110627984, + -7.6371742081226905 + ] + }, + "A": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.039558346561724904, + 0, + 0, + 0.9992172622694738 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.01918563254624356, + 0.9998159388126399 + ], + "world": [ + -18.516113758087158, + 8.472024809519901, + -8.402088054514548 + ] + } + } + }, + { + "tick": 555, + "q": [ + 7.656454328643159, + 5.64548233448603, + 5.410254575943578, + 8.935458139797525, + 13.40318720969629 + ], + "nodes": { + "X": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2", + "localMm": [ + 475.2952997723687, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.74222522493256, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -198.63051315844916, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.781918342074285, + 18.940227031707764, + 1.4139360049664091 + ] + }, + "Z": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 370.51507844712773 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.989955241640935, + 22.64537781617904, + -7.626553191810935 + ] + }, + "A": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.026739985102743145, + 0, + 0, + 0.9996424226675782 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.0384156022232577, + 0.9992618483189601 + ], + "world": [ + -18.516113758087158, + 8.30826888076431, + -8.3907400525114 + ] + } + } + }, + { + "tick": 655, + "q": [ + 8.72303975359065, + 6.865798191834175, + 6.656398201686621, + 10.568451301653525, + 15.852676952480286 + ], + "nodes": { + "X": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2", + "localMm": [ + 476.36188519731627, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.731559370683087, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -197.41019730110102, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.77125248782481, + 18.940227031707764, + 1.4261391635398906 + ] + }, + "Z": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 369.2689348213847 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.97928938739146, + 22.632916379921607, + -7.614350033237454 + ] + }, + "A": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.012492294152387668, + 0, + 0, + 0.999921968248928 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.0597652512848917, + 0.9982124597192993 + ], + "world": [ + -18.516113758087158, + 8.126727064793355, + -8.37320998204645 + ] + } + } + }, + { + "tick": 745, + "q": [ + 9.579524288290253, + 7.990781709641391, + 7.858468677864376, + 12.038145147323924, + 18.057217720985886 + ], + "nodes": { + "X": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2", + "localMm": [ + 477.2183697320158, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.72299452533609, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -196.28521378329378, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.762687642477815, + 18.940227031707764, + 1.4373889987179629 + ] + }, + "Z": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 368.0668643452069 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.970724542044465, + 22.62089567515983, + -7.603100198059381 + ] + }, + "A": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0.0003328792010827427, + 0, + 0, + 0.9999999445957172 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "5b0ea1d5-33d0-407f-95ef-ddf8afbf315d:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.07895686550406936, + 0.9968780333570262 + ], + "world": [ + -18.516113758087158, + 7.963825398322858, + -8.353015220022485 + ] + } + } + } + ], + "liveSample": { + "q": { + "x": 5.797354360536403, + "y": 9.401123543630533, + "z": 2.617520495853631, + "a": 2.0821562164739387, + "b": 0, + "c": 11.136927027456565 + }, + "joints": { + "X": { + "localMm": [ + 478.436199804262, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8710816224613631, + 0.34002411365509033, + 1.488389492034912 + ] + }, + "Y": { + "localMm": [ + -3.9693117141723633, + -194.87487194930463, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8750509341755355, + 0.1451492417057857, + 1.8940227031707764 + ] + }, + "Z": { + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 366.30781252721766 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8958546241322005, + -0.7588996779719487, + 2.2603305156979943 + ] + }, + "A": { + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0.01816924093501159, + 0, + 0, + 0.9998349257171634 + ], + "world": [ + -1.8515222072601318, + -0.20127654075622559, + 0.8832522630691528 + ] + }, + "C": { + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.09703509639825511, + 0.9952809603659568 + ], + "world": [ + -1.8516113758087158, + -0.8317997114621495, + 0.7738239446948962 + ] + } + } + } + } + ], + "browser_errors": [] +} diff --git a/coverage/glb-machine-manager/workbench/xyzbc-regression.report.json b/coverage/glb-machine-manager/workbench/xyzbc-regression.report.json new file mode 100644 index 0000000..1f7105b --- /dev/null +++ b/coverage/glb-machine-manager/workbench/xyzbc-regression.report.json @@ -0,0 +1,983 @@ +{ + "report_id": "GLB-MGR-E13", + "status": "verified", + "url": "http://127.0.0.1:5180/", + "machines": [ + { + "coordinates": "XYZBC", + "checks": [ + "fixed or single DOF", + "direction/sign and parent isolation", + "pivot and child inheritance", + "duplicate axis rejected", + "JSON on scene and real bed", + "GLB roundtrip restores calibration and bindings", + "single-file apply", + "WASM runtime axis mapping", + "live dialog follows actual joints" + ], + "nodeCount": 134, + "samples": [ + { + "tick": 90, + "q": [ + 1.3329950123827954, + 0.7177480791808708, + 0.6399756098721868, + 1.3420399371694114, + 2.013059905754117 + ], + "nodes": { + "X": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2", + "localMm": [ + 468.9718404561084, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.805459818095166, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -203.55824741375432, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.84515293523689, + 18.940227031707764, + 1.3646586624133574 + ] + }, + "Z": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 375.2853574131991 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.05318983480354, + 22.693080605839754, + -7.675830534363986 + ] + }, + "B": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.09287421014032093, + 0, + 0.9956778500553337 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.06093478253640957, + 0.9981417495913296 + ], + "world": [ + -18.356217359868296, + 7.982795032364486, + -8.353592157363893 + ] + } + } + }, + { + "tick": 180, + "q": [ + 2.766438027705197, + 1.6088474279360891, + 1.2716921368117247, + 2.811733782839189, + 4.217600674258783 + ], + "nodes": { + "X": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2", + "localMm": [ + 470.4052834714308, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.791125387941943, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -202.66714806499908, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.830818505083666, + 18.940227031707764, + 1.3735696559009098 + ] + }, + "Z": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 374.65364088625955 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.038855404650317, + 22.686763440570356, + -7.6669195408764335 + ] + }, + "B": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.08009685716826766, + 0, + 0.9967870853255304 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.04172219310644397, + 0.999129250198586 + ], + "world": [ + -18.378063637032554, + 7.978996384122459, + -8.353592157363893 + ] + } + } + }, + { + "tick": 275, + "q": [ + 4.240122439171268, + 2.664612323566039, + 1.8643679838555824, + 4.363077286601698, + 6.544615929902546 + ], + "nodes": { + "X": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2", + "localMm": [ + 471.87896788289686, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.77638854382728, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -201.61138316936913, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.816081660969004, + 18.940227031707764, + 1.3841273048572091 + ] + }, + "Z": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 374.0609650392157 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.024118560535655, + 22.68083668209992, + -7.656361891920135 + ] + }, + "B": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.06659540002082798, + 0, + 0.9977800622863067 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.021425628607248472, + 0.9997704448716136 + ], + "world": [ + -18.40122120764243, + 7.975595975242779, + -8.353592157363893 + ] + } + } + }, + { + "tick": 365, + "q": [ + 5.590120449209219, + 3.769665818331871, + 2.3605087594884826, + 5.832771132271442, + 8.749156698407162 + ], + "nodes": { + "X": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2", + "localMm": [ + 473.2289658929348, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.762888563726904, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -200.5063296746033, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.802581680868627, + 18.940227031707764, + 1.3951778398048678 + ] + }, + "Z": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 373.5648242635828 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.010618580435278, + 22.67587527434359, + -7.645311356972476 + ] + }, + "B": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.05379324718442026, + 0, + 0.9985520950643265 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.0021890190114552117, + 0.9999976040950136 + ], + "world": [ + -18.423237322685893, + 7.972953962222888, + -8.353592157363893 + ] + } + } + }, + { + "tick": 460, + "q": [ + 6.957563664607322, + 5.041874761097972, + 2.8212639336800454, + 7.38411463603433, + 11.076171954051496 + ], + "nodes": { + "X": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2", + "localMm": [ + 474.5964091083329, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.74921413157292, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -199.2341207318372, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.788907248714644, + 18.940227031707764, + 1.4078999292325285 + ] + }, + "Z": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 373.10406908939126 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.996944148281294, + 22.671267722601673, + -7.632589267544815 + ] + }, + "B": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.04027030642080173, + 0, + 0.9991888222056804 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.018117026989570854, + 0.9998358731977259 + ], + "world": [ + -18.44654192054848, + 7.970778743713527, + -8.353592157363893 + ] + } + } + }, + { + "tick": 550, + "q": [ + 8.19086819781266, + 6.342427968934119, + 3.2043989406756506, + 8.853808481704728, + 13.280712722557091 + ], + "nodes": { + "X": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2", + "localMm": [ + 475.82971364153826, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.736881086240867, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -197.93356752400106, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.77657420338259, + 18.940227031707764, + 1.42090546131089 + ] + }, + "Z": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 372.7209340823957 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.98461110294924, + 22.667436372531718, + -7.6195837354664535 + ] + }, + "B": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.027452251154261215, + 0, + 0.9996231159324815 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.03734757789035257, + 0.9993023358452255 + ], + "world": [ + -18.46866667973197, + 7.969300709384652, + -8.353592157363893 + ] + } + } + }, + { + "tick": 640, + "q": [ + 9.356884433005701, + 7.730651003974226, + 3.542287286077644, + 10.323502327375126, + 15.485253491062688 + ], + "nodes": { + "X": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2", + "localMm": [ + 476.9957298767313, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.725220923888937, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -196.54534448896098, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.76491404103066, + 18.940227031707764, + 1.434787691661291 + ] + }, + "Z": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 372.38304573699367 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.97295094059731, + 22.6640574890777, + -7.605701505116053 + ] + }, + "B": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.01462968023530727, + 0, + 0.9998929805015198 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.05656430649923953, + 0.9983989579473028 + ], + "world": [ + -18.490822069456588, + 7.968390621171865, + -8.353592157363893 + ] + } + } + }, + { + "tick": 735, + "q": [ + 10.508052284276753, + 9.28531166241756, + 3.8576896962603726, + 11.874845831138323, + 17.812268746707485 + ], + "nodes": { + "X": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2", + "localMm": [ + 478.14689772800233, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.713709245376226, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -194.9906838305176, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.75340236251795, + 18.940227031707764, + 1.4503342982457244 + ] + }, + "Z": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 372.0676433268109 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.9614392620846, + 22.66090346497587, + -7.590154898531619 + ] + }, + "B": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.0010921759424831284, + 0, + 0.9999994035756775 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "aeb4c700-d786-4c4c-9a82-f6888bd4f7c0:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.07682577715235232, + 0.9970445325886588 + ], + "world": [ + -18.51422543738136, + 7.9680467798152925, + -8.353592157363893 + ] + } + } + } + ], + "liveSample": { + "q": { + "x": 7.335436151103451, + "y": 11.735957758464831, + "z": -2.7569792395159682, + "a": 0, + "b": 2.3271051907522295, + "c": 11.545175317920382 + }, + "joints": { + "X": { + "localMm": [ + 479.974281594829, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8695435406707959, + 0.34002411365509033, + 1.488389492034912 + ] + }, + "Y": { + "localMm": [ + -3.9693117141723633, + -192.54003773447033, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8735128523849682, + 0.14748407592062, + 1.8940227031707764 + ] + }, + "Z": { + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 371.68231226258723 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8943165423416333, + -0.7565648437571144, + 2.2657050154333636 + ] + }, + "B": { + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + 0.020306427987709715, + 0, + 0.9997938032326366 + ], + "world": [ + -1.8515222072601318, + -0.20127654075622559, + 0.8832522630691528 + ] + }, + "C": { + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.10058029927953424, + 0.9949289438934015 + ], + "world": [ + -1.8551214621264505, + -0.8353592157363892, + 0.7968795806706839 + ] + } + } + } + } + ], + "browser_errors": [] +} diff --git a/docs/glb-machine-manager/01-项目功能内容.md b/docs/glb-machine-manager/01-项目功能内容.md index 5da36cf..89e7da6 100644 --- a/docs/glb-machine-manager/01-项目功能内容.md +++ b/docs/glb-machine-manager/01-项目功能内容.md @@ -52,3 +52,5 @@ 15. 树中每个节点独立编辑相对父级的位置(mm)和 XYZ 欧拉姿态(deg)。数值输入回显节点当前局部值,旋转以自身原点为中心;子节点随动,父级和兄弟节点不变。源 GLB 保留,节点编辑保存在草稿并进入组合导出。 16. MGR-17:每个节点可配置一个 XYZABC 自由度、父坐标轴方向和正负向。配置以 `linuxcnc.joint-model/1` JSON 写入原 userData,包含层级、零姿态、轴索引、物理零点和 RTCP 标定。管理器实时跟随与正式机床共用驱动逻辑;详见 [07-单自由度JSON与实时驱动](07-单自由度JSON与实时驱动.md)。 + +17. 工程工作台:独立滚动的结构/运动/标定页签,固定预览与底部操作区;层级搜索、轴定位、相机预设;30 步草稿撤销/重做;单轴步进;无效输入保持上一个有效值并禁止应用/导出。 diff --git a/docs/glb-machine-manager/02-项目程序开发详细步骤.md b/docs/glb-machine-manager/02-项目程序开发详细步骤.md index dc0663d..42a1dd5 100644 --- a/docs/glb-machine-manager/02-项目程序开发详细步骤.md +++ b/docs/glb-machine-manager/02-项目程序开发详细步骤.md @@ -17,3 +17,5 @@ 每轮只推进任务矩阵中依赖已满足的任务。代码完成后必须同步更新 03、04、05;若改变数据契约或坐标定义,先更新 06。 14. `MGR-17`:定义单自由度 JSON/Schema;收敛 UI 输入;增加单文件层级应用和 GLB 恢复;接入实际 WASM 关节位置;验证每轴、反向、物理零点、导出往返和锁定行为。 + +15. `MGR-18`:工作区布局与层级导航;草稿历史/资源生命周期;数值错误状态和机型标定校验;重复选中输入回归;桌面/窄屏/矮屏及 AC/BC 实时驱动验收。 diff --git a/docs/glb-machine-manager/03-推进台账.md b/docs/glb-machine-manager/03-推进台账.md index ea396b2..5b8eed1 100644 --- a/docs/glb-machine-manager/03-推进台账.md +++ b/docs/glb-machine-manager/03-推进台账.md @@ -101,3 +101,5 @@ - 数值输入支持空值/非法值标红,错误不会写入状态;AC/BC 禁止沿倾转轴的非法偏置;批量导入失败保持现有装配。 - 单自由度输入提供步长 `0.1/1/10` 和本轴归零,所有运动仍使用父级方向和物理零点。 - E14 工作台浏览器验收通过:搜索、总览定位、撤销/重做、错误输入、标定校验、视图、删除恢复、导入失败保护、实时锁定和 1440/1154/720 视口无溢出。 + +- 最终 AC/BC 完整回归分别通过,各 8 个动态 tick;线上 E14 工作台回归通过。已发布 `a7233bc`,资源 `index-nddrUCCV.js`。 diff --git a/docs/glb-machine-manager/05-验收证据.md b/docs/glb-machine-manager/05-验收证据.md index 3f200ca..7cc9281 100644 --- a/docs/glb-machine-manager/05-验收证据.md +++ b/docs/glb-machine-manager/05-验收证据.md @@ -132,7 +132,10 @@ ## E14 / R12 / 工程化工作台体验 - 命令:`node scripts/test_machine_manager_workbench.mjs`。 -- report_id:`GLB-MGR-E14`;报告:`coverage/glb-machine-manager/workbench/browser.report.json`;SHA-256:`5be35a6bac22b90854f6d001400ec48b92f2060e2b2edaeb8f80e5fb3bc4eb`。 +- report_id:`GLB-MGR-E14`;报告:`coverage/glb-machine-manager/workbench/browser.report.json`;SHA-256:`5be35a6bac22b90854f6d001400ceec48b92f2060e2b2edaeb8f80e5fb3bc4eb`。 - 覆盖:深层节点搜索、搜索展开、轴总览定位、撤销/重做、空数值输入校验、TRT 非法偏置阻止应用/导出、视图预设、删除撤销、坏文件批量导入保护、实时跟随锁定、桌面/矮窗口/窄窗口布局。 - 截图:`workbench/desktop.png` SHA-256 `876c2cf6d1edf7093752510561973117f8de9b99ac48a14654aee9527b07d533`;`workbench/viewport-1154.png` SHA-256 `90a32870ff473e05aee4caeb2cc84cc0c3144882463893b2ac5fc2e4b95efbc1`;`workbench/viewport-720.png` SHA-256 `7ca1f6010a51274659d663fb72f85c5216de869746976db33c5c007e47a6d964`。 - 数学历史测试:`node scripts/test_machine_manager_history.mjs`,`GLB-MGR-E14-HISTORY` verified。 + +- 最终回归:`workbench/xyzac-regression.report.json`、`xyzbc-regression.report.json` 均 verified,各 8 个运动 tick,含模型 JSON/GLB 往返、轴符号、零点、实时跟随和五轴运动。输入框选中切换使用绘制前同步,重复填值不会拼接。 +- 线上 `https://49.232.250.35:58015/` 已发布功能代码 `a7233bc`,资源 `assets/index-nddrUCCV.js`;E14 工作台完整回归 verified,浏览器错误 0。发布证据:`workbench/cloud.report.json`、`workbench/deployment.report.json`。 diff --git a/docs/glb-machine-manager/06-决策记录.md b/docs/glb-machine-manager/06-决策记录.md index 8231614..45d14e8 100644 --- a/docs/glb-machine-manager/06-决策记录.md +++ b/docs/glb-machine-manager/06-决策记录.md @@ -59,3 +59,7 @@ GLB 树节点 ID 使用导入时的子节点索引路径,不使用可能重复 ## D15 / 单自由度约束与 JSON 运动契约(替代 D14 的自由编辑) 每个运动节点只能绑定一个 CNC 轴,每轴只绑定一个节点。固定装配节点无自由度。输入为相对物理零点的单个关节量;保留导入零姿态,禁止通过其他数值或自由操纵器绕过约束。节点身份使用稳定 ID,实际绘制以父级方向和正负号驱动。以 `linuxcnc.joint-model/1` 扩展既有 userData,不更换数控 RTCP 求解器;URDF 坐标框架与视觉装配分离以避免双重运动。临时测试姿态不保存为零姿态。 + +## D16 / 草稿可撤销、错误输入不执行 + +草稿历史只保存配置快照并共享源模型资源,上限 30 步;只有已脱离当前草稿和历史的资产才释放。关闭窗口保留会话草稿,完整持久保存使用导出 GLB,界面明确显示未应用/已应用/已导出状态。非法或空数值只存在于输入框,不驱动模型,不隐式归零;校验状态独立于操作消息显示。实时跟随时配置只读,数据不可用时保持最后姿态且允许退出。