diff --git a/reports/bridge-entry-view-20260925-before/result.json b/reports/bridge-entry-view-20260925-before/result.json new file mode 100644 index 0000000..da7a262 --- /dev/null +++ b/reports/bridge-entry-view-20260925-before/result.json @@ -0,0 +1,534 @@ +{ + "pass": true, + "baseline": true, + "checks": [ + { + "task": "86", + "view": "entry", + "snapshot": null, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "210px", + "width": 210, + "title": "" + } + }, + { + "task": "86", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": true, + "camera": [ + 7.845729572806127, + 4.314302505404388, + 9.770153807645361 + ], + "target": [ + 2.220446049250313e-16, + 0.9835682527980127, + 0 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 526.099348545458, + "y": 269.81826219289417, + "w": 439.3860665242073, + "h": 255.54519097874947 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8371859555733263, + 1.9671365109410388, + 8 + ] + } + ], + "pending": false + } + }, + { + "task": "86", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": true, + "camera": [ + 7.845729572806127, + 4.314302505404388, + 9.770153807645361 + ], + "target": [ + 2.220446049250313e-16, + 0.9835682527980127, + 0 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 526.099348545458, + "y": 269.81826219289417, + "w": 439.3860665242072, + "h": 255.54519097874947 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8371859555733263, + 1.9671365109410388, + 8 + ] + } + ], + "pending": false + } + }, + { + "task": "87", + "view": "entry", + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "210px", + "width": 210, + "title": "" + } + }, + { + "task": "87", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": true, + "camera": [ + 11.200418933268718, + 6.633106461001029, + 11.970584313997993 + ], + "target": [ + 1.6883683848926894, + 1.0123493187788344, + -0.13566183848059055 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 542.2461617223871, + "y": 271.8017853857075, + "w": 309.155255300627, + "h": 197.3465556112713 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + } + }, + { + "task": "87", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": true, + "camera": [ + 11.200418933268718, + 6.633106461001029, + 11.970584313997993 + ], + "target": [ + 1.6883683848926894, + 1.0123493187788344, + -0.13566183848059077 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 542.2461617223871, + "y": 271.8017853857075, + "w": 309.1552553006269, + "h": 197.3465556112713 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + } + }, + { + "task": "88", + "view": "entry", + "snapshot": null, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "210px", + "width": 210, + "title": "" + } + }, + { + "task": "88", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": true, + "camera": [ + 8.639348853171596, + 6.1825087786854676, + 11.000065353323455 + ], + "target": [ + -0.1101510832458732, + 1.0123497253478748, + -0.13566183848059052 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 592.6026123888879, + "y": 277.2687781279076, + "w": 336.6507106400966, + "h": 238.43354191317405 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "3封口袋.glb", + "size": [ + 0.08018212955272758, + 0.08336285111041264, + 0.08369391474136734 + ] + }, + { + "name": "牛皮纸.glb", + "size": [ + 0.254213809967041, + 0.2239204597473145, + 3.648127636091125e-8 + ] + } + ], + "pending": false + } + }, + { + "task": "88", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": true, + "camera": [ + 8.639348853171596, + 6.1825087786854676, + 11.000065353323455 + ], + "target": [ + -0.11015108324587322, + 1.0123497253478748, + -0.13566183848059052 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 592.6026123888879, + "y": 277.2687781279076, + "w": 336.6507106400966, + "h": 238.43354191317405 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "3封口袋.glb", + "size": [ + 0.08018212955272758, + 0.08336285111041264, + 0.08369391474136734 + ] + }, + { + "name": "牛皮纸.glb", + "size": [ + 0.254213809967041, + 0.2239204597473145, + 3.648127636091125e-8 + ] + } + ], + "pending": false + } + }, + { + "task": "89", + "view": "entry", + "snapshot": null, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "210px", + "width": 210, + "title": "" + } + }, + { + "task": "89", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": true, + "camera": [ + 7.72499140270015, + 5.577117406210051, + 9.696145474145634 + ], + "target": [ + -5.7220459037665705e-8, + 1.0123497253478748, + -0.13566183848059055 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 554.8411253673859, + "y": 266.43276739954246, + "w": 384.8452167247707, + "h": 271.40429919559136 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "4封口袋.glb", + "size": [ + 0.29693386419402845, + 0.017112711789406765, + 1.6563524089616042 + ] + } + ], + "pending": false + } + }, + { + "task": "89", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": true, + "camera": [ + 7.72499140270015, + 5.577117406210051, + 9.696145474145634 + ], + "target": [ + -5.7220459037665705e-8, + 1.0123497253478748, + -0.13566183848059055 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 554.8411253673859, + "y": 266.43276739954246, + "w": 384.8452167247707, + "h": 271.40429919559136 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "4封口袋.glb", + "size": [ + 0.29693386419402845, + 0.017112711789406765, + 1.6563524089616042 + ] + } + ], + "pending": false + } + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-entry-view-20260925-before/task-86-entry.png b/reports/bridge-entry-view-20260925-before/task-86-entry.png new file mode 100644 index 0000000..c04bfe5 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-86-entry.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-86-overview.png b/reports/bridge-entry-view-20260925-before/task-86-overview.png new file mode 100644 index 0000000..742d808 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-86-overview.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-86-reset.png b/reports/bridge-entry-view-20260925-before/task-86-reset.png new file mode 100644 index 0000000..1664935 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-86-reset.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-87-entry.png b/reports/bridge-entry-view-20260925-before/task-87-entry.png new file mode 100644 index 0000000..17124b5 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-87-entry.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-87-overview.png b/reports/bridge-entry-view-20260925-before/task-87-overview.png new file mode 100644 index 0000000..134f491 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-87-overview.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-87-reset.png b/reports/bridge-entry-view-20260925-before/task-87-reset.png new file mode 100644 index 0000000..2b6c426 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-87-reset.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-88-entry.png b/reports/bridge-entry-view-20260925-before/task-88-entry.png new file mode 100644 index 0000000..9880ce2 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-88-entry.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-88-overview.png b/reports/bridge-entry-view-20260925-before/task-88-overview.png new file mode 100644 index 0000000..1087f08 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-88-overview.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-88-reset.png b/reports/bridge-entry-view-20260925-before/task-88-reset.png new file mode 100644 index 0000000..38a33af Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-88-reset.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-89-entry.png b/reports/bridge-entry-view-20260925-before/task-89-entry.png new file mode 100644 index 0000000..f1d2f63 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-89-entry.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-89-overview.png b/reports/bridge-entry-view-20260925-before/task-89-overview.png new file mode 100644 index 0000000..3f3fcf1 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-89-overview.png differ diff --git a/reports/bridge-entry-view-20260925-before/task-89-reset.png b/reports/bridge-entry-view-20260925-before/task-89-reset.png new file mode 100644 index 0000000..ff5a3a8 Binary files /dev/null and b/reports/bridge-entry-view-20260925-before/task-89-reset.png differ diff --git a/reports/bridge-entry-view-20260925-dual/result.json b/reports/bridge-entry-view-20260925-dual/result.json new file mode 100644 index 0000000..aafe885 --- /dev/null +++ b/reports/bridge-entry-view-20260925-dual/result.json @@ -0,0 +1,218 @@ +{ + "pass": true, + "baseline": false, + "baseUrl": "http://127.0.0.1:6180", + "viewport": { + "width": 1920, + "height": 945 + }, + "accountRole": "root", + "serverMutations": [], + "checks": [ + { + "task": "87", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.803749420883266, + 3.4728273967383507, + 7.617689522964373 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 546.4861668312151, + "y": 177.6918377375884, + "w": 517.1888948177734, + "h": 357.91229816303127 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 300, + "title": "教员预览 · 重型支援桥液压泵应急替代 · 不计成绩" + } + }, + { + "task": "87", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.803749420883266, + 3.4728273967383507, + 7.617689522964373 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 546.4861668312151, + "y": 177.6918377375884, + "w": 517.1888948177734, + "h": 357.91229816303127 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + } + }, + { + "task": "87", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.803749420883266, + 3.4728273967383507, + 7.617689522964373 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109422 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 546.4861668312151, + "y": 177.6918377375884, + "w": 517.1888948177732, + "h": 357.91229816303115 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + } + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-entry-view-20260925-dual/task-87-entry.png b/reports/bridge-entry-view-20260925-dual/task-87-entry.png new file mode 100644 index 0000000..355b130 Binary files /dev/null and b/reports/bridge-entry-view-20260925-dual/task-87-entry.png differ diff --git a/reports/bridge-entry-view-20260925-dual/task-87-overview.png b/reports/bridge-entry-view-20260925-dual/task-87-overview.png new file mode 100644 index 0000000..7d87a40 Binary files /dev/null and b/reports/bridge-entry-view-20260925-dual/task-87-overview.png differ diff --git a/reports/bridge-entry-view-20260925-dual/task-87-reset.png b/reports/bridge-entry-view-20260925-dual/task-87-reset.png new file mode 100644 index 0000000..f502f0d Binary files /dev/null and b/reports/bridge-entry-view-20260925-dual/task-87-reset.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/failure.png b/reports/bridge-entry-view-20260925-laptop/failure.png new file mode 100644 index 0000000..b6c8dae Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/failure.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/result.json b/reports/bridge-entry-view-20260925-laptop/result.json new file mode 100644 index 0000000..dc72981 --- /dev/null +++ b/reports/bridge-entry-view-20260925-laptop/result.json @@ -0,0 +1,758 @@ +{ + "pass": true, + "baseline": false, + "baseUrl": "http://192.168.31.168:6180", + "viewport": { + "width": 1366, + "height": 768 + }, + "accountRole": "root", + "serverMutations": [], + "checks": [ + { + "task": "86", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.151732912166647, + 2.4745681467051255, + 6.801708975818983 + ], + "target": [ + -0.7017933216511993, + 0.4141088964994353, + 0.75769517521563 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 391.0429481563079, + "y": 138.78349533091017, + "w": 517.7742676613609, + "h": 300.39465720995605 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8371859555733263, + 1.9671365109410388, + 8 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 0, + "title": "教员预览 · 重型支援桥液压泵应急切换 · 不计成绩" + } + }, + { + "task": "86", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.151732912166647, + 2.4745681467051255, + 6.801708975818983 + ], + "target": [ + -0.7017933216511993, + 0.4141088964994353, + 0.75769517521563 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 391.0429481563079, + "y": 138.78349533091017, + "w": 517.7742676613609, + "h": 300.39465720995605 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8371859555733263, + 1.9671365109410388, + 8 + ] + } + ], + "pending": false + } + }, + { + "task": "86", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.151732912166647, + 2.4745681467051255, + 6.801708975818983 + ], + "target": [ + -0.7017933216511993, + 0.4141088964994353, + 0.75769517521563 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 391.04294815630783, + "y": 138.78349533091017, + "w": 517.774267661361, + "h": 300.39465720995605 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8371859555733263, + 1.9671365109410388, + 8 + ] + } + ], + "pending": false + } + }, + { + "task": "87", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 8.26014937959496, + 4.475868717282853, + 9.614606996976296 + ], + "target": [ + 0.6090398724596016, + 0.019999997327493895, + -0.12316873937779449 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 442.3459670686922, + "y": 160.24321407779502, + "w": 301.21972404290193, + "h": 180.34139609208808 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 0, + "title": "教员预览 · 重型支援桥液压泵应急替代 · 不计成绩" + } + }, + { + "task": "87", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 8.26014937959496, + 4.475868717282853, + 9.614606996976296 + ], + "target": [ + 0.6090398724596016, + 0.019999997327493895, + -0.12316873937779449 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 442.3459670686922, + "y": 160.24321407779502, + "w": 301.21972404290193, + "h": 180.34139609208808 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + } + }, + { + "task": "87", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 8.26014937959496, + 4.475868717282853, + 9.614606996976296 + ], + "target": [ + 0.6090398724596016, + 0.019999997327493895, + -0.12316873937779449 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 442.3459670686922, + "y": 160.24321407779502, + "w": 301.21972404290193, + "h": 180.34139609208808 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + } + }, + { + "task": "88", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.1120876181399275, + 3.177108086744706, + 6.767077783611273 + ], + "target": [ + -0.6627620223906978, + 0.3556060264311548, + 0.6899964229359313 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 431.1881674558356, + "y": 127.2591030705271, + "w": 446.9686043500228, + "h": 316.0797808389903 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "3封口袋.glb", + "size": [ + 0.08018212955272758, + 0.08336285111041264, + 0.08369391474136734 + ] + }, + { + "name": "牛皮纸.glb", + "size": [ + 0.254213809967041, + 0.2239204597473145, + 3.648127636091125e-8 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 0, + "title": "教员预览 · 重型支援桥前泵换件修复 · 不计成绩" + } + }, + { + "task": "88", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.1120876181399275, + 3.177108086744706, + 6.767077783611273 + ], + "target": [ + -0.6627620223906978, + 0.3556060264311548, + 0.6899964229359313 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 431.1881674558356, + "y": 127.2591030705271, + "w": 446.9686043500228, + "h": 316.0797808389903 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "3封口袋.glb", + "size": [ + 0.08018212955272758, + 0.08336285111041264, + 0.08369391474136734 + ] + }, + { + "name": "牛皮纸.glb", + "size": [ + 0.254213809967041, + 0.2239204597473145, + 3.648127636091125e-8 + ] + } + ], + "pending": false + } + }, + { + "task": "88", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.1120876181399275, + 3.177108086744706, + 6.767077783611273 + ], + "target": [ + -0.6627620223906978, + 0.3556060264311548, + 0.6899964229359312 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 431.1881674558356, + "y": 127.25910307052713, + "w": 446.9686043500228, + "h": 316.0797808389902 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "3封口袋.glb", + "size": [ + 0.08018212955272758, + 0.08336285111041264, + 0.08369391474136734 + ] + }, + { + "name": "牛皮纸.glb", + "size": [ + 0.254213809967041, + 0.2239204597473145, + 3.648127636091125e-8 + ] + } + ], + "pending": false + } + }, + { + "task": "89", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.1120876181399275, + 3.177108086744706, + 6.767077783611273 + ], + "target": [ + -0.6627620223906978, + 0.3556060264311548, + 0.6899964229359313 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 431.1881674558356, + "y": 127.2591030705271, + "w": 446.9686043500228, + "h": 316.0797808389903 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "4封口袋.glb", + "size": [ + 0.29693386419402845, + 0.017112711789406765, + 1.6563524089616042 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 0, + "title": "教员预览 · 重型支援桥平衡阀拆拼互换 · 不计成绩" + } + }, + { + "task": "89", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.1120876181399275, + 3.177108086744706, + 6.767077783611273 + ], + "target": [ + -0.6627620223906978, + 0.3556060264311548, + 0.6899964229359313 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 431.1881674558356, + "y": 127.2591030705271, + "w": 446.9686043500228, + "h": 316.0797808389903 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "4封口袋.glb", + "size": [ + 0.29693386419402845, + 0.017112711789406765, + 1.6563524089616042 + ] + } + ], + "pending": false + } + }, + { + "task": "89", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.1120876181399275, + 3.177108086744706, + 6.767077783611273 + ], + "target": [ + -0.6627620223906978, + 0.3556060264311549, + 0.6899964229359313 + ], + "zoom": 1, + "viewport": { + "x": 463, + "y": 188.5, + "w": 892, + "h": 532.5 + }, + "area": { + "x": 422, + "y": 103.09375, + "w": 454, + "h": 353.40625 + }, + "primary": { + "x": 431.1881674558356, + "y": 127.25910307052713, + "w": 446.9686043500228, + "h": 316.0797808389902 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "4封口袋.glb", + "size": [ + 0.29693386419402845, + 0.017112711789406765, + 1.6563524089616042 + ] + } + ], + "pending": false + } + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-entry-view-20260925-laptop/task-86-entry.png b/reports/bridge-entry-view-20260925-laptop/task-86-entry.png new file mode 100644 index 0000000..b6c8dae Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-86-entry.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-86-overview.png b/reports/bridge-entry-view-20260925-laptop/task-86-overview.png new file mode 100644 index 0000000..9861959 Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-86-overview.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-86-reset.png b/reports/bridge-entry-view-20260925-laptop/task-86-reset.png new file mode 100644 index 0000000..24eb4b5 Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-86-reset.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-87-entry.png b/reports/bridge-entry-view-20260925-laptop/task-87-entry.png new file mode 100644 index 0000000..a2fd003 Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-87-entry.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-87-overview.png b/reports/bridge-entry-view-20260925-laptop/task-87-overview.png new file mode 100644 index 0000000..7bf823a Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-87-overview.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-87-reset.png b/reports/bridge-entry-view-20260925-laptop/task-87-reset.png new file mode 100644 index 0000000..c232e61 Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-87-reset.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-88-entry.png b/reports/bridge-entry-view-20260925-laptop/task-88-entry.png new file mode 100644 index 0000000..2f6f72d Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-88-entry.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-88-overview.png b/reports/bridge-entry-view-20260925-laptop/task-88-overview.png new file mode 100644 index 0000000..95d81db Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-88-overview.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-88-reset.png b/reports/bridge-entry-view-20260925-laptop/task-88-reset.png new file mode 100644 index 0000000..9c0d849 Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-88-reset.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-89-entry.png b/reports/bridge-entry-view-20260925-laptop/task-89-entry.png new file mode 100644 index 0000000..179ce71 Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-89-entry.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-89-overview.png b/reports/bridge-entry-view-20260925-laptop/task-89-overview.png new file mode 100644 index 0000000..ae67b1b Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-89-overview.png differ diff --git a/reports/bridge-entry-view-20260925-laptop/task-89-reset.png b/reports/bridge-entry-view-20260925-laptop/task-89-reset.png new file mode 100644 index 0000000..c432cd9 Binary files /dev/null and b/reports/bridge-entry-view-20260925-laptop/task-89-reset.png differ diff --git a/reports/bridge-entry-view-20260925/failure.png b/reports/bridge-entry-view-20260925/failure.png new file mode 100644 index 0000000..623036a Binary files /dev/null and b/reports/bridge-entry-view-20260925/failure.png differ diff --git a/reports/bridge-entry-view-20260925/index.html b/reports/bridge-entry-view-20260925/index.html new file mode 100644 index 0000000..0f1bba5 --- /dev/null +++ b/reports/bridge-entry-view-20260925/index.html @@ -0,0 +1,34 @@ + + + + +005–008 播放方式与复位视角检查 + +
+

005–008 播放方式与复位视角检查

+

2026-09-25 · 本地开发环境 · 正式教员预览入口

+
+

进入背景页、切换讲解页、进入操作步骤时默认不播放数字人视频。点击“播放讲解”后才开始;操作阶段可自行开启“自动语音”。

+

顶部教员预览标签最大宽度统一为 300px,超长显示省略号,悬停可看完整内容。窄屏沿用现有的标签隐藏布局。

+

005–008 按主车实际可见表面调整初始与复位视角,缩小多余留白。部件聚焦保持原来的行为;006 同时限制保障车不能超出画面边界,小屏优先保留双车全景。

+

浏览器检查覆盖:初始视频暂停且进度为 0、进入操作不自动播放、手动播放可用、下一页保持暂停、聚焦后复位比例一致、预览未完成任何操作步骤、无页面脚本异常。

+

桌面:1920 × 945,http://127.0.0.1:6180。笔记本:1366 × 768,http://192.168.31.168:6180。使用 root 教员预览;未提交成绩或修改已发布训练配置。

+

桌面检查结果 · 笔记本检查结果

+

结果:12 项单元与契约检查通过;四个脚本在桌面与笔记本共 8 组浏览器检查通过;pnpm build 通过。构建保留现有的大文件体积提示,没有构建错误。

+
验证命令与范围 +

node --test scripts/training-overview.test.mjs scripts/introduction-narration.test.mjs scripts/training-scene-safety.test.mjs scripts/virtual-training-formal-route.contract.test.mjs

+

pnpm build(包含 TypeScript 检查与 legacy 编辑器产物完整性检查)

+

node tools/bridge-entry-view-live.mjs;笔记本通过 BASE_URL / WIDTH / HEIGHT / REPORT_SUFFIX 环境变量切换。

+

浏览器显式允许自动播放,确保测试不会因为浏览器拦截而误判。观察脚本只读取相机与媒体状态,交互使用真实页面按钮。本次覆盖页面进入、媒体播放、部件聚焦与复位,未重新执行所有拆装操作。

+
+
+
+ +
+ diff --git a/reports/bridge-entry-view-20260925/result.json b/reports/bridge-entry-view-20260925/result.json new file mode 100644 index 0000000..b715980 --- /dev/null +++ b/reports/bridge-entry-view-20260925/result.json @@ -0,0 +1,758 @@ +{ + "pass": true, + "baseline": false, + "baseUrl": "http://127.0.0.1:6180", + "viewport": { + "width": 1920, + "height": 945 + }, + "accountRole": "root", + "serverMutations": [], + "checks": [ + { + "task": "86", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.2568983919053, + 2.47982911756675, + 6.903596207500909 + ], + "target": [ + -0.6824137407897487, + 0.38295132538488913, + 0.7527546837674542 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 451.5121427038652, + "y": 181.08289453033925, + "w": 677.3971210537788, + "h": 388.6838152842082 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8371859555733263, + 1.9671365109410388, + 8 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 300, + "title": "教员预览 · 重型支援桥液压泵应急切换 · 不计成绩" + } + }, + { + "task": "86", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.2568983919053, + 2.47982911756675, + 6.903596207500909 + ], + "target": [ + -0.6824137407897487, + 0.38295132538488913, + 0.7527546837674542 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 451.5121427038652, + "y": 181.08289453033925, + "w": 677.3971210537788, + "h": 388.6838152842082 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8371859555733263, + 1.9671365109410388, + 8 + ] + } + ], + "pending": false + } + }, + { + "task": "86", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.2568983919053, + 2.47982911756675, + 6.903596207500909 + ], + "target": [ + -0.6824137407897487, + 0.38295132538488913, + 0.7527546837674542 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 451.5121427038652, + "y": 181.08289453033925, + "w": 677.3971210537788, + "h": 388.6838152842081 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8371859555733263, + 1.9671365109410388, + 8 + ] + } + ], + "pending": false + } + }, + { + "task": "87", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.710436233410935, + 2.9512571992809975, + 7.498927284363225 + ], + "target": [ + -0.5347172821647493, + 0.019999997327493683, + 0.8232773554487176 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 535.0327736263547, + "y": 157.15178063266154, + "w": 535.0625139390719, + "h": 341.27612626889953 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 300, + "title": "教员预览 · 重型支援桥液压泵应急替代 · 不计成绩" + } + }, + { + "task": "87", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.710436233410935, + 2.9512571992809975, + 7.498927284363225 + ], + "target": [ + -0.5347172821647493, + 0.019999997327493683, + 0.8232773554487176 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 535.0327736263547, + "y": 157.15178063266154, + "w": 535.0625139390719, + "h": 341.27612626889953 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + } + }, + { + "task": "87", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.710436233410935, + 2.9512571992809975, + 7.498927284363225 + ], + "target": [ + -0.5347172821647493, + 0.019999997327493683, + 0.8232773554487176 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 535.0327736263546, + "y": 157.15178063266154, + "w": 535.062513939072, + "h": 341.2761262688995 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "0916保障车.glb", + "size": [ + 1.570159560354596, + 1.866612635663166, + 5.511719475162634 + ] + }, + { + "name": "双车连接油管.glb", + "size": [ + 4.068633728027344, + 0.985340888500214, + 1.058640277981758 + ] + } + ], + "pending": false + } + }, + { + "task": "88", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 503.7056101865825, + "y": 160.95072226767863, + "w": 585.0323456243613, + "h": 404.84522710991826 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "3封口袋.glb", + "size": [ + 0.08018212955272758, + 0.08336285111041264, + 0.08369391474136734 + ] + }, + { + "name": "牛皮纸.glb", + "size": [ + 0.254213809967041, + 0.2239204597473145, + 3.648127636091125e-8 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 300, + "title": "教员预览 · 重型支援桥前泵换件修复 · 不计成绩" + } + }, + { + "task": "88", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 503.7056101865825, + "y": 160.95072226767863, + "w": 585.0323456243613, + "h": 404.84522710991826 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "3封口袋.glb", + "size": [ + 0.08018212955272758, + 0.08336285111041264, + 0.08369391474136734 + ] + }, + { + "name": "牛皮纸.glb", + "size": [ + 0.254213809967041, + 0.2239204597473145, + 3.648127636091125e-8 + ] + } + ], + "pending": false + } + }, + { + "task": "88", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109422 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 503.7056101865825, + "y": 160.95072226767869, + "w": 585.032345624361, + "h": 404.84522710991814 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "3封口袋.glb", + "size": [ + 0.08018212955272758, + 0.08336285111041264, + 0.08369391474136734 + ] + }, + { + "name": "牛皮纸.glb", + "size": [ + 0.254213809967041, + 0.2239204597473145, + 3.648127636091125e-8 + ] + } + ], + "pending": false + } + }, + { + "task": "89", + "view": "entry", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 503.7056101865825, + "y": 160.95072226767863, + "w": 585.0323456243613, + "h": 404.84522710991826 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "4封口袋.glb", + "size": [ + 0.29693386419402845, + 0.017112711789406765, + 1.6563524089616042 + ] + } + ], + "pending": false + }, + "media": { + "paused": true, + "time": 0 + }, + "badge": { + "max": "300px", + "width": 300, + "title": "教员预览 · 重型支援桥平衡阀拆拼互换 · 不计成绩" + } + }, + { + "task": "89", + "view": "overview", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 503.7056101865825, + "y": 160.95072226767863, + "w": 585.0323456243613, + "h": 404.84522710991826 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "4封口袋.glb", + "size": [ + 0.29693386419402845, + 0.017112711789406765, + 1.6563524089616042 + ] + } + ], + "pending": false + } + }, + { + "task": "89", + "view": "reset", + "snapshot": { + "step": 0, + "completed": [], + "autoVoice": false, + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087157, + 0.2634237970385467, + 0.7051279236109421 + ], + "zoom": 1, + "viewport": { + "x": 487, + "y": 188.5, + "w": 1422, + "h": 709.5 + }, + "area": { + "x": 492, + "y": 104.4375, + "w": 594, + "h": 529.0625 + }, + "primary": { + "x": 503.7056101865825, + "y": 160.95072226767869, + "w": 585.032345624361, + "h": 404.84522710991814 + }, + "rootBounds": [ + { + "name": "架桥车前泵互救操作整车模型", + "size": [ + 1.8909461975097657, + 2.024699456040764, + 8.234097724812745 + ] + }, + { + "name": "4封口袋.glb", + "size": [ + 0.29693386419402845, + 0.017112711789406765, + 1.6563524089616042 + ] + } + ], + "pending": false + } + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-entry-view-20260925/task-86-entry.png b/reports/bridge-entry-view-20260925/task-86-entry.png new file mode 100644 index 0000000..9e8a0b1 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-86-entry.png differ diff --git a/reports/bridge-entry-view-20260925/task-86-overview.png b/reports/bridge-entry-view-20260925/task-86-overview.png new file mode 100644 index 0000000..1fea2c2 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-86-overview.png differ diff --git a/reports/bridge-entry-view-20260925/task-86-reset.png b/reports/bridge-entry-view-20260925/task-86-reset.png new file mode 100644 index 0000000..eaaef18 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-86-reset.png differ diff --git a/reports/bridge-entry-view-20260925/task-87-entry.png b/reports/bridge-entry-view-20260925/task-87-entry.png new file mode 100644 index 0000000..f47f816 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-87-entry.png differ diff --git a/reports/bridge-entry-view-20260925/task-87-overview.png b/reports/bridge-entry-view-20260925/task-87-overview.png new file mode 100644 index 0000000..a74d71b Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-87-overview.png differ diff --git a/reports/bridge-entry-view-20260925/task-87-reset.png b/reports/bridge-entry-view-20260925/task-87-reset.png new file mode 100644 index 0000000..e1fc351 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-87-reset.png differ diff --git a/reports/bridge-entry-view-20260925/task-88-entry.png b/reports/bridge-entry-view-20260925/task-88-entry.png new file mode 100644 index 0000000..991ef77 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-88-entry.png differ diff --git a/reports/bridge-entry-view-20260925/task-88-overview.png b/reports/bridge-entry-view-20260925/task-88-overview.png new file mode 100644 index 0000000..1d08ebf Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-88-overview.png differ diff --git a/reports/bridge-entry-view-20260925/task-88-reset.png b/reports/bridge-entry-view-20260925/task-88-reset.png new file mode 100644 index 0000000..8c803d0 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-88-reset.png differ diff --git a/reports/bridge-entry-view-20260925/task-89-entry.png b/reports/bridge-entry-view-20260925/task-89-entry.png new file mode 100644 index 0000000..b488171 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-89-entry.png differ diff --git a/reports/bridge-entry-view-20260925/task-89-overview.png b/reports/bridge-entry-view-20260925/task-89-overview.png new file mode 100644 index 0000000..9705e21 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-89-overview.png differ diff --git a/reports/bridge-entry-view-20260925/task-89-reset.png b/reports/bridge-entry-view-20260925/task-89-reset.png new file mode 100644 index 0000000..76cfd26 Binary files /dev/null and b/reports/bridge-entry-view-20260925/task-89-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop-layout/result.json b/reports/bridge-introduction-3d-20260925-laptop-layout/result.json new file mode 100644 index 0000000..9b7d516 --- /dev/null +++ b/reports/bridge-introduction-3d-20260925-laptop-layout/result.json @@ -0,0 +1,155 @@ +{ + "pass": true, + "baseUrl": "http://192.168.31.168:6180", + "viewport": { + "width": 1366, + "height": 768 + }, + "accountRole": "root", + "checks": [ + { + "task": "87", + "introductionPages": 3, + "rotationRadians": 0.05352226684165815, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 8.15480955512277, + 4.868351518765439, + 9.48212777763654 + ], + "target": [ + 0.5178556450185945, + 0.35560602643115474, + -0.23763174431422704 + ], + "zoom": 1, + "angle": 0.008136724972797514, + "paused": false, + "previewCamera": [ + 8.249730305020574, + 4.855464379015016, + 8.09621078225285 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 8.15480955512277, + 4.868351518765439, + 9.48212777763654 + ], + "target": [ + 0.5178556450185945, + 0.3556060264311547, + -0.23763174431422707 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 446.5035684451876, + "y": 176.7553984764075, + "w": 296.2983330309901, + "h": 170.96639994278723 + }, + { + "name": "0916保障车.glb", + "x": 649.6272788730728, + "y": 207.68352865882758, + "w": 230.3413377186249, + "h": 187.18249766132686 + }, + { + "name": "双车连接油管.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 8.15480955512277, + 4.868351518765439, + 9.48212777763654 + ], + "target": [ + 0.5178556450185945, + 0.3556060264311548, + -0.23763174431422684 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 446.5035684451877, + "y": 176.75539847640752, + "w": 296.29833303099, + "h": 170.9663999427872 + }, + { + "name": "0916保障车.glb", + "x": 649.6272788730728, + "y": 207.68352865882764, + "w": 230.3413377186249, + "h": 187.1824976613268 + }, + { + "name": "双车连接油管.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + } + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-background.png b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-background.png new file mode 100644 index 0000000..2a2f923 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-background.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-fullscreen.png b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-fullscreen.png new file mode 100644 index 0000000..38118d8 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-fullscreen.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-lecture.png b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-lecture.png new file mode 100644 index 0000000..8c03e82 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-lecture.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-operation.png b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-operation.png new file mode 100644 index 0000000..472b917 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-reset.png b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-reset.png new file mode 100644 index 0000000..1e3be2c Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop-layout/task-87-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/result.json b/reports/bridge-introduction-3d-20260925-laptop/result.json new file mode 100644 index 0000000..c8b72ae --- /dev/null +++ b/reports/bridge-introduction-3d-20260925-laptop/result.json @@ -0,0 +1,542 @@ +{ + "pass": true, + "baseUrl": "http://192.168.31.168:6180", + "viewport": { + "width": 1366, + "height": 768 + }, + "accountRole": "root", + "checks": [ + { + "task": "86", + "introductionPages": 6, + "rotationRadians": 0.05293932687149204, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 4.139573632200384, + 2.4701517887342663, + 6.790164690632832 + ], + "target": [ + -0.703549625063884, + 0.41410889649943533, + 0.7591055400773312 + ], + "zoom": 1, + "angle": 0.012220795422464306, + "paused": false, + "previewCamera": [ + 5.635029975175856, + 3.343455438300739, + 6.860461441065012 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.139573632200384, + 2.4701517887342663, + 6.790164690632832 + ], + "target": [ + -0.703549625063884, + 0.4141088964994354, + 0.7591055400773312 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 438.0649607713952, + "y": 152.89985180346815, + "w": 435.3507896957395, + "h": 239.0714481816878 + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.139573632200384, + 2.4701517887342663, + 6.790164690632832 + ], + "target": [ + -0.703549625063884, + 0.4141088964994354, + 0.7591055400773312 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 438.0649607713952, + "y": 152.8998518034682, + "w": 435.3507896957397, + "h": 239.07144818168774 + } + ] + } + }, + { + "task": "87", + "introductionPages": 3, + "rotationRadians": 0.05294281752999601, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 8.15480955512277, + 4.868351518765439, + 9.48212777763654 + ], + "target": [ + 0.5178556450185945, + 0.35560602643115474, + -0.23763174431422704 + ], + "zoom": 1, + "angle": 0.008726646259971648, + "paused": false, + "previewCamera": [ + 8.264087632286845, + 4.855464379015016, + 8.084746513318919 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 8.15480955512277, + 4.868351518765439, + 9.48212777763654 + ], + "target": [ + 0.5178556450185945, + 0.3556060264311547, + -0.23763174431422707 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 446.5035684451876, + "y": 176.7553984764075, + "w": 296.2983330309901, + "h": 170.96639994278723 + }, + { + "name": "0916保障车.glb", + "x": 649.6272788730728, + "y": 207.68352865882758, + "w": 230.3413377186249, + "h": 187.18249766132686 + }, + { + "name": "双车连接油管.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 8.15480955512277, + 4.868351518765439, + 9.48212777763654 + ], + "target": [ + 0.5178556450185945, + 0.3556060264311548, + -0.23763174431422684 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 210.90625, + "w": 390, + "h": 248.59375 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 446.5035684451877, + "y": 176.75539847640752, + "w": 296.29833303099, + "h": 170.9663999427872 + }, + { + "name": "0916保障车.glb", + "x": 649.6272788730728, + "y": 207.68352865882764, + "w": 230.3413377186249, + "h": 187.1824976613268 + }, + { + "name": "双车连接油管.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + } + }, + { + "task": "88", + "introductionPages": 1, + "rotationRadians": 0.05235289624282193, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 4.100165435367536, + 3.1711175922722625, + 6.7555772266932665 + ], + "target": [ + -0.6645464452866469, + 0.35560602643115474, + 0.6913984694970342 + ], + "zoom": 1, + "angle": 0.022109830964264186, + "paused": false, + "previewCamera": [ + 5.577376459985299, + 4.53102987134045, + 7.313123217161224 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 223.5, + "w": 390, + "h": 236 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.100165435367536, + 3.1711175922722625, + 6.7555772266932665 + ], + "target": [ + -0.6645464452866469, + 0.35560602643115474, + 0.6913984694970342 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 223.5, + "w": 390, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 438.2834542952193, + "y": 129.81067168020698, + "w": 435.05633414489654, + "h": 275.1639184936073 + }, + { + "name": "3封口袋.glb", + "x": null, + "y": null, + "w": null, + "h": null + }, + { + "name": "牛皮纸.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.100165435367536, + 3.171117592272262, + 6.7555772266932665 + ], + "target": [ + -0.6645464452866469, + 0.3556060264311547, + 0.6913984694970343 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 223.5, + "w": 390, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 438.2834542952194, + "y": 129.81067168020704, + "w": 435.05633414489654, + "h": 275.1639184936072 + }, + { + "name": "3封口袋.glb", + "x": null, + "y": null, + "w": null, + "h": null + }, + { + "name": "牛皮纸.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + } + }, + { + "task": "89", + "introductionPages": 1, + "rotationRadians": 0.052942817529996064, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 4.100165435367536, + 3.1711175922722625, + 6.7555772266932665 + ], + "target": [ + -0.6645464452866469, + 0.35560602643115474, + 0.6913984694970342 + ], + "zoom": 1, + "angle": 0.025014058839582753, + "paused": false, + "previewCamera": [ + 5.964277924544984, + 4.431413818972688, + 7.08493152531313 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 223.5, + "w": 390, + "h": 236 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.100165435367536, + 3.1711175922722625, + 6.7555772266932665 + ], + "target": [ + -0.6645464452866469, + 0.35560602643115474, + 0.6913984694970342 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 223.5, + "w": 390, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 438.2834542952193, + "y": 129.81067168020698, + "w": 435.05633414489654, + "h": 275.1639184936073 + }, + { + "name": "4封口袋.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.100165435367536, + 3.1711175922722625, + 6.7555772266932665 + ], + "target": [ + -0.6645464452866469, + 0.3556060264311549, + 0.6913984694970342 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": null, + "teacher": { + "x": 17, + "y": 223.5, + "w": 390, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 438.2834542952194, + "y": 129.81067168020704, + "w": 435.0563341448964, + "h": 275.1639184936073 + }, + { + "name": "4封口袋.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + } + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-86-background.png b/reports/bridge-introduction-3d-20260925-laptop/task-86-background.png new file mode 100644 index 0000000..0ac96f6 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-86-background.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-86-lecture.png b/reports/bridge-introduction-3d-20260925-laptop/task-86-lecture.png new file mode 100644 index 0000000..71cc23a Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-86-lecture.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-86-operation.png b/reports/bridge-introduction-3d-20260925-laptop/task-86-operation.png new file mode 100644 index 0000000..062ba69 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-86-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-86-reset.png b/reports/bridge-introduction-3d-20260925-laptop/task-86-reset.png new file mode 100644 index 0000000..3e318c3 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-86-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-87-background.png b/reports/bridge-introduction-3d-20260925-laptop/task-87-background.png new file mode 100644 index 0000000..635fa58 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-87-background.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-87-lecture.png b/reports/bridge-introduction-3d-20260925-laptop/task-87-lecture.png new file mode 100644 index 0000000..668027a Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-87-lecture.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-87-operation.png b/reports/bridge-introduction-3d-20260925-laptop/task-87-operation.png new file mode 100644 index 0000000..dda4385 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-87-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-87-reset.png b/reports/bridge-introduction-3d-20260925-laptop/task-87-reset.png new file mode 100644 index 0000000..3bfcf07 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-87-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-88-background.png b/reports/bridge-introduction-3d-20260925-laptop/task-88-background.png new file mode 100644 index 0000000..adce3bb Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-88-background.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-88-operation.png b/reports/bridge-introduction-3d-20260925-laptop/task-88-operation.png new file mode 100644 index 0000000..c3a5e06 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-88-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-88-reset.png b/reports/bridge-introduction-3d-20260925-laptop/task-88-reset.png new file mode 100644 index 0000000..4f545d7 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-88-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-89-background.png b/reports/bridge-introduction-3d-20260925-laptop/task-89-background.png new file mode 100644 index 0000000..cf49df9 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-89-background.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-89-operation.png b/reports/bridge-introduction-3d-20260925-laptop/task-89-operation.png new file mode 100644 index 0000000..b82cb08 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-89-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925-laptop/task-89-reset.png b/reports/bridge-introduction-3d-20260925-laptop/task-89-reset.png new file mode 100644 index 0000000..e3fa8a9 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-laptop/task-89-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925-resize/result.json b/reports/bridge-introduction-3d-20260925-resize/result.json new file mode 100644 index 0000000..89be94c --- /dev/null +++ b/reports/bridge-introduction-3d-20260925-resize/result.json @@ -0,0 +1,170 @@ +{ + "pass": true, + "baseUrl": "http://127.0.0.1:6180", + "viewport": { + "width": 1920, + "height": 945 + }, + "accountRole": "root", + "checks": [ + { + "task": "87", + "introductionPages": 3, + "rotationRadians": 0.05409473483631226, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163863, + 9.330622589672995 + ], + "target": [ + -1.0396165608364782, + 0.658673034537816, + 0.8453867350938089 + ], + "zoom": 1, + "angle": 0.00873362757697965, + "paused": false, + "previewCamera": [ + 8.26414502140324, + 4.855464379015018, + 8.084700605937973 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163864, + 9.330622589672995 + ], + "target": [ + -1.0396165608364782, + 0.658673034537816, + 0.8453867350938089 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 439.93688414755553, + "y": 110.00253923432476, + "w": 393.9176556502329, + "h": 269.9929595837525 + }, + { + "name": "0916保障车.glb", + "x": 789.8889160681427, + "y": 158.1657115825596, + "w": 298.6399069421399, + "h": 306.68924040160243 + }, + { + "name": "双车连接油管.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163864, + 9.330622589672995 + ], + "target": [ + -1.0396165608364782, + 0.658673034537816, + 0.8453867350938091 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 439.93688414755553, + "y": 110.00253923432476, + "w": 393.91765565023314, + "h": 269.9929595837525 + }, + { + "name": "0916保障车.glb", + "x": 789.8889160681427, + "y": 158.16571158255965, + "w": 298.6399069421399, + "h": 306.6892404016023 + }, + { + "name": "双车连接油管.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + } + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-introduction-3d-20260925-resize/task-87-background.png b/reports/bridge-introduction-3d-20260925-resize/task-87-background.png new file mode 100644 index 0000000..504f963 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-resize/task-87-background.png differ diff --git a/reports/bridge-introduction-3d-20260925-resize/task-87-fullscreen.png b/reports/bridge-introduction-3d-20260925-resize/task-87-fullscreen.png new file mode 100644 index 0000000..ee959ef Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-resize/task-87-fullscreen.png differ diff --git a/reports/bridge-introduction-3d-20260925-resize/task-87-lecture.png b/reports/bridge-introduction-3d-20260925-resize/task-87-lecture.png new file mode 100644 index 0000000..6156780 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-resize/task-87-lecture.png differ diff --git a/reports/bridge-introduction-3d-20260925-resize/task-87-operation.png b/reports/bridge-introduction-3d-20260925-resize/task-87-operation.png new file mode 100644 index 0000000..01fba6c Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-resize/task-87-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925-resize/task-87-reset.png b/reports/bridge-introduction-3d-20260925-resize/task-87-reset.png new file mode 100644 index 0000000..a9caaef Binary files /dev/null and b/reports/bridge-introduction-3d-20260925-resize/task-87-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925/index.html b/reports/bridge-introduction-3d-20260925/index.html new file mode 100644 index 0000000..eeb9694 --- /dev/null +++ b/reports/bridge-introduction-3d-20260925/index.html @@ -0,0 +1,36 @@ + + + +背景与讲解实时 3D、双车取景检查 + +
+

背景与讲解实时 3D、双车取景检查

+

2026-09-25 · 本地开发环境 · 正式教员预览入口

+
+

006 默认取景向左调整,主车与支援车分别避让数字教员、右侧工具栏。复位时采用相同布局,窄屏根据剩余空间自动取景。

+

005–008 共 11 个背景/讲解页的场景图片,已替换为实时 3D。预览从整车视角开始缓慢旋转,约 3 分钟一圈,可暂停和继续。原有视频类型讲解仍使用视频播放器。

+

预览与操作共用已加载的模型、场地、HDR 和 WebGL 画布,使用独立预览相机。进入操作步骤时停止旋转;从部件聚焦返回背景页,再回到操作页,保持原来的操作相机、步骤与零件状态。数字人视频默认仍不自动播放。

+

已通过:14 项单元与契约检查;四个脚本在 1920 × 945 桌面和 1366 × 768 笔记本下的浏览器检查;生产构建(含类型检查、legacy 模型编辑器产物校验)。

+

桌面结果 · 笔记本结果 · 全屏与缩放结果 · 笔记本全屏与面板展开/收起

+
环境、检查范围与命令 +

桌面 http://127.0.0.1:6180;笔记本 http://192.168.31.168:6180;沿用 Vite 至 6100 Gateway 的 API 代理。使用 root 教员预览,没有提交成绩或修改场景/训练配置。

+

node --test scripts/training-overview.test.mjs scripts/introduction-orbit.test.mjs scripts/introduction-narration.test.mjs scripts/training-introduction.test.mjs scripts/virtual-training-formal-route.contract.test.mjs

+

node tools/bridge-introduction-3d-live.mjs;通过 WIDTH / HEIGHT / BASE_URL / REPORT_SUFFIX 切换窗口与地址,通过 CHECK_LAYOUT=1 补查全屏与窗口缩放。

+

pnpm build 通过。现有的大文件体积提示不影响构建。

+

浏览器检查覆盖真实旋转、暂停/继续、所有背景与讲解页、单画布复用、数字人手动播放、返回操作、聚焦视角保留、复位比例与双车遮挡。几何单元测试覆盖整圈旋转的取景范围。没有重新执行全部拆装流程。

+
+
+

006:支援车避开面板

+
调整前
006 调整前,支援车被工具栏遮挡
+
调整后
006 两车避开面板
+
+
+ +
+ diff --git a/reports/bridge-introduction-3d-20260925/result.json b/reports/bridge-introduction-3d-20260925/result.json new file mode 100644 index 0000000..f50cb5e --- /dev/null +++ b/reports/bridge-introduction-3d-20260925/result.json @@ -0,0 +1,602 @@ +{ + "pass": true, + "baseUrl": "http://127.0.0.1:6180", + "viewport": { + "width": 1920, + "height": 945 + }, + "accountRole": "root", + "checks": [ + { + "task": "86", + "introductionPages": 6, + "rotationRadians": 0.052939326871492054, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 4.2568983919053, + 2.47982911756675, + 6.903596207500909 + ], + "target": [ + -0.6824137407897487, + 0.38295132538488913, + 0.7527546837674542 + ], + "zoom": 1, + "angle": 0.021526890994098057, + "paused": false, + "previewCamera": [ + 5.715236698580875, + 3.3470426528610395, + 6.811414632595393 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 288.5 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.2568983919053, + 2.47982911756675, + 6.903596207500909 + ], + "target": [ + -0.6824137407897487, + 0.38295132538488913, + 0.7527546837674542 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 288.5 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 511.2435228227729, + "y": 199.4067053152598, + "w": 568.695436361306, + "h": 309.70143621994237 + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.2568983919053, + 2.47982911756675, + 6.903596207500909 + ], + "target": [ + -0.6824137407897487, + 0.38295132538488913, + 0.7527546837674542 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 288.5 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 511.243522822773, + "y": 199.4067053152599, + "w": 568.6954363613058, + "h": 309.70143621994225 + } + ] + } + }, + { + "task": "87", + "introductionPages": 3, + "rotationRadians": 0.05352575750016207, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163863, + 9.330622589672995 + ], + "target": [ + -1.0396165608364782, + 0.658673034537816, + 0.8453867350938089 + ], + "zoom": 1, + "angle": 0.008136724972797577, + "paused": false, + "previewCamera": [ + 8.249730305020574, + 4.85546437901502, + 8.09621078225285 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163864, + 9.330622589672995 + ], + "target": [ + -1.0396165608364782, + 0.658673034537816, + 0.8453867350938089 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 439.93688414755553, + "y": 110.00253923432476, + "w": 393.9176556502329, + "h": 269.9929595837525 + }, + { + "name": "0916保障车.glb", + "x": 789.8889160681427, + "y": 158.1657115825596, + "w": 298.6399069421399, + "h": 306.68924040160243 + }, + { + "name": "双车连接油管.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163864, + 9.330622589672995 + ], + "target": [ + -1.0396165608364782, + 0.658673034537816, + 0.8453867350938091 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 439.93688414755553, + "y": 110.00253923432476, + "w": 393.91765565023314, + "h": 269.9929595837525 + }, + { + "name": "0916保障车.glb", + "x": 789.8889160681427, + "y": 158.16571158255965, + "w": 298.6399069421399, + "h": 306.6892404016023 + }, + { + "name": "双车连接油管.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + } + }, + { + "task": "88", + "introductionPages": 1, + "rotationRadians": 0.05235638690132595, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "angle": 0.025600489468252843, + "paused": false, + "previewCamera": [ + 5.603392161586465, + 4.531029871340452, + 7.291684674995296 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 511.50280294370754, + "y": 164.1069293881087, + "w": 568.3384381257642, + "h": 350.3052138413161 + }, + { + "name": "3封口袋.glb", + "x": null, + "y": null, + "w": null, + "h": null + }, + { + "name": "牛皮纸.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109422 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 511.5028029437077, + "y": 164.10692938810874, + "w": 568.3384381257641, + "h": 350.305213841316 + }, + { + "name": "3封口袋.glb", + "x": null, + "y": null, + "w": null, + "h": null + }, + { + "name": "牛皮纸.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + } + }, + { + "task": "89", + "introductionPages": 1, + "rotationRadians": 0.05235987755982993, + "initial": { + "intro": true, + "step": 0, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "angle": 0.028504717343571406, + "paused": false, + "previewCamera": [ + 5.989496426019214, + 4.431413818972688, + 7.06402650521135 + ], + "canvasInPreview": true, + "sameRenderer": true, + "controlsEnabled": false, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + } + }, + "operation": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087158, + 0.2634237970385468, + 0.7051279236109421 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 511.50280294370754, + "y": 164.1069293881087, + "w": 568.3384381257642, + "h": 350.3052138413161 + }, + { + "name": "4封口袋.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + }, + "reset": { + "intro": false, + "step": 0, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ], + "target": [ + -0.6275489786087156, + 0.2634237970385467, + 0.7051279236109421 + ], + "zoom": 1, + "angle": 0, + "paused": false, + "canvasInPreview": false, + "sameRenderer": true, + "controlsEnabled": true, + "tween": false, + "tools": { + "x": 1101, + "y": 95, + "w": 310, + "h": 269 + }, + "teacher": { + "x": 17, + "y": 400.5, + "w": 460, + "h": 236 + }, + "objects": [ + { + "name": "架桥车前泵互救操作整车模型", + "x": 511.5028029437077, + "y": 164.10692938810874, + "w": 568.3384381257641, + "h": 350.305213841316 + }, + { + "name": "4封口袋.glb", + "x": null, + "y": null, + "w": null, + "h": null + } + ] + } + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-introduction-3d-20260925/task-86-background.png b/reports/bridge-introduction-3d-20260925/task-86-background.png new file mode 100644 index 0000000..f6f7e22 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-86-background.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-86-lecture.png b/reports/bridge-introduction-3d-20260925/task-86-lecture.png new file mode 100644 index 0000000..8c153d4 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-86-lecture.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-86-operation.png b/reports/bridge-introduction-3d-20260925/task-86-operation.png new file mode 100644 index 0000000..db55258 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-86-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-86-reset.png b/reports/bridge-introduction-3d-20260925/task-86-reset.png new file mode 100644 index 0000000..40b79a7 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-86-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-87-background.png b/reports/bridge-introduction-3d-20260925/task-87-background.png new file mode 100644 index 0000000..2fcb51e Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-87-background.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-87-lecture.png b/reports/bridge-introduction-3d-20260925/task-87-lecture.png new file mode 100644 index 0000000..c09089a Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-87-lecture.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-87-operation.png b/reports/bridge-introduction-3d-20260925/task-87-operation.png new file mode 100644 index 0000000..6d1e852 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-87-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-87-reset.png b/reports/bridge-introduction-3d-20260925/task-87-reset.png new file mode 100644 index 0000000..26761d3 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-87-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-88-background.png b/reports/bridge-introduction-3d-20260925/task-88-background.png new file mode 100644 index 0000000..07e797e Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-88-background.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-88-operation.png b/reports/bridge-introduction-3d-20260925/task-88-operation.png new file mode 100644 index 0000000..0d58a0e Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-88-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-88-reset.png b/reports/bridge-introduction-3d-20260925/task-88-reset.png new file mode 100644 index 0000000..e214e82 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-88-reset.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-89-background.png b/reports/bridge-introduction-3d-20260925/task-89-background.png new file mode 100644 index 0000000..4459107 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-89-background.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-89-operation.png b/reports/bridge-introduction-3d-20260925/task-89-operation.png new file mode 100644 index 0000000..24f0299 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-89-operation.png differ diff --git a/reports/bridge-introduction-3d-20260925/task-89-reset.png b/reports/bridge-introduction-3d-20260925/task-89-reset.png new file mode 100644 index 0000000..db5cf22 Binary files /dev/null and b/reports/bridge-introduction-3d-20260925/task-89-reset.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/index.html b/reports/bridge-label-placement-20260925-laptop/index.html new file mode 100644 index 0000000..dd754ff --- /dev/null +++ b/reports/bridge-label-placement-20260925-laptop/index.html @@ -0,0 +1 @@ +部件标签位置检查

部件标签位置检查:通过

http://192.168.31.168:6180 · 1366 × 768 · 教员预览(root)· 未创建任务或提交训练成绩。

标签中心距部件投影不超过128像素,互不重叠;检查聚焦、隐藏其他、复位和移动视角。

检查数据

任务 86 · overview

任务 86 · focus

任务 86 · hide-others

任务 86 · reset

任务 86 · moved

任务 87 · overview

任务 87 · focus

任务 87 · hide-others

任务 87 · reset

任务 87 · moved

任务 88 · overview

任务 88 · focus

任务 88 · hide-others

任务 88 · reset

任务 88 · moved

任务 89 · overview

任务 89 · focus

任务 89 · hide-others

任务 89 · reset

任务 89 · moved

\ No newline at end of file diff --git a/reports/bridge-label-placement-20260925-laptop/result.json b/reports/bridge-label-placement-20260925-laptop/result.json new file mode 100644 index 0000000..2bcff28 --- /dev/null +++ b/reports/bridge-label-placement-20260925-laptop/result.json @@ -0,0 +1,5493 @@ +{ + "pass": true, + "baseUrl": "http://192.168.31.168:6180", + "viewport": { + "width": 1366, + "height": 768 + }, + "accountRole": "root", + "serverMutations": [], + "checks": [ + { + "task": "86", + "view": "overview", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": true, + "active": true, + "anchor": { + "x": 644.6030591999712, + "y": 395.50263538893756 + }, + "rect": { + "x": 588.59375, + "y": 422.5, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 644.6030591999712, + "y": 395.50263538893756 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 599.1652860595083, + "y": 412.7453410973793 + }, + "rect": { + "x": 543.15625, + "y": 355.734375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 602.7139248811662, + "y": 411.9561879862661 + }, + "rect": { + "x": 546.703125, + "y": 288.953125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": true, + "active": false, + "anchor": { + "x": 728.7253909608202, + "y": 368.0306551316826 + }, + "rect": { + "x": 672.71875, + "y": 311.015625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": true, + "active": false, + "anchor": { + "x": 666.0079937859988, + "y": 366.5529870930483 + }, + "rect": { + "x": 679.671875, + "y": 351.546875, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 664.8976148728855, + "y": 366.2871900890735 + }, + "rect": { + "x": 728.890625, + "y": 393.28125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 663.8435015890482, + "y": 367.81448225685205 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 6.97143508410798, + 3.952669812547333, + 10.316633668480025 + ] + }, + { + "task": "86", + "view": "focus", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": false, + "active": true, + "anchor": { + "x": 1190.1216577407206, + "y": 412.4469684019246 + }, + "rect": { + "x": 704.84375, + "y": 314.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 1190.1216577407206, + "y": 412.4469684019246 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 650.4999999999998, + "y": 376.39657598499093 + }, + "rect": { + "x": 594.5, + "y": 319.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 660.8650505816904, + "y": 374.05024215999975 + }, + "rect": { + "x": 604.859375, + "y": 390.15625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": false, + "active": false, + "anchor": { + "x": 2061.7312178381276, + "y": 355.95823100868466 + }, + "rect": { + "x": 758.765625, + "y": 292.125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": false, + "active": false, + "anchor": { + "x": 1459.0273619683815, + "y": 318.1892778962183 + }, + "rect": { + "x": 702.53125, + "y": 363.90625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 1452.7650912916772, + "y": 316.8797208307233 + }, + "rect": { + "x": 762.078125, + "y": 382.359375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 1440.3962258475772, + "y": 322.37475087549376 + }, + "rect": { + "x": 766.015625, + "y": 402.765625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 2.8723628675203736, + 1.3339831323857418, + 3.39429962233743 + ] + }, + { + "task": "86", + "view": "hide-others", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": false, + "active": true, + "anchor": { + "x": 1190.1216577407206, + "y": 412.4469684019246 + }, + "rect": { + "x": 704.84375, + "y": 314.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 1190.1216577407206, + "y": 412.4469684019246 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 650.4999999999998, + "y": 376.39657598499093 + }, + "rect": { + "x": 594.5, + "y": 319.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": false, + "active": false, + "anchor": { + "x": 660.8650505816904, + "y": 374.05024215999975 + }, + "rect": { + "x": 604.859375, + "y": 390.15625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": false, + "active": false, + "anchor": { + "x": 2061.7312178381276, + "y": 355.95823100868466 + }, + "rect": { + "x": 758.765625, + "y": 292.125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": false, + "active": false, + "anchor": { + "x": 1459.0273619683815, + "y": 318.1892778962183 + }, + "rect": { + "x": 702.53125, + "y": 363.90625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 1452.7650912916772, + "y": 316.8797208307233 + }, + "rect": { + "x": 762.078125, + "y": 382.359375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 1440.3962258475772, + "y": 322.37475087549376 + }, + "rect": { + "x": 766.015625, + "y": 402.765625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 2.8723628675203736, + 1.3339831323857418, + 3.39429962233743 + ] + }, + { + "task": "86", + "view": "reset", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": true, + "active": true, + "anchor": { + "x": 644.6030591999712, + "y": 395.5026353889375 + }, + "rect": { + "x": 588.59375, + "y": 422.5, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 644.6030591999712, + "y": 395.5026353889375 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 599.1652860595084, + "y": 412.7453410973793 + }, + "rect": { + "x": 543.15625, + "y": 355.734375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 602.7139248811663, + "y": 411.9561879862661 + }, + "rect": { + "x": 546.703125, + "y": 288.953125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": true, + "active": false, + "anchor": { + "x": 728.7253909608202, + "y": 368.0306551316826 + }, + "rect": { + "x": 672.71875, + "y": 311.015625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": true, + "active": false, + "anchor": { + "x": 666.0079937859989, + "y": 366.5529870930483 + }, + "rect": { + "x": 679.671875, + "y": 351.546875, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 664.8976148728855, + "y": 366.2871900890735 + }, + "rect": { + "x": 728.890625, + "y": 393.28125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 663.8435015890483, + "y": 367.814482256852 + }, + "rect": { + "x": 735.78125, + "y": 389.75, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 6.97143508410798, + 3.952669812547333, + 10.316633668480025 + ] + }, + { + "task": "86", + "view": "moved", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": true, + "active": true, + "anchor": { + "x": 705.393320170463, + "y": 407.6492822807898 + }, + "rect": { + "x": 718.65625, + "y": 392.5, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 705.393320170463, + "y": 407.6492822807898 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 670.2129816567074, + "y": 426.9415504427857 + }, + "rect": { + "x": 543.34375, + "y": 411.765625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 673.8638312345116, + "y": 426.1728203063997 + }, + "rect": { + "x": 617, + "y": 339, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": true, + "active": false, + "anchor": { + "x": 786.3224433126563, + "y": 379.5392594008579 + }, + "rect": { + "x": 729.625, + "y": 292.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": true, + "active": false, + "anchor": { + "x": 721.7469156809154, + "y": 377.69031388818615 + }, + "rect": { + "x": 595.0625, + "y": 290.546875, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 720.5614327827889, + "y": 377.4095101780127 + }, + "rect": { + "x": 733.875, + "y": 434.265625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 719.7133165080735, + "y": 378.97796309902105 + }, + "rect": { + "x": 766.71875, + "y": 402.578125, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 6.074929724559471, + 4.166103810124812, + 10.963793048943325 + ] + }, + { + "task": "87", + "view": "overview", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 640.9122086720945, + "y": 389.3526798707742 + }, + "rect": { + "x": 576.90625, + "y": 416.34375, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 618.9561257126895, + "y": 401.6201825421951 + }, + "rect": { + "x": 562.953125, + "y": 314.609375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 660.2254818872161, + "y": 361.08501531622665 + }, + "rect": { + "x": 724.21875, + "y": 346.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 659.4690728624391, + "y": 362.33272496310553 + }, + "rect": { + "x": 723.46875, + "y": 305.328125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 640.9122086720945, + "y": 389.3526798707742 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 667.7853288001498, + "y": 356.50824847738016 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 767.1128318451135, + "y": 414.52309146469844 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 663.4913693517623, + "y": 355.79562951103713 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 761.3585990500081, + "y": 413.3523958187274 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 664.2689553077589, + "y": 355.50774744386507 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 762.1085361077832, + "y": 412.866517388127 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": 775.9270468569453, + "y": 416.6414491583538 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 666.2135330479881, + "y": 357.7789171806743 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 664.3671376809976, + "y": 357.18668402162075 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 769.1005827296628, + "y": 407.8108375305832 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": true, + "active": false, + "anchor": { + "x": 706.3800295155045, + "y": 403.8053679711702 + }, + "rect": { + "x": 720.375, + "y": 430.796875, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 9.816043685724315, + 6.70288079141373, + 14.030331363510985 + ] + }, + { + "task": "87", + "view": "focus", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": false, + "active": true, + "anchor": { + "x": 1600.7168020022848, + "y": 462.0741706199279 + }, + "rect": { + "x": 708.34375, + "y": 302.5625, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 650.4999999999998, + "y": 376.3965759849906 + }, + "rect": { + "x": 594.5, + "y": 323.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 2390.3131370845326, + "y": 249.80224386251493 + }, + "rect": { + "x": 754.203125, + "y": 307.875, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 2363.085816331876, + "y": 261.85000676145785 + }, + "rect": { + "x": 767.359375, + "y": 297.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 1600.7168020022848, + "y": 462.0741706199279 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 2588.807972760742, + "y": 206.93723985314872 + }, + "rect": { + "x": 728.140625, + "y": 290.1875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": -109882.67948774903, + "y": -43652.63527543263 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 2506.5139145073467, + "y": 199.28522933061316 + }, + "rect": { + "x": 713.515625, + "y": 329.765625, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 46376.70150665045, + "y": 18190.72849907524 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 2527.6402789897666, + "y": 199.7882774442091 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 47162.09375994836, + "y": 18194.21816574101 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": -40738.63858068695, + "y": -16629.47316786275 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 2559.2168574735215, + "y": 237.66247532058154 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 2526.1393425704982, + "y": 230.21901342610425 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": -53464.76616335251, + "y": -17001.617160120022 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": false, + "active": false, + "anchor": { + "x": 3455.579771226812, + "y": 1287.788493119397 + }, + "rect": { + "x": 720.375, + "y": 430.796875, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.0083158564383625, + 1.3898189780176322, + 3.3301780128479006 + ] + }, + { + "task": "87", + "view": "hide-others", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": false, + "active": true, + "anchor": { + "x": 1600.7168020022848, + "y": 462.0741706199279 + }, + "rect": { + "x": 708.34375, + "y": 302.5625, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 650.4999999999998, + "y": 376.3965759849906 + }, + "rect": { + "x": 594.5, + "y": 323.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 2390.3131370845326, + "y": 249.80224386251493 + }, + "rect": { + "x": 754.203125, + "y": 307.875, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 2363.085816331876, + "y": 261.85000676145785 + }, + "rect": { + "x": 767.359375, + "y": 297.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 1600.7168020022848, + "y": 462.0741706199279 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 2588.807972760742, + "y": 206.93723985314872 + }, + "rect": { + "x": 728.140625, + "y": 290.1875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": -109882.67948774903, + "y": -43652.63527543263 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 2506.5139145073467, + "y": 199.28522933061316 + }, + "rect": { + "x": 713.515625, + "y": 329.765625, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 46376.70150665045, + "y": 18190.72849907524 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 2527.6402789897666, + "y": 199.7882774442091 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 47162.09375994836, + "y": 18194.21816574101 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": -40738.63858068695, + "y": -16629.47316786275 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 2559.2168574735215, + "y": 237.66247532058154 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 2526.1393425704982, + "y": 230.21901342610425 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": -53464.76616335251, + "y": -17001.617160120022 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": false, + "active": false, + "anchor": { + "x": 3455.579771226812, + "y": 1287.788493119397 + }, + "rect": { + "x": 720.375, + "y": 430.796875, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.0083158564383625, + 1.3898189780176322, + 3.3301780128479006 + ] + }, + { + "task": "87", + "view": "reset", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 640.9122086720945, + "y": 389.3526798707741 + }, + "rect": { + "x": 576.90625, + "y": 416.34375, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 618.9561257126896, + "y": 401.6201825421951 + }, + "rect": { + "x": 562.953125, + "y": 314.609375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 660.2254818872162, + "y": 361.0850153162266 + }, + "rect": { + "x": 724.21875, + "y": 346.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 659.4690728624391, + "y": 362.3327249631055 + }, + "rect": { + "x": 723.46875, + "y": 305.328125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 640.9122086720945, + "y": 389.3526798707741 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 667.7853288001498, + "y": 356.50824847738016 + }, + "rect": { + "x": 728.140625, + "y": 290.1875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 767.1128318451135, + "y": 414.5230914646984 + }, + "rect": { + "x": 716.1875, + "y": 427.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 663.4913693517623, + "y": 355.7956295110371 + }, + "rect": { + "x": 713.515625, + "y": 329.765625, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 761.3585990500081, + "y": 413.35239581872736 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 664.268955307759, + "y": 355.50774744386507 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 762.1085361077832, + "y": 412.866517388127 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": 775.9270468569453, + "y": 416.6414491583538 + }, + "rect": { + "x": 738.546875, + "y": 296.453125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 666.2135330479881, + "y": 357.7789171806743 + }, + "rect": { + "x": 695.828125, + "y": 373.015625, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 664.3671376809975, + "y": 357.1866840216207 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 769.1005827296628, + "y": 407.81083753058317 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": true, + "active": false, + "anchor": { + "x": 706.3800295155046, + "y": 403.80536797117014 + }, + "rect": { + "x": 720.375, + "y": 430.796875, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 9.816043685724315, + 6.70288079141373, + 14.030331363510985 + ] + }, + { + "task": "87", + "view": "moved", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 700.977379006869, + "y": 401.3544446750021 + }, + "rect": { + "x": 636.1875, + "y": 428.1875, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 684.3571599557089, + "y": 414.6881190279016 + }, + "rect": { + "x": 627.5, + "y": 327.515625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 715.564893581757, + "y": 372.14251502629907 + }, + "rect": { + "x": 658.828125, + "y": 384.96875, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 714.9480448978451, + "y": 373.41811055742215 + }, + "rect": { + "x": 770.765625, + "y": 314.78125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 700.977379006869, + "y": 401.3544446750021 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 722.742762618439, + "y": 367.48942427784505 + }, + "rect": { + "x": 728.140625, + "y": 290.1875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 831.8240835319878, + "y": 427.45320085428966 + }, + "rect": { + "x": 716.1875, + "y": 427.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 718.2352571878336, + "y": 366.7341361799707 + }, + "rect": { + "x": 713.515625, + "y": 329.765625, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 825.7558478680634, + "y": 426.219763546913 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 718.9308677812754, + "y": 366.42987442028067 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 826.3932120369116, + "y": 425.71139165914434 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": 839.9536219367003, + "y": 429.4347516836707 + }, + "rect": { + "x": 738.546875, + "y": 296.453125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 720.9042319037103, + "y": 368.70679603270884 + }, + "rect": { + "x": 695.828125, + "y": 373.015625, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 718.9486320650484, + "y": 368.0927424679649 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 833.9260069491763, + "y": 420.76376000596446 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": false, + "active": false, + "anchor": { + "x": 764.7300716984633, + "y": 415.46442893268073 + }, + "rect": { + "x": 770.125, + "y": 398.734375, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 8.524265754943116, + 6.995737608306021, + 14.909330501281936 + ] + }, + { + "task": "88", + "view": "overview", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 638.7899826448115, + "y": 405.2799264463719 + }, + "rect": { + "x": 574.78125, + "y": 427.25, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 638.7899826448115, + "y": 405.2799264463719 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 645.1229218055283, + "y": 399.6844489094492 + }, + "rect": { + "x": 518.171875, + "y": 384.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": true, + "active": false, + "anchor": { + "x": 715.753207155546, + "y": 412.7972996241978 + }, + "rect": { + "x": 729.75, + "y": 397.796875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 643.8047453049863, + "y": 401.20333387669683 + }, + "rect": { + "x": 587.796875, + "y": 314.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 643.8149148671741, + "y": 403.8395488265355 + }, + "rect": { + "x": 467.8125, + "y": 346.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 640.8076117330829, + "y": 400.30431345001796 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 640.8222820156153, + "y": 402.93276885647066 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": true, + "active": false, + "anchor": { + "x": 667.1011086503868, + "y": 365.03148969680154 + }, + "rect": { + "x": 731.09375, + "y": 350.03125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": true, + "active": false, + "anchor": { + "x": 629.3237016051137, + "y": 365.93312080423925 + }, + "rect": { + "x": 453.3125, + "y": 308.921875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 629.3790072087198, + "y": 365.91423973243997 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 646.1052370362291, + "y": 398.54830956423524 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 647.1981699842889, + "y": 398.90659169634847 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 640.7319175380007, + "y": 396.24373763540643 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 647.703973768825, + "y": 400.98520880179177 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": false, + "active": false, + "anchor": { + "x": 714.0255623833602, + "y": 412.79301660662674 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 638.6846246707554, + "y": 391.8556565111872 + }, + "rect": { + "x": 0, + "y": 0, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 660.6131007191364, + "y": 363.7642625210792 + }, + "rect": { + "x": 0, + "y": 0, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 8.00099936990116, + 5.926042707244239, + 11.72027496155425 + ] + }, + { + "task": "88", + "view": "focus", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 607.9189631713717, + "y": 306.09511995587724 + }, + "rect": { + "x": 543.90625, + "y": 399.09375, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 607.9189631713717, + "y": 306.09511995587724 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 650.5000000000001, + "y": 376.39657598499076 + }, + "rect": { + "x": 594.5, + "y": 297.125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": false, + "active": false, + "anchor": { + "x": -29.439810580411905, + "y": 288.7938789662696 + }, + "rect": { + "x": 717.484375, + "y": 393.46875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 636.0636508534949, + "y": 357.0987986896946 + }, + "rect": { + "x": 511.421875, + "y": 342.09375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 636.232573669308, + "y": 375.50009333626724 + }, + "rect": { + "x": 700.21875, + "y": 360.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 665.0610213875584, + "y": 357.0987999852571 + }, + "rect": { + "x": 679.046875, + "y": 414.09375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 664.8906397509652, + "y": 375.5000950663704 + }, + "rect": { + "x": 728.890625, + "y": 318.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": false, + "active": false, + "anchor": { + "x": 1062.5647745096774, + "y": 791.3253917500346 + }, + "rect": { + "x": 712.953125, + "y": 309.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": false, + "active": false, + "anchor": { + "x": 1943.8114093160834, + "y": 984.5954435545151 + }, + "rect": { + "x": 470.890625, + "y": 212.546875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 1942.9373782471334, + "y": 984.252611488883 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 650.662480112516, + "y": 378.11593107055813 + }, + "rect": { + "x": 667.25, + "y": 411, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 641.3816239687811, + "y": 380.550976915813 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 691.3829600091524, + "y": 356.7566378897047 + }, + "rect": { + "x": 485.109375, + "y": 244.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 610.3217983913762, + "y": 362.2088947431505 + }, + "rect": { + "x": 434.3125, + "y": 305.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": false, + "active": false, + "anchor": { + "x": -18.03320624675021, + "y": 271.79953697411935 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 716.7571557224045, + "y": 332.2485504795562 + }, + "rect": { + "x": 0, + "y": 0, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 981.7910026397898, + "y": 558.3471560824672 + }, + "rect": { + "x": 0, + "y": 0, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + -0.13192710688830708, + 1.9741556587866769, + -0.675676123113613 + ] + }, + { + "task": "88", + "view": "hide-others", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": false, + "active": true, + "anchor": { + "x": 607.9189631713717, + "y": 306.09511995587724 + }, + "rect": { + "x": 543.90625, + "y": 399.09375, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 607.9189631713717, + "y": 306.09511995587724 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 650.5000000000001, + "y": 376.39657598499076 + }, + "rect": { + "x": 594.5, + "y": 297.125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": false, + "active": false, + "anchor": { + "x": -29.439810580411905, + "y": 288.7938789662696 + }, + "rect": { + "x": 717.484375, + "y": 393.46875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 636.0636508534949, + "y": 357.0987986896946 + }, + "rect": { + "x": 511.421875, + "y": 342.09375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 636.232573669308, + "y": 375.50009333626724 + }, + "rect": { + "x": 700.21875, + "y": 360.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 665.0610213875584, + "y": 357.0987999852571 + }, + "rect": { + "x": 679.046875, + "y": 414.09375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 664.8906397509652, + "y": 375.5000950663704 + }, + "rect": { + "x": 728.890625, + "y": 318.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": false, + "active": false, + "anchor": { + "x": 1062.5647745096774, + "y": 791.3253917500346 + }, + "rect": { + "x": 712.953125, + "y": 309.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": false, + "active": false, + "anchor": { + "x": 1943.8114093160834, + "y": 984.5954435545151 + }, + "rect": { + "x": 470.890625, + "y": 212.546875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 1942.9373782471334, + "y": 984.252611488883 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 650.662480112516, + "y": 378.11593107055813 + }, + "rect": { + "x": 667.25, + "y": 411, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 641.3816239687811, + "y": 380.550976915813 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 691.3829600091524, + "y": 356.7566378897047 + }, + "rect": { + "x": 485.109375, + "y": 244.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 610.3217983913762, + "y": 362.2088947431505 + }, + "rect": { + "x": 434.3125, + "y": 305.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": false, + "active": false, + "anchor": { + "x": -18.03320624675021, + "y": 271.79953697411935 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 716.7571557224045, + "y": 332.2485504795562 + }, + "rect": { + "x": 0, + "y": 0, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 981.7910026397898, + "y": 558.3471560824672 + }, + "rect": { + "x": 0, + "y": 0, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + -0.13192710688830708, + 1.9741556587866769, + -0.675676123113613 + ] + }, + { + "task": "88", + "view": "reset", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 638.7899826448115, + "y": 405.2799264463719 + }, + "rect": { + "x": 574.78125, + "y": 427.25, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 638.7899826448115, + "y": 405.2799264463719 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 645.1229218055283, + "y": 399.68444890944915 + }, + "rect": { + "x": 518.171875, + "y": 384.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": true, + "active": false, + "anchor": { + "x": 715.753207155546, + "y": 412.79729962419776 + }, + "rect": { + "x": 729.75, + "y": 397.796875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 643.8047453049863, + "y": 401.20333387669683 + }, + "rect": { + "x": 587.796875, + "y": 314.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 643.8149148671743, + "y": 403.8395488265354 + }, + "rect": { + "x": 467.8125, + "y": 346.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 640.8076117330829, + "y": 400.30431345001796 + }, + "rect": { + "x": 458.0625, + "y": 432.328125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 640.8222820156154, + "y": 402.93276885647066 + }, + "rect": { + "x": 462.015625, + "y": 432.8125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": true, + "active": false, + "anchor": { + "x": 667.1011086503868, + "y": 365.0314896968015 + }, + "rect": { + "x": 731.09375, + "y": 350.03125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": true, + "active": false, + "anchor": { + "x": 629.3237016051138, + "y": 365.9331208042392 + }, + "rect": { + "x": 453.3125, + "y": 308.921875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 629.3790072087198, + "y": 365.9142397324399 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 646.1052370362291, + "y": 398.5483095642352 + }, + "rect": { + "x": 709.609375, + "y": 426.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 647.198169984289, + "y": 398.90659169634847 + }, + "rect": { + "x": 690.953125, + "y": 320.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 640.7319175380007, + "y": 396.24373763540643 + }, + "rect": { + "x": 485.109375, + "y": 244.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 647.703973768825, + "y": 400.9852088017917 + }, + "rect": { + "x": 414.75, + "y": 393.953125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": false, + "active": false, + "anchor": { + "x": 714.0255623833602, + "y": 412.7930166066267 + }, + "rect": { + "x": 746.390625, + "y": 336.03125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 638.6846246707554, + "y": 391.85565651118714 + }, + "rect": { + "x": 0, + "y": 0, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 660.6131007191365, + "y": 363.76426252107916 + }, + "rect": { + "x": 0, + "y": 0, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 8.00099936990116, + 5.926042707244239, + 11.72027496155425 + ] + }, + { + "task": "88", + "view": "moved", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 700.2508612411232, + "y": 417.56057104394637 + }, + "rect": { + "x": 635.890625, + "y": 330.484375, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 700.2508612411232, + "y": 417.56057104394637 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 704.9674166427767, + "y": 411.6421200167042 + }, + "rect": { + "x": 648.609375, + "y": 426.59375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": true, + "active": false, + "anchor": { + "x": 781.3987434629654, + "y": 425.9140906499767 + }, + "rect": { + "x": 725.015625, + "y": 380.28125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 704.072094429885, + "y": 413.2454965067188 + }, + "rect": { + "x": 647.71875, + "y": 290.171875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 703.9907379306599, + "y": 415.86342341614375 + }, + "rect": { + "x": 527.640625, + "y": 400.78125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 700.8661465704382, + "y": 412.3047523996959 + }, + "rect": { + "x": 458.0625, + "y": 432.328125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 700.7899234534553, + "y": 414.9150461794162 + }, + "rect": { + "x": 462.015625, + "y": 432.8125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": false, + "active": false, + "anchor": { + "x": 721.8446353699463, + "y": 375.9699242101844 + }, + "rect": { + "x": 770.65625, + "y": 315.921875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": true, + "active": false, + "anchor": { + "x": 681.0828002096049, + "y": 376.2752296248364 + }, + "rect": { + "x": 504.78125, + "y": 361.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 681.14247670686, + "y": 376.25722191171184 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 705.8611034344449, + "y": 410.4882716119087 + }, + "rect": { + "x": 513.28125, + "y": 434.171875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 706.9914539273885, + "y": 410.8540302328214 + }, + "rect": { + "x": 690.953125, + "y": 320.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 700.4159077973754, + "y": 408.169337940516 + }, + "rect": { + "x": 485.109375, + "y": 244.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 708.0228464070648, + "y": 413.03766646778143 + }, + "rect": { + "x": 414.75, + "y": 393.953125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": false, + "active": false, + "anchor": { + "x": 779.9549633574848, + "y": 425.96652730783546 + }, + "rect": { + "x": 627.796875, + "y": 363.734375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 698.2894641686515, + "y": 403.7654415140501 + }, + "rect": { + "x": 0, + "y": 0, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 716.378376621533, + "y": 374.90685517324664 + }, + "rect": { + "x": 0, + "y": 0, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 6.9187559685577975, + 6.171396300975659, + 12.456694894091592 + ] + }, + { + "task": "89", + "view": "overview", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": true, + "active": true, + "anchor": { + "x": 642.8189370023163, + "y": 366.666527722089 + }, + "rect": { + "x": 584.8125, + "y": 379.671875, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 642.8189370023163, + "y": 366.666527722089 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 642.6931021301593, + "y": 368.05260606733856 + }, + "rect": { + "x": 565.6875, + "y": 425.046875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 643.6304644726474, + "y": 366.5570092344449 + }, + "rect": { + "x": 587.625, + "y": 309.546875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 642.7371854550294, + "y": 366.92554413402087 + }, + "rect": { + "x": 466.734375, + "y": 351.921875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 643.5562709141161, + "y": 366.6759763810965 + }, + "rect": { + "x": 707.546875, + "y": 351.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 644.4472658349755, + "y": 366.30803657583334 + }, + "rect": { + "x": 468.4375, + "y": 309.296875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 640.882387631276, + "y": 367.4733290632396 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 638.3151564873942, + "y": 363.52185683555706 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 641.3994869739605, + "y": 365.6273410857249 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 640.7192029116841, + "y": 365.83631749694166 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 639.0503112857625, + "y": 364.246450426524 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": true, + "active": false, + "anchor": { + "x": 697.2663432414959, + "y": 349.8011503587786 + }, + "rect": { + "x": 711.265625, + "y": 292.796875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 697.1804627419688, + "y": 351.09182110191955 + }, + "rect": { + "x": 0, + "y": 0, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 697.0686915215941, + "y": 349.57006299354174 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 698.1526585481878, + "y": 349.820151861668 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 698.7413378836552, + "y": 349.3094637271485 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 697.6488360864807, + "y": 349.0647569322178 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 695.3449397127022, + "y": 351.24506635128057 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 693.0944159437796, + "y": 349.09127423939583 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 696.0003137502707, + "y": 348.3921382397449 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 695.2730962717185, + "y": 349.0184688847361 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 693.6831320407779, + "y": 347.6144069741894 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 8.00099936990116, + 5.926042707244239, + 11.72027496155425 + ] + }, + { + "task": "89", + "view": "focus", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": true, + "active": true, + "anchor": { + "x": 652.5584804612291, + "y": 357.20490442488443 + }, + "rect": { + "x": 594.546875, + "y": 414.203125, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 652.5584804612291, + "y": 357.20490442488443 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 650.5000000000011, + "y": 376.39657598499014 + }, + "rect": { + "x": 573.5, + "y": 296.875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 674.9126141579105, + "y": 359.70199811806407 + }, + "rect": { + "x": 699.40625, + "y": 344.6875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 640.5537510267602, + "y": 373.9472928447627 + }, + "rect": { + "x": 464.546875, + "y": 400.9375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 653.2661182023345, + "y": 387.71689274232335 + }, + "rect": { + "x": 717.265625, + "y": 414.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 687.8178336933967, + "y": 373.29243211990325 + }, + "rect": { + "x": 511.8125, + "y": 358.28125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 629.9620848711176, + "y": 320.09225468750884 + }, + "rect": { + "x": 478.140625, + "y": 240.625, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 597.944103451193, + "y": 193.9603797787691 + }, + "rect": { + "x": 467.34375, + "y": 178.953125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": true, + "active": false, + "anchor": { + "x": 574.5802786780074, + "y": 383.79670335196056 + }, + "rect": { + "x": 448.578125, + "y": 296.78125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 564.3486797711024, + "y": 372.1708848689591 + }, + "rect": { + "x": 432.484375, + "y": 328.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": true, + "active": false, + "anchor": { + "x": 594.8124524192534, + "y": 238.9438160653731 + }, + "rect": { + "x": 459.421875, + "y": 223.9375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 2491.9386128056135, + "y": -155.7408019435299 + }, + "rect": { + "x": 711.265625, + "y": 292.796875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 2473.9649141945674, + "y": -131.19319197537348 + }, + "rect": { + "x": 0, + "y": 0, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 2490.9335817151236, + "y": -170.93115912689058 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 2515.658664560976, + "y": -148.30851816590248 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 2539.2594316876316, + "y": -162.16606578807165 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 2514.0971057942775, + "y": -184.55646874882694 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 2419.664241450587, + "y": -123.89744382684037 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 2378.6420358315418, + "y": -156.2863010366514 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 2471.2357629615512, + "y": -172.63220500024102 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 2441.846066198072, + "y": -155.40004707118212 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 2426.848723163082, + "y": -254.62406824963594 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 1.1355947792282919, + 3.5342737911906745, + 2.2495395624859036 + ] + }, + { + "task": "89", + "view": "hide-others", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": false, + "active": true, + "anchor": { + "x": 652.5584804612291, + "y": 357.20490442488443 + }, + "rect": { + "x": 594.546875, + "y": 414.203125, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 652.5584804612291, + "y": 357.20490442488443 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 650.5000000000011, + "y": 376.39657598499014 + }, + "rect": { + "x": 573.5, + "y": 296.875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 674.9126141579105, + "y": 359.70199811806407 + }, + "rect": { + "x": 699.40625, + "y": 344.6875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 640.5537510267602, + "y": 373.9472928447627 + }, + "rect": { + "x": 464.546875, + "y": 400.9375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 653.2661182023345, + "y": 387.71689274232335 + }, + "rect": { + "x": 717.265625, + "y": 414.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 687.8178336933967, + "y": 373.29243211990325 + }, + "rect": { + "x": 511.8125, + "y": 358.28125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 629.9620848711176, + "y": 320.09225468750884 + }, + "rect": { + "x": 478.140625, + "y": 240.625, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 597.944103451193, + "y": 193.9603797787691 + }, + "rect": { + "x": 467.34375, + "y": 178.953125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 574.5802786780074, + "y": 383.79670335196056 + }, + "rect": { + "x": 448.578125, + "y": 296.78125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 564.3486797711024, + "y": 372.1708848689591 + }, + "rect": { + "x": 432.484375, + "y": 328.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 594.8124524192534, + "y": 238.9438160653731 + }, + "rect": { + "x": 459.421875, + "y": 223.9375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 2491.9386128056135, + "y": -155.7408019435299 + }, + "rect": { + "x": 711.265625, + "y": 292.796875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 2473.9649141945674, + "y": -131.19319197537348 + }, + "rect": { + "x": 0, + "y": 0, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 2490.9335817151236, + "y": -170.93115912689058 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 2515.658664560976, + "y": -148.30851816590248 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 2539.2594316876316, + "y": -162.16606578807165 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 2514.0971057942775, + "y": -184.55646874882694 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 2419.664241450587, + "y": -123.89744382684037 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 2378.6420358315418, + "y": -156.2863010366514 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 2471.2357629615512, + "y": -172.63220500024102 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 2441.846066198072, + "y": -155.40004707118212 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 2426.848723163082, + "y": -254.62406824963594 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 1.1355947792282919, + 3.5342737911906745, + 2.2495395624859036 + ] + }, + { + "task": "89", + "view": "reset", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": true, + "active": true, + "anchor": { + "x": 642.8189370023163, + "y": 366.666527722089 + }, + "rect": { + "x": 584.8125, + "y": 379.671875, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 642.8189370023163, + "y": 366.666527722089 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 642.6931021301593, + "y": 368.0526060673385 + }, + "rect": { + "x": 565.6875, + "y": 425.046875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 643.6304644726474, + "y": 366.5570092344448 + }, + "rect": { + "x": 587.625, + "y": 309.546875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 642.7371854550294, + "y": 366.92554413402087 + }, + "rect": { + "x": 466.734375, + "y": 351.921875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 643.5562709141161, + "y": 366.6759763810965 + }, + "rect": { + "x": 707.546875, + "y": 351.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 644.4472658349756, + "y": 366.3080365758333 + }, + "rect": { + "x": 468.4375, + "y": 309.296875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 640.8823876312761, + "y": 367.4733290632396 + }, + "rect": { + "x": 478.140625, + "y": 240.625, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 638.3151564873942, + "y": 363.52185683555706 + }, + "rect": { + "x": 459.984375, + "y": 307.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 641.3994869739605, + "y": 365.6273410857249 + }, + "rect": { + "x": 458.59375, + "y": 407.140625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 640.7192029116841, + "y": 365.8363174969416 + }, + "rect": { + "x": 432.484375, + "y": 328.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 639.0503112857625, + "y": 364.24645042652395 + }, + "rect": { + "x": 459.421875, + "y": 223.9375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": true, + "active": false, + "anchor": { + "x": 697.2663432414959, + "y": 349.8011503587786 + }, + "rect": { + "x": 711.265625, + "y": 292.796875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 697.1804627419688, + "y": 351.0918211019195 + }, + "rect": { + "x": 0, + "y": 0, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 697.0686915215941, + "y": 349.57006299354174 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 698.1526585481878, + "y": 349.82015186166797 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 698.7413378836552, + "y": 349.30946372714845 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 697.6488360864807, + "y": 349.0647569322178 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 695.3449397127022, + "y": 351.24506635128057 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 693.0944159437796, + "y": 349.0912742393958 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 696.0003137502707, + "y": 348.3921382397449 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 695.2730962717185, + "y": 349.0184688847361 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 693.6831320407779, + "y": 347.6144069741894 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 8.00099936990116, + 5.926042707244239, + 11.72027496155425 + ] + }, + { + "task": "89", + "view": "moved", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": true, + "active": true, + "anchor": { + "x": 703.517165243472, + "y": 378.7947853350028 + }, + "rect": { + "x": 644.71875, + "y": 391.6875, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 703.517165243472, + "y": 378.7947853350028 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 703.333537213104, + "y": 380.1693158916042 + }, + "rect": { + "x": 625.53125, + "y": 293, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 704.3093573857354, + "y": 378.68140340938635 + }, + "rect": { + "x": 767.515625, + "y": 363.515625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 703.51562902082, + "y": 379.06982976208224 + }, + "rect": { + "x": 526.71875, + "y": 363.90625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 704.4083541604241, + "y": 378.83497612918615 + }, + "rect": { + "x": 767.609375, + "y": 405.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 705.1994175742246, + "y": 378.4470687713868 + }, + "rect": { + "x": 643.78125, + "y": 434.359375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 701.3369056241845, + "y": 379.55289035075316 + }, + "rect": { + "x": 478.140625, + "y": 240.625, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 698.6388902739678, + "y": 375.5752858191782 + }, + "rect": { + "x": 641.84375, + "y": 432.40625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 702.5075203230508, + "y": 377.8374828337138 + }, + "rect": { + "x": 458.59375, + "y": 407.140625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 701.7655868160991, + "y": 378.0341409224955 + }, + "rect": { + "x": 432.484375, + "y": 328.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": true, + "active": false, + "anchor": { + "x": 699.5338046810391, + "y": 376.3318013582255 + }, + "rect": { + "x": 522.734375, + "y": 403.171875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 753.3381576279029, + "y": 361.0049931958374 + }, + "rect": { + "x": 737.0625, + "y": 297.953125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 753.2187190610359, + "y": 362.288958621583 + }, + "rect": { + "x": 0, + "y": 0, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 753.0709356191791, + "y": 360.76000482542315 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 754.2223385868394, + "y": 361.0235682296162 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 754.7527602039908, + "y": 360.501239481587 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 753.594006637809, + "y": 360.24329476283026 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 751.5396594012416, + "y": 362.4734671896097 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 749.5814524088543, + "y": 360.3780835893591 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 752.2880245552227, + "y": 359.63911985461806 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 751.632731807349, + "y": 360.27982195142397 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 749.5873379213976, + "y": 358.78475955633957 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 6.9250480292059855, + 6.169969838416412, + 12.452413418341953 + ] + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-label-placement-20260925-laptop/task-86-focus.png b/reports/bridge-label-placement-20260925-laptop/task-86-focus.png new file mode 100644 index 0000000..3e0e96b Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-86-focus.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-86-hide-others.png b/reports/bridge-label-placement-20260925-laptop/task-86-hide-others.png new file mode 100644 index 0000000..065ca69 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-86-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-86-moved.png b/reports/bridge-label-placement-20260925-laptop/task-86-moved.png new file mode 100644 index 0000000..075d251 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-86-moved.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-86-overview.png b/reports/bridge-label-placement-20260925-laptop/task-86-overview.png new file mode 100644 index 0000000..b73b3f4 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-86-overview.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-86-reset.png b/reports/bridge-label-placement-20260925-laptop/task-86-reset.png new file mode 100644 index 0000000..01dd80f Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-86-reset.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-87-focus.png b/reports/bridge-label-placement-20260925-laptop/task-87-focus.png new file mode 100644 index 0000000..7f5ae8a Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-87-focus.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-87-hide-others.png b/reports/bridge-label-placement-20260925-laptop/task-87-hide-others.png new file mode 100644 index 0000000..8df244f Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-87-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-87-moved.png b/reports/bridge-label-placement-20260925-laptop/task-87-moved.png new file mode 100644 index 0000000..4b3b7fe Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-87-moved.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-87-overview.png b/reports/bridge-label-placement-20260925-laptop/task-87-overview.png new file mode 100644 index 0000000..c140f69 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-87-overview.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-87-reset.png b/reports/bridge-label-placement-20260925-laptop/task-87-reset.png new file mode 100644 index 0000000..6ee42f6 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-87-reset.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-88-focus.png b/reports/bridge-label-placement-20260925-laptop/task-88-focus.png new file mode 100644 index 0000000..3ffe0b4 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-88-focus.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-88-hide-others.png b/reports/bridge-label-placement-20260925-laptop/task-88-hide-others.png new file mode 100644 index 0000000..144b24c Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-88-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-88-moved.png b/reports/bridge-label-placement-20260925-laptop/task-88-moved.png new file mode 100644 index 0000000..a8f9248 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-88-moved.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-88-overview.png b/reports/bridge-label-placement-20260925-laptop/task-88-overview.png new file mode 100644 index 0000000..462c154 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-88-overview.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-88-reset.png b/reports/bridge-label-placement-20260925-laptop/task-88-reset.png new file mode 100644 index 0000000..3cd54c3 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-88-reset.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-89-focus.png b/reports/bridge-label-placement-20260925-laptop/task-89-focus.png new file mode 100644 index 0000000..dd439f3 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-89-focus.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-89-hide-others.png b/reports/bridge-label-placement-20260925-laptop/task-89-hide-others.png new file mode 100644 index 0000000..410d704 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-89-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-89-moved.png b/reports/bridge-label-placement-20260925-laptop/task-89-moved.png new file mode 100644 index 0000000..5bcc2dd Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-89-moved.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-89-overview.png b/reports/bridge-label-placement-20260925-laptop/task-89-overview.png new file mode 100644 index 0000000..220c858 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-89-overview.png differ diff --git a/reports/bridge-label-placement-20260925-laptop/task-89-reset.png b/reports/bridge-label-placement-20260925-laptop/task-89-reset.png new file mode 100644 index 0000000..000d1e3 Binary files /dev/null and b/reports/bridge-label-placement-20260925-laptop/task-89-reset.png differ diff --git a/reports/bridge-label-placement-20260925-stable/index.html b/reports/bridge-label-placement-20260925-stable/index.html new file mode 100644 index 0000000..f2cf5ff --- /dev/null +++ b/reports/bridge-label-placement-20260925-stable/index.html @@ -0,0 +1 @@ +部件标签位置检查

部件标签位置检查:通过

http://127.0.0.1:6180 · 1920 × 945 · 教员预览(root)· 未创建任务或提交训练成绩。

标签中心距部件投影不超过128像素,互不重叠;检查聚焦、隐藏其他、复位和移动视角。

检查数据

任务 87 · overview

任务 87 · focus

任务 87 · hide-others

任务 87 · reset

任务 87 · moved

\ No newline at end of file diff --git a/reports/bridge-label-placement-20260925-stable/result.json b/reports/bridge-label-placement-20260925-stable/result.json new file mode 100644 index 0000000..63e2034 --- /dev/null +++ b/reports/bridge-label-placement-20260925-stable/result.json @@ -0,0 +1,1363 @@ +{ + "pass": true, + "baseUrl": "http://127.0.0.1:6180", + "viewport": { + "width": 1920, + "height": 945 + }, + "accountRole": "root", + "serverMutations": [], + "checks": [ + { + "task": "87", + "view": "overview", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 595.0169113857233, + "y": 289.52556195068297 + }, + "rect": { + "x": 531.015625, + "y": 346.515625, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 547.4055924807053, + "y": 322.4392765695298 + }, + "rect": { + "x": 491.390625, + "y": 279.53125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 632.4900450250362, + "y": 226.8836811810685 + }, + "rect": { + "x": 576.484375, + "y": 243.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 631.0451295899397, + "y": 229.51351578163494 + }, + "rect": { + "x": 575.03125, + "y": 172.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 595.0169113857233, + "y": 289.52556195068297 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 647.9026986939409, + "y": 217.2947467519867 + }, + "rect": { + "x": 588.890625, + "y": 130.28125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 891.9566932597559, + "y": 351.67072723812805 + }, + "rect": { + "x": 832.953125, + "y": 366.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 638.6884846594746, + "y": 215.81970352024092 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 877.3213321181075, + "y": 348.4913892534385 + }, + "rect": { + "x": 801.3125, + "y": 291.484375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 640.2195907817843, + "y": 215.22532927184895 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 878.6119160429071, + "y": 347.2039217800587 + }, + "rect": { + "x": 802.609375, + "y": 404.203125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": true, + "active": false, + "anchor": { + "x": 909.4849400235194, + "y": 355.55165496530736 + }, + "rect": { + "x": 850.484375, + "y": 232.546875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": true, + "active": false, + "anchor": { + "x": 644.3067690201934, + "y": 219.9603655378002 + }, + "rect": { + "x": 710.796875, + "y": 204.953125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 640.3346642777382, + "y": 218.7296692291072 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 897.0610314611231, + "y": 336.20112081541106 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": true, + "active": false, + "anchor": { + "x": 735.7572614539419, + "y": 319.6273443684691 + }, + "rect": { + "x": 679.75, + "y": 346.625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163864, + 9.330622589672995 + ] + }, + { + "task": "87", + "view": "focus", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": false, + "active": true, + "anchor": { + "x": 3339.601326321919, + "y": 599.6503038182454 + }, + "rect": { + "x": 1251.546875, + "y": 382.125, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 789.999999999997, + "y": 369.7082086267604 + }, + "rect": { + "x": 734, + "y": 293.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 5458.229263591109, + "y": 29.953502724469207 + }, + "rect": { + "x": 980.125, + "y": 209.375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 5385.173500993679, + "y": 62.28736848198816 + }, + "rect": { + "x": 950.203125, + "y": 269.171875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 3339.601326321919, + "y": 599.6503038182454 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 5990.826345900855, + "y": -85.08787856433082 + }, + "rect": { + "x": 588.890625, + "y": 130.28125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": -295790.2545594947, + "y": -117795.69870207725 + }, + "rect": { + "x": 832.953125, + "y": 366.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 5770.01669527255, + "y": -105.62439501855947 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 123481.56235014512, + "y": 48179.93005583951 + }, + "rect": { + "x": 801.3125, + "y": 291.484375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 5826.702502965317, + "y": -104.27431116390396 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 125588.90998541293, + "y": 48189.29564631933 + }, + "rect": { + "x": 802.609375, + "y": 404.203125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": -110264.44820411433, + "y": -45270.7574944021 + }, + "rect": { + "x": 850.484375, + "y": 232.546875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 5911.428100548145, + "y": -2.627288386274038 + }, + "rect": { + "x": 710.796875, + "y": 204.953125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 5822.675222583378, + "y": -22.60410065308515 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": -144410.92056214364, + "y": -46269.52000235024 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": false, + "active": false, + "anchor": { + "x": 8316.529829917139, + "y": 2815.707864189142 + }, + "rect": { + "x": 679.75, + "y": 346.625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.0083158564383634, + 1.3898189780176327, + 3.3301780128479006 + ] + }, + { + "task": "87", + "view": "hide-others", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": false, + "active": true, + "anchor": { + "x": 3339.601326321919, + "y": 599.6503038182454 + }, + "rect": { + "x": 1251.546875, + "y": 382.125, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 789.999999999997, + "y": 369.7082086267604 + }, + "rect": { + "x": 734, + "y": 293.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 5458.229263591109, + "y": 29.953502724469207 + }, + "rect": { + "x": 980.125, + "y": 209.375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 5385.173500993679, + "y": 62.28736848198816 + }, + "rect": { + "x": 950.203125, + "y": 269.171875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 3339.601326321919, + "y": 599.6503038182454 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 5990.826345900855, + "y": -85.08787856433082 + }, + "rect": { + "x": 588.890625, + "y": 130.28125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": -295790.2545594947, + "y": -117795.69870207725 + }, + "rect": { + "x": 832.953125, + "y": 366.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 5770.01669527255, + "y": -105.62439501855947 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 123481.56235014512, + "y": 48179.93005583951 + }, + "rect": { + "x": 801.3125, + "y": 291.484375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 5826.702502965317, + "y": -104.27431116390396 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 125588.90998541293, + "y": 48189.29564631933 + }, + "rect": { + "x": 802.609375, + "y": 404.203125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": -110264.44820411433, + "y": -45270.7574944021 + }, + "rect": { + "x": 850.484375, + "y": 232.546875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 5911.428100548145, + "y": -2.627288386274038 + }, + "rect": { + "x": 710.796875, + "y": 204.953125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 5822.675222583378, + "y": -22.60410065308515 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": -144410.92056214364, + "y": -46269.52000235024 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": false, + "active": false, + "anchor": { + "x": 8316.529829917139, + "y": 2815.707864189142 + }, + "rect": { + "x": 679.75, + "y": 346.625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.0083158564383634, + 1.3898189780176327, + 3.3301780128479006 + ] + }, + { + "task": "87", + "view": "reset", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 595.0169113857235, + "y": 289.52556195068297 + }, + "rect": { + "x": 531.015625, + "y": 346.515625, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 547.4055924807054, + "y": 322.43927656952974 + }, + "rect": { + "x": 491.390625, + "y": 279.53125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 632.4900450250362, + "y": 226.8836811810685 + }, + "rect": { + "x": 576.484375, + "y": 243.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 631.0451295899397, + "y": 229.51351578163494 + }, + "rect": { + "x": 575.03125, + "y": 172.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 595.0169113857235, + "y": 289.52556195068297 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 647.902698693941, + "y": 217.2947467519867 + }, + "rect": { + "x": 588.890625, + "y": 130.28125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 891.9566932597559, + "y": 351.67072723812805 + }, + "rect": { + "x": 832.953125, + "y": 366.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 638.6884846594746, + "y": 215.81970352024092 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 877.3213321181075, + "y": 348.49138925343846 + }, + "rect": { + "x": 801.3125, + "y": 291.484375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 640.2195907817843, + "y": 215.22532927184895 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 878.6119160429071, + "y": 347.2039217800587 + }, + "rect": { + "x": 802.609375, + "y": 404.203125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": true, + "active": false, + "anchor": { + "x": 909.4849400235194, + "y": 355.55165496530736 + }, + "rect": { + "x": 850.484375, + "y": 232.546875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": true, + "active": false, + "anchor": { + "x": 644.3067690201934, + "y": 219.9603655378002 + }, + "rect": { + "x": 710.796875, + "y": 204.953125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 640.3346642777382, + "y": 218.72966922910723 + }, + "rect": { + "x": 723.515625, + "y": 188.828125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 897.0610314611231, + "y": 336.20112081541106 + }, + "rect": { + "x": 862, + "y": 255.140625, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": true, + "active": false, + "anchor": { + "x": 735.7572614539419, + "y": 319.62734436846904 + }, + "rect": { + "x": 679.75, + "y": 346.625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163864, + 9.330622589672995 + ] + }, + { + "task": "87", + "view": "moved", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 658.5362787828268, + "y": 302.22048904032937 + }, + "rect": { + "x": 593.328125, + "y": 358.96875, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 620.8585853771588, + "y": 337.1195296568631 + }, + "rect": { + "x": 563.46875, + "y": 293.890625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 688.133049329866, + "y": 238.0044449991746 + }, + "rect": { + "x": 631.078125, + "y": 254.046875, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 686.9096167801852, + "y": 240.67854498205162 + }, + "rect": { + "x": 629.859375, + "y": 183.46875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 658.5362787828268, + "y": 302.22048904032937 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 702.9427803836458, + "y": 228.295010965746 + }, + "rect": { + "x": 642.90625, + "y": 141.078125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 964.056718510338, + "y": 366.0805773551105 + }, + "rect": { + "x": 903.6875, + "y": 380.8125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 693.3935771106312, + "y": 226.75301706787351 + }, + "rect": { + "x": 616.359375, + "y": 103.546875, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 948.8125647040333, + "y": 362.77956658293544 + }, + "rect": { + "x": 871.46875, + "y": 305.5, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 694.796481427951, + "y": 226.13302051507577 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 949.88595957715, + "y": 361.4486918892263 + }, + "rect": { + "x": 872.546875, + "y": 418.171875, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": true, + "active": false, + "anchor": { + "x": 980.2631369980433, + "y": 369.6973256000748 + }, + "rect": { + "x": 919.921875, + "y": 246.421875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": true, + "active": false, + "anchor": { + "x": 698.9286541190289, + "y": 230.87704933431397 + }, + "rect": { + "x": 764.390625, + "y": 215.671875, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 694.7859994830742, + "y": 229.61226706803282 + }, + "rect": { + "x": 723.515625, + "y": 188.828125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 969.3835105461112, + "y": 350.65543036774886 + }, + "rect": { + "x": 862, + "y": 255.140625, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": true, + "active": false, + "anchor": { + "x": 796.3255626463751, + "y": 331.73247386030886 + }, + "rect": { + "x": 739.1875, + "y": 358.5, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 5.008680256369452, + 4.738505421190706, + 9.75160369286139 + ] + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-label-placement-20260925-stable/task-87-focus.png b/reports/bridge-label-placement-20260925-stable/task-87-focus.png new file mode 100644 index 0000000..c7d133a Binary files /dev/null and b/reports/bridge-label-placement-20260925-stable/task-87-focus.png differ diff --git a/reports/bridge-label-placement-20260925-stable/task-87-hide-others.png b/reports/bridge-label-placement-20260925-stable/task-87-hide-others.png new file mode 100644 index 0000000..d5c3b63 Binary files /dev/null and b/reports/bridge-label-placement-20260925-stable/task-87-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925-stable/task-87-moved.png b/reports/bridge-label-placement-20260925-stable/task-87-moved.png new file mode 100644 index 0000000..888a8e6 Binary files /dev/null and b/reports/bridge-label-placement-20260925-stable/task-87-moved.png differ diff --git a/reports/bridge-label-placement-20260925-stable/task-87-overview.png b/reports/bridge-label-placement-20260925-stable/task-87-overview.png new file mode 100644 index 0000000..5250ec8 Binary files /dev/null and b/reports/bridge-label-placement-20260925-stable/task-87-overview.png differ diff --git a/reports/bridge-label-placement-20260925-stable/task-87-reset.png b/reports/bridge-label-placement-20260925-stable/task-87-reset.png new file mode 100644 index 0000000..8f490ab Binary files /dev/null and b/reports/bridge-label-placement-20260925-stable/task-87-reset.png differ diff --git a/reports/bridge-label-placement-20260925/failure.png b/reports/bridge-label-placement-20260925/failure.png new file mode 100644 index 0000000..99fc1de Binary files /dev/null and b/reports/bridge-label-placement-20260925/failure.png differ diff --git a/reports/bridge-label-placement-20260925/index.html b/reports/bridge-label-placement-20260925/index.html new file mode 100644 index 0000000..05fadde --- /dev/null +++ b/reports/bridge-label-placement-20260925/index.html @@ -0,0 +1 @@ +部件标签位置检查

部件标签位置检查:通过

http://127.0.0.1:6180 · 1920 × 945 · 教员预览(root)· 未创建任务或提交训练成绩。

标签中心距部件投影不超过128像素,互不重叠;检查聚焦、隐藏其他、复位和移动视角。

检查数据

任务 86 · overview

任务 86 · focus

任务 86 · hide-others

任务 86 · reset

任务 86 · moved

任务 87 · overview

任务 87 · focus

任务 87 · hide-others

任务 87 · reset

任务 87 · moved

任务 88 · overview

任务 88 · focus

任务 88 · hide-others

任务 88 · reset

任务 88 · moved

任务 89 · overview

任务 89 · focus

任务 89 · hide-others

任务 89 · reset

任务 89 · moved

\ No newline at end of file diff --git a/reports/bridge-label-placement-20260925/result.json b/reports/bridge-label-placement-20260925/result.json new file mode 100644 index 0000000..016fdc9 --- /dev/null +++ b/reports/bridge-label-placement-20260925/result.json @@ -0,0 +1,5493 @@ +{ + "pass": true, + "baseUrl": "http://127.0.0.1:6180", + "viewport": { + "width": 1920, + "height": 945 + }, + "accountRole": "root", + "serverMutations": [], + "checks": [ + { + "task": "86", + "view": "overview", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": true, + "active": true, + "anchor": { + "x": 774.5876582429028, + "y": 375.04846819153977 + }, + "rect": { + "x": 718.578125, + "y": 396.59375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 774.5876582429028, + "y": 375.04846819153977 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 660.2861998123497, + "y": 411.26072971918205 + }, + "rect": { + "x": 604.28125, + "y": 360.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 668.8761415511328, + "y": 409.2953688205981 + }, + "rect": { + "x": 612.875, + "y": 436.28125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": true, + "active": false, + "anchor": { + "x": 953.7561975235438, + "y": 318.4135403414699 + }, + "rect": { + "x": 897.75, + "y": 261.40625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": true, + "active": false, + "anchor": { + "x": 820.1447649663149, + "y": 317.36043728391854 + }, + "rect": { + "x": 764.140625, + "y": 269.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 817.8142054351135, + "y": 316.8897887079125 + }, + "rect": { + "x": 761.8125, + "y": 334.5, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 815.6661509607335, + "y": 319.84735448892735 + }, + "rect": { + "x": 759.65625, + "y": 232.84375, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 4.2568983919053, + 2.47982911756675, + 6.903596207500909 + ] + }, + { + "task": "86", + "view": "focus", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": false, + "active": true, + "anchor": { + "x": 2237.9012488399107, + "y": 466.4604902488779 + }, + "rect": { + "x": 1099.796875, + "y": 416.609375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 2237.9012488399107, + "y": 466.4604902488779 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 790, + "y": 369.70820862676135 + }, + "rect": { + "x": 734, + "y": 274.75, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 817.8112812305425, + "y": 363.4111023875403 + }, + "rect": { + "x": 761.796875, + "y": 389.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": false, + "active": false, + "anchor": { + "x": 4576.585311020776, + "y": 314.8556431909224 + }, + "rect": { + "x": 897.75, + "y": 261.40625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": false, + "active": false, + "anchor": { + "x": 2959.4232622474633, + "y": 213.49107700680014 + }, + "rect": { + "x": 933.171875, + "y": 106.625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 2942.620471990054, + "y": 209.97647909242346 + }, + "rect": { + "x": 925.5, + "y": 205.125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 2909.432597733438, + "y": 224.7240770731847 + }, + "rect": { + "x": 849.328125, + "y": 164.5625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 2.8723628675203736, + 1.3339831323857418, + 3.3942996223374293 + ] + }, + { + "task": "86", + "view": "hide-others", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": false, + "active": true, + "anchor": { + "x": 2237.9012488399107, + "y": 466.4604902488779 + }, + "rect": { + "x": 1099.796875, + "y": 416.609375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 2237.9012488399107, + "y": 466.4604902488779 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 790, + "y": 369.70820862676135 + }, + "rect": { + "x": 734, + "y": 274.75, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": false, + "active": false, + "anchor": { + "x": 817.8112812305425, + "y": 363.4111023875403 + }, + "rect": { + "x": 761.796875, + "y": 389.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": false, + "active": false, + "anchor": { + "x": 4576.585311020776, + "y": 314.8556431909224 + }, + "rect": { + "x": 897.75, + "y": 261.40625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": false, + "active": false, + "anchor": { + "x": 2959.4232622474633, + "y": 213.49107700680014 + }, + "rect": { + "x": 933.171875, + "y": 106.625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 2942.620471990054, + "y": 209.97647909242346 + }, + "rect": { + "x": 925.5, + "y": 205.125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 2909.432597733438, + "y": 224.7240770731847 + }, + "rect": { + "x": 849.328125, + "y": 164.5625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 2.8723628675203736, + 1.3339831323857418, + 3.3942996223374293 + ] + }, + { + "task": "86", + "view": "reset", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": true, + "active": true, + "anchor": { + "x": 774.5876582429028, + "y": 375.04846819153977 + }, + "rect": { + "x": 718.578125, + "y": 396.59375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 774.5876582429028, + "y": 375.04846819153977 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 660.2861998123497, + "y": 411.26072971918205 + }, + "rect": { + "x": 604.28125, + "y": 360.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 668.8761415511328, + "y": 409.2953688205981 + }, + "rect": { + "x": 612.875, + "y": 436.28125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": true, + "active": false, + "anchor": { + "x": 953.7561975235436, + "y": 318.4135403414699 + }, + "rect": { + "x": 897.75, + "y": 261.40625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": true, + "active": false, + "anchor": { + "x": 820.1447649663149, + "y": 317.36043728391854 + }, + "rect": { + "x": 764.140625, + "y": 269.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 817.8142054351135, + "y": 316.8897887079125 + }, + "rect": { + "x": 761.8125, + "y": 334.5, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 815.6661509607335, + "y": 319.8473544889274 + }, + "rect": { + "x": 759.65625, + "y": 232.84375, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 4.2568983919053, + 2.47982911756675, + 6.903596207500909 + ] + }, + { + "task": "86", + "view": "moved", + "labels": [ + { + "id": "front-pump-hydraulic-pump", + "text": "聚焦 · 液压泵", + "visible": true, + "active": true, + "anchor": { + "x": 838.302349168577, + "y": 387.7824324765443 + }, + "rect": { + "x": 781, + "y": 409.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-hydraulic-pump", + "text": "液压泵", + "visible": false, + "active": false, + "anchor": { + "x": 838.302349168577, + "y": 387.7824324765443 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-power-take-off", + "text": "取力器", + "visible": true, + "active": false, + "anchor": { + "x": 743.8844194871355, + "y": 427.9685992570019 + }, + "rect": { + "x": 686.171875, + "y": 449.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 752.6970630788027, + "y": 426.0477473625366 + }, + "rect": { + "x": 694.984375, + "y": 368.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-ball-valve-switch", + "text": "球阀开关", + "visible": true, + "active": false, + "anchor": { + "x": 1012.1385658636968, + "y": 330.08179114072027 + }, + "rect": { + "x": 954.9375, + "y": 272.84375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box", + "text": "辅助控制盒", + "visible": true, + "active": false, + "anchor": { + "x": 875.5826580879213, + "y": 328.440207754279 + }, + "rect": { + "x": 818.453125, + "y": 280.59375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 873.1354090344429, + "y": 327.9462377089616 + }, + "rect": { + "x": 816, + "y": 345.421875, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 871.3078373364245, + "y": 330.96785490682964 + }, + "rect": { + "x": 814.171875, + "y": 243.734375, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.8287250229291505, + 2.5817657683892494, + 7.212681266777116 + ] + }, + { + "task": "87", + "view": "overview", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 595.0169113857233, + "y": 289.52556195068297 + }, + "rect": { + "x": 531.015625, + "y": 346.515625, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 547.4055924807053, + "y": 322.4392765695298 + }, + "rect": { + "x": 491.390625, + "y": 279.53125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 632.4900450250362, + "y": 226.8836811810685 + }, + "rect": { + "x": 576.484375, + "y": 243.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 631.0451295899397, + "y": 229.51351578163494 + }, + "rect": { + "x": 575.03125, + "y": 172.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 595.0169113857233, + "y": 289.52556195068297 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 647.9026986939409, + "y": 217.2947467519867 + }, + "rect": { + "x": 588.890625, + "y": 130.28125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 891.9566932597559, + "y": 351.67072723812805 + }, + "rect": { + "x": 832.953125, + "y": 366.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 638.6884846594746, + "y": 215.81970352024092 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 877.3213321181075, + "y": 348.4913892534385 + }, + "rect": { + "x": 801.3125, + "y": 291.484375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 640.2195907817843, + "y": 215.22532927184895 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 878.6119160429071, + "y": 347.2039217800587 + }, + "rect": { + "x": 802.609375, + "y": 404.203125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": true, + "active": false, + "anchor": { + "x": 909.4849400235194, + "y": 355.55165496530736 + }, + "rect": { + "x": 850.484375, + "y": 232.546875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": true, + "active": false, + "anchor": { + "x": 644.3067690201934, + "y": 219.9603655378002 + }, + "rect": { + "x": 710.796875, + "y": 204.953125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 640.3346642777382, + "y": 218.7296692291072 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 897.0610314611231, + "y": 336.20112081541106 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": true, + "active": false, + "anchor": { + "x": 735.7572614539419, + "y": 319.6273443684691 + }, + "rect": { + "x": 679.75, + "y": 346.625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163864, + 9.330622589672995 + ] + }, + { + "task": "87", + "view": "focus", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": false, + "active": true, + "anchor": { + "x": 3339.601326321919, + "y": 599.6503038182454 + }, + "rect": { + "x": 1169.203125, + "y": 371.53125, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 789.999999999997, + "y": 369.7082086267604 + }, + "rect": { + "x": 734, + "y": 293.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 5458.229263591109, + "y": 29.953502724469207 + }, + "rect": { + "x": 962.890625, + "y": 229.4375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 5385.173500993679, + "y": 62.28736848198816 + }, + "rect": { + "x": 932.21875, + "y": 288.859375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 3339.601326321919, + "y": 599.6503038182454 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 5990.826345900855, + "y": -85.08787856433082 + }, + "rect": { + "x": 588.890625, + "y": 130.28125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": -295790.2545594947, + "y": -117795.69870207725 + }, + "rect": { + "x": 832.953125, + "y": 366.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 5770.01669527255, + "y": -105.62439501855947 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 123481.56235014512, + "y": 48179.93005583951 + }, + "rect": { + "x": 801.3125, + "y": 291.484375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 5826.702502965317, + "y": -104.27431116390396 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 125588.90998541293, + "y": 48189.29564631933 + }, + "rect": { + "x": 802.609375, + "y": 404.203125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": -110264.44820411433, + "y": -45270.7574944021 + }, + "rect": { + "x": 850.484375, + "y": 232.546875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 5911.428100548145, + "y": -2.627288386274038 + }, + "rect": { + "x": 710.796875, + "y": 204.953125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 5822.675222583378, + "y": -22.60410065308515 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": -144410.92056214364, + "y": -46269.52000235024 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": false, + "active": false, + "anchor": { + "x": 8316.529829917139, + "y": 2815.707864189142 + }, + "rect": { + "x": 679.75, + "y": 346.625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.0083158564383634, + 1.3898189780176327, + 3.3301780128479006 + ] + }, + { + "task": "87", + "view": "hide-others", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": false, + "active": true, + "anchor": { + "x": 3339.601326321919, + "y": 599.6503038182454 + }, + "rect": { + "x": 1169.203125, + "y": 371.53125, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 789.999999999997, + "y": 369.7082086267604 + }, + "rect": { + "x": 734, + "y": 293.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": false, + "active": false, + "anchor": { + "x": 5458.229263591109, + "y": 29.953502724469207 + }, + "rect": { + "x": 962.890625, + "y": 229.4375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": false, + "active": false, + "anchor": { + "x": 5385.173500993679, + "y": 62.28736848198816 + }, + "rect": { + "x": 932.21875, + "y": 288.859375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 3339.601326321919, + "y": 599.6503038182454 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": 5990.826345900855, + "y": -85.08787856433082 + }, + "rect": { + "x": 588.890625, + "y": 130.28125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": false, + "active": false, + "anchor": { + "x": -295790.2545594947, + "y": -117795.69870207725 + }, + "rect": { + "x": 832.953125, + "y": 366.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 5770.01669527255, + "y": -105.62439501855947 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 123481.56235014512, + "y": 48179.93005583951 + }, + "rect": { + "x": 801.3125, + "y": 291.484375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 5826.702502965317, + "y": -104.27431116390396 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 125588.90998541293, + "y": 48189.29564631933 + }, + "rect": { + "x": 802.609375, + "y": 404.203125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": false, + "active": false, + "anchor": { + "x": -110264.44820411433, + "y": -45270.7574944021 + }, + "rect": { + "x": 850.484375, + "y": 232.546875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": false, + "active": false, + "anchor": { + "x": 5911.428100548145, + "y": -2.627288386274038 + }, + "rect": { + "x": 710.796875, + "y": 204.953125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 5822.675222583378, + "y": -22.60410065308515 + }, + "rect": { + "x": 0, + "y": 0, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": -144410.92056214364, + "y": -46269.52000235024 + }, + "rect": { + "x": 0, + "y": 0, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": false, + "active": false, + "anchor": { + "x": 8316.529829917139, + "y": 2815.707864189142 + }, + "rect": { + "x": 679.75, + "y": 346.625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.0083158564383634, + 1.3898189780176327, + 3.3301780128479006 + ] + }, + { + "task": "87", + "view": "reset", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 595.0169113857235, + "y": 289.52556195068297 + }, + "rect": { + "x": 531.015625, + "y": 346.515625, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 547.4055924807054, + "y": 322.43927656952974 + }, + "rect": { + "x": 491.390625, + "y": 279.53125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 632.4900450250362, + "y": 226.8836811810685 + }, + "rect": { + "x": 576.484375, + "y": 243.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 631.0451295899397, + "y": 229.51351578163494 + }, + "rect": { + "x": 575.03125, + "y": 172.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 595.0169113857235, + "y": 289.52556195068297 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 647.902698693941, + "y": 217.2947467519867 + }, + "rect": { + "x": 588.890625, + "y": 130.28125, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 891.9566932597559, + "y": 351.67072723812805 + }, + "rect": { + "x": 832.953125, + "y": 366.625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 638.6884846594746, + "y": 215.81970352024092 + }, + "rect": { + "x": 0, + "y": 0, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 877.3213321181075, + "y": 348.49138925343846 + }, + "rect": { + "x": 801.3125, + "y": 291.484375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 640.2195907817843, + "y": 215.22532927184895 + }, + "rect": { + "x": 607.4375, + "y": 275.328125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 878.6119160429071, + "y": 347.2039217800587 + }, + "rect": { + "x": 802.609375, + "y": 404.203125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": true, + "active": false, + "anchor": { + "x": 909.4849400235194, + "y": 355.55165496530736 + }, + "rect": { + "x": 850.484375, + "y": 232.546875, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": true, + "active": false, + "anchor": { + "x": 644.3067690201934, + "y": 219.9603655378002 + }, + "rect": { + "x": 710.796875, + "y": 204.953125, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 640.3346642777382, + "y": 218.72966922910723 + }, + "rect": { + "x": 725.109375, + "y": 187.625, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 897.0610314611231, + "y": 336.20112081541106 + }, + "rect": { + "x": 867.375, + "y": 255.765625, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": true, + "active": false, + "anchor": { + "x": 735.7572614539419, + "y": 319.62734436846904 + }, + "rect": { + "x": 679.75, + "y": 346.625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 5.627354467761453, + 4.598246824163864, + 9.330622589672995 + ] + }, + { + "task": "87", + "view": "moved", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 658.5362787828268, + "y": 302.22048904032937 + }, + "rect": { + "x": 593.765625, + "y": 359.0625, + "w": 128, + "h": 30 + } + }, + { + "id": "front-pump-pto-switch", + "text": "取力器开关", + "visible": true, + "active": false, + "anchor": { + "x": 620.8585853771588, + "y": 337.1195296568631 + }, + "rect": { + "x": 563.96875, + "y": 293.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-aux-control-box-cover", + "text": "辅助控制盒盖", + "visible": true, + "active": false, + "anchor": { + "x": 688.133049329866, + "y": 238.0044449991746 + }, + "rect": { + "x": 631.453125, + "y": 254.125, + "w": 112, + "h": 30 + } + }, + { + "id": "front-pump-rescue-switch", + "text": "互救开关", + "visible": true, + "active": false, + "anchor": { + "x": 686.9096167801852, + "y": 240.67854498205162 + }, + "rect": { + "x": 630.234375, + "y": 183.53125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 658.5362787828268, + "y": 302.22048904032937 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-hose-a", + "text": "架桥车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 702.9427803836458, + "y": 228.295010965746 + }, + "rect": { + "x": 643.265625, + "y": 141.15625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-b", + "text": "保障车快速接口盖", + "visible": true, + "active": false, + "anchor": { + "x": 964.056718510338, + "y": 366.0805773551105 + }, + "rect": { + "x": 904.171875, + "y": 380.90625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-hose-line-a", + "text": "供油软管 · 架桥车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 693.3935771106312, + "y": 226.75301706787351 + }, + "rect": { + "x": 616.71875, + "y": 103.609375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-hose-line-b", + "text": "供油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 948.8125647040333, + "y": 362.77956658293544 + }, + "rect": { + "x": 871.9375, + "y": 305.59375, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-a", + "text": "回油软管 · 架桥车端接头", + "visible": false, + "active": false, + "anchor": { + "x": 694.796481427951, + "y": 226.13302051507577 + }, + "rect": { + "x": 607.4375, + "y": 275.328125, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-line-b", + "text": "回油软管 · 保障车端接头", + "visible": true, + "active": false, + "anchor": { + "x": 949.88595957715, + "y": 361.4486918892263 + }, + "rect": { + "x": 873.015625, + "y": 418.265625, + "w": 152, + "h": 30 + } + }, + { + "id": "bridge-return-valve", + "text": "保障车回油截止阀", + "visible": true, + "active": false, + "anchor": { + "x": 980.2631369980433, + "y": 369.6973256000748 + }, + "rect": { + "x": 920.40625, + "y": 246.515625, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-1", + "text": "滤油器出口球阀 1", + "visible": true, + "active": false, + "anchor": { + "x": 698.9286541190289, + "y": 230.87704933431397 + }, + "rect": { + "x": 764.765625, + "y": 215.734375, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-filter-valve-2", + "text": "滤油器出口球阀 2", + "visible": false, + "active": false, + "anchor": { + "x": 694.7859994830742, + "y": 229.61226706803282 + }, + "rect": { + "x": 725.109375, + "y": 187.625, + "w": 116.59375, + "h": 30 + } + }, + { + "id": "bridge-support-pto", + "text": "保障车取力器开关(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 969.3835105461112, + "y": 350.65543036774886 + }, + "rect": { + "x": 867.375, + "y": 255.765625, + "w": 190, + "h": 30 + } + }, + { + "id": "bridge-supply", + "text": "供油回路观察点", + "visible": true, + "active": false, + "anchor": { + "x": 796.3255626463751, + "y": 331.73247386030886 + }, + "rect": { + "x": 739.59375, + "y": 358.578125, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 5.008680256369452, + 4.738505421190706, + 9.75160369286139 + ] + }, + { + "task": "88", + "view": "overview", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 756.8078606315892, + "y": 381.2274852415052 + }, + "rect": { + "x": 692.796875, + "y": 422.1875, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 756.8078606315892, + "y": 381.2274852415052 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 773.8619225124698, + "y": 368.29855862477785 + }, + "rect": { + "x": 717.859375, + "y": 316.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": true, + "active": false, + "anchor": { + "x": 969.9238952848533, + "y": 398.4330259343134 + }, + "rect": { + "x": 913.921875, + "y": 343.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 770.3524922214795, + "y": 371.7601696653171 + }, + "rect": { + "x": 714.34375, + "y": 464.75, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 770.4099718331349, + "y": 378.6167372284355 + }, + "rect": { + "x": 594.40625, + "y": 363.609375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 762.7474430563004, + "y": 369.6635048404548 + }, + "rect": { + "x": 706.734375, + "y": 246.65625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 762.8266402766166, + "y": 376.48061926405285 + }, + "rect": { + "x": 586.8125, + "y": 319.46875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": true, + "active": false, + "anchor": { + "x": 827.2644109356789, + "y": 291.1389424179544 + }, + "rect": { + "x": 840.875, + "y": 276.125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": true, + "active": false, + "anchor": { + "x": 740.0400294011409, + "y": 299.0842082629612 + }, + "rect": { + "x": 684.03125, + "y": 176.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 740.1625375873911, + "y": 299.03314180979044 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": true, + "active": false, + "anchor": { + "x": 776.3917093432963, + "y": 365.4933123818993 + }, + "rect": { + "x": 840.390625, + "y": 392.484375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 779.1703662909639, + "y": 366.36702029373055 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 762.725662886039, + "y": 359.70060036154234 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 780.3619442405862, + "y": 371.14794997650944 + }, + "rect": { + "x": 792.90625, + "y": 356.140625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": true, + "active": false, + "anchor": { + "x": 965.9100951129012, + "y": 398.2402429347487 + }, + "rect": { + "x": 979.90625, + "y": 383.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 757.5543703304254, + "y": 348.6289530809074 + }, + "rect": { + "x": 0, + "y": 0, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": true, + "active": false, + "anchor": { + "x": 812.1851382438589, + "y": 285.9580063144768 + }, + "rect": { + "x": 826.171875, + "y": 228.953125, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ] + }, + { + "task": "88", + "view": "focus", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 675.7474760016162, + "y": 181.0326959302987 + }, + "rect": { + "x": 611.734375, + "y": 124.03125, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 675.7474760016162, + "y": 181.0326959302987 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 789.9999999999999, + "y": 369.7082086267608 + }, + "rect": { + "x": 614, + "y": 354.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": false, + "active": false, + "anchor": { + "x": -1034.3999045501253, + "y": 134.59951092418123 + }, + "rect": { + "x": 1259.46875, + "y": 369.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 751.2646978525146, + "y": 317.9167062774452 + }, + "rect": { + "x": 695.25, + "y": 268.03125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 751.7179479259036, + "y": 367.30222256437617 + }, + "rect": { + "x": 695.703125, + "y": 394.296875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 829.0698200285362, + "y": 317.91670975448426 + }, + "rect": { + "x": 773.0625, + "y": 230.90625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 828.6126556785443, + "y": 367.3022272076386 + }, + "rect": { + "x": 842.609375, + "y": 352.296875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": false, + "active": false, + "anchor": { + "x": 1895.6433578175047, + "y": 1483.2969089032533 + }, + "rect": { + "x": 893.234375, + "y": 102.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": false, + "active": false, + "anchor": { + "x": 4260.18541199362, + "y": 2001.99635231138 + }, + "rect": { + "x": 588.203125, + "y": 121.75, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 4257.840230590865, + "y": 2001.0762573459908 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": true, + "active": false, + "anchor": { + "x": 790.4359631501977, + "y": 374.32262517799626 + }, + "rect": { + "x": 734.421875, + "y": 431.3125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": true, + "active": false, + "anchor": { + "x": 765.5337691628798, + "y": 380.85781732398254 + }, + "rect": { + "x": 709.53125, + "y": 473.84375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 899.6962807263116, + "y": 316.99841285922633 + }, + "rect": { + "x": 929.40625, + "y": 301.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 682.1947118860452, + "y": 331.6312158661893 + }, + "rect": { + "x": 545.765625, + "y": 316.625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": false, + "active": false, + "anchor": { + "x": -1003.7939486496913, + "y": 88.98998347740857 + }, + "rect": { + "x": 1247.734375, + "y": 410.796875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 967.7797779961315, + "y": 251.2234457603296 + }, + "rect": { + "x": 896.765625, + "y": 164.21875, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 1678.9129069798291, + "y": 858.0283789955414 + }, + "rect": { + "x": 807.890625, + "y": 151.59375, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + -0.13192710688830653, + 1.9741556587866769, + -0.675676123113613 + ] + }, + { + "task": "88", + "view": "hide-others", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": false, + "active": true, + "anchor": { + "x": 675.7474760016162, + "y": 181.0326959302987 + }, + "rect": { + "x": 611.734375, + "y": 124.03125, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 675.7474760016162, + "y": 181.0326959302987 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 789.9999999999999, + "y": 369.7082086267608 + }, + "rect": { + "x": 614, + "y": 354.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": false, + "active": false, + "anchor": { + "x": -1034.3999045501253, + "y": 134.59951092418123 + }, + "rect": { + "x": 1259.46875, + "y": 369.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 751.2646978525146, + "y": 317.9167062774452 + }, + "rect": { + "x": 695.25, + "y": 268.03125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 751.7179479259036, + "y": 367.30222256437617 + }, + "rect": { + "x": 695.703125, + "y": 394.296875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 829.0698200285362, + "y": 317.91670975448426 + }, + "rect": { + "x": 773.0625, + "y": 230.90625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 828.6126556785443, + "y": 367.3022272076386 + }, + "rect": { + "x": 842.609375, + "y": 352.296875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": false, + "active": false, + "anchor": { + "x": 1895.6433578175047, + "y": 1483.2969089032533 + }, + "rect": { + "x": 893.234375, + "y": 102.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": false, + "active": false, + "anchor": { + "x": 4260.18541199362, + "y": 2001.99635231138 + }, + "rect": { + "x": 588.203125, + "y": 121.75, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 4257.840230590865, + "y": 2001.0762573459908 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 790.4359631501977, + "y": 374.32262517799626 + }, + "rect": { + "x": 734.421875, + "y": 431.3125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 765.5337691628798, + "y": 380.85781732398254 + }, + "rect": { + "x": 709.53125, + "y": 473.84375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 899.6962807263116, + "y": 316.99841285922633 + }, + "rect": { + "x": 929.40625, + "y": 301.984375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 682.1947118860452, + "y": 331.6312158661893 + }, + "rect": { + "x": 545.765625, + "y": 316.625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": false, + "active": false, + "anchor": { + "x": -1003.7939486496913, + "y": 88.98998347740857 + }, + "rect": { + "x": 1247.734375, + "y": 410.796875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 967.7797779961315, + "y": 251.2234457603296 + }, + "rect": { + "x": 896.765625, + "y": 164.21875, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": false, + "active": false, + "anchor": { + "x": 1678.9129069798291, + "y": 858.0283789955414 + }, + "rect": { + "x": 807.890625, + "y": 151.59375, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + -0.13192710688830653, + 1.9741556587866769, + -0.675676123113613 + ] + }, + { + "task": "88", + "view": "reset", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 756.8078606315893, + "y": 381.2274852415052 + }, + "rect": { + "x": 692.796875, + "y": 422.1875, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 756.8078606315893, + "y": 381.2274852415052 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 773.8619225124698, + "y": 368.29855862477785 + }, + "rect": { + "x": 717.859375, + "y": 316.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": true, + "active": false, + "anchor": { + "x": 969.9238952848532, + "y": 398.4330259343134 + }, + "rect": { + "x": 913.921875, + "y": 343.5, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 770.3524922214795, + "y": 371.7601696653171 + }, + "rect": { + "x": 714.34375, + "y": 464.75, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 770.4099718331349, + "y": 378.6167372284355 + }, + "rect": { + "x": 594.40625, + "y": 363.609375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 762.7474430563005, + "y": 369.6635048404548 + }, + "rect": { + "x": 706.734375, + "y": 246.65625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 762.8266402766166, + "y": 376.48061926405285 + }, + "rect": { + "x": 586.8125, + "y": 319.46875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": true, + "active": false, + "anchor": { + "x": 827.264410935679, + "y": 291.1389424179544 + }, + "rect": { + "x": 840.875, + "y": 276.125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": true, + "active": false, + "anchor": { + "x": 740.0400294011409, + "y": 299.0842082629612 + }, + "rect": { + "x": 684.03125, + "y": 176.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 740.1625375873911, + "y": 299.0331418097905 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": true, + "active": false, + "anchor": { + "x": 776.3917093432963, + "y": 365.4933123818993 + }, + "rect": { + "x": 840.390625, + "y": 392.484375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 779.1703662909639, + "y": 366.36702029373055 + }, + "rect": { + "x": 841.390625, + "y": 395.921875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 762.725662886039, + "y": 359.70060036154234 + }, + "rect": { + "x": 775.453125, + "y": 273.21875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 780.3619442405862, + "y": 371.14794997650944 + }, + "rect": { + "x": 792.90625, + "y": 356.140625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": true, + "active": false, + "anchor": { + "x": 965.9100951129012, + "y": 398.2402429347487 + }, + "rect": { + "x": 979.90625, + "y": 383.234375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 757.5543703304254, + "y": 348.6289530809074 + }, + "rect": { + "x": 751.4375, + "y": 333.578125, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": true, + "active": false, + "anchor": { + "x": 812.1851382438589, + "y": 285.9580063144768 + }, + "rect": { + "x": 826.171875, + "y": 228.953125, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ] + }, + { + "task": "88", + "view": "moved", + "labels": [ + { + "id": "bridge-engine", + "text": "聚焦 · 架桥车发动机", + "visible": true, + "active": true, + "anchor": { + "x": 823.830754718761, + "y": 394.62262421470183 + }, + "rect": { + "x": 759.4375, + "y": 435.953125, + "w": 128, + "h": 30 + } + }, + { + "id": "bridge-engine", + "text": "架桥车发动机", + "visible": false, + "active": false, + "anchor": { + "x": 823.830754718761, + "y": 394.62262421470183 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-old-pump", + "text": "旧前泵", + "visible": true, + "active": false, + "anchor": { + "x": 837.5067326388222, + "y": 381.01855659228397 + }, + "rect": { + "x": 781.125, + "y": 328.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-new-pump", + "text": "新前泵", + "visible": true, + "active": false, + "anchor": { + "x": 1046.5450011176854, + "y": 413.74645539583287 + }, + "rect": { + "x": 990.09375, + "y": 439.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-1", + "text": "前泵安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 834.8647685527169, + "y": 384.65353869546146 + }, + "rect": { + "x": 778.484375, + "y": 477.578125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-2", + "text": "前泵安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 834.7335290782689, + "y": 391.4723890215122 + }, + "rect": { + "x": 658.359375, + "y": 376.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-3", + "text": "前泵安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 826.8299376836427, + "y": 382.4709780624545 + }, + "rect": { + "x": 890.453125, + "y": 367.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-pump-bolt-4", + "text": "前泵安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 826.7229183114355, + "y": 389.250875395237 + }, + "rect": { + "x": 650.34375, + "y": 332.171875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-tank-valve", + "text": "油箱一号球阀", + "visible": true, + "active": false, + "anchor": { + "x": 881.2658906806944, + "y": 301.9316325247399 + }, + "rect": { + "x": 824.9375, + "y": 244.859375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-paper", + "text": "初裁牛皮纸", + "visible": true, + "active": false, + "anchor": { + "x": 789.0211081088389, + "y": 308.87352526102086 + }, + "rect": { + "x": 662.734375, + "y": 293.8125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-gasket", + "text": "修裁后的牛皮纸垫", + "visible": false, + "active": false, + "anchor": { + "x": 789.1506704038006, + "y": 308.8238686360559 + }, + "rect": { + "x": 0, + "y": 0, + "w": 118, + "h": 30 + } + }, + { + "id": "bridge-inlet", + "text": "前泵进油管接头", + "visible": true, + "active": false, + "anchor": { + "x": 839.8561245162444, + "y": 378.1772567664645 + }, + "rect": { + "x": 903.484375, + "y": 321.09375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet", + "text": "前泵出油管接头", + "visible": false, + "active": false, + "anchor": { + "x": 842.7108817184068, + "y": 379.066174010849 + }, + "rect": { + "x": 712.1875, + "y": 291.15625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-inlet-bag", + "text": "进油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 826.0441395718507, + "y": 372.35537760339673 + }, + "rect": { + "x": 775.453125, + "y": 273.21875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-outlet-bag", + "text": "出油管封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 844.9806921835528, + "y": 384.06259833299805 + }, + "rect": { + "x": 849.703125, + "y": 367.484375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-fill-cap", + "text": "新泵注油口盖", + "visible": true, + "active": false, + "anchor": { + "x": 1043.2314257673336, + "y": 413.6936187373739 + }, + "rect": { + "x": 1056.78125, + "y": 398.59375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-oil-can", + "text": "液压油加注壶(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 820.7125083529312, + "y": 361.251685173011 + }, + "rect": { + "x": 751.4375, + "y": 333.578125, + "w": 142, + "h": 30 + } + }, + { + "id": "bridge-test-control", + "text": "试验操作手柄(操作示意)", + "visible": true, + "active": false, + "anchor": { + "x": 868.0046525897856, + "y": 297.1140472802331 + }, + "rect": { + "x": 784.671875, + "y": 174.046875, + "w": 166, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.780050573974555, + 3.2365363848452247, + 7.195391061259029 + ] + }, + { + "task": "89", + "view": "overview", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": true, + "active": true, + "anchor": { + "x": 767.5152046347816, + "y": 281.1182818359314 + }, + "rect": { + "x": 709.5, + "y": 233.84375, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 767.5152046347816, + "y": 281.1182818359314 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 767.2109594216562, + "y": 284.861574191996 + }, + "rect": { + "x": 690.203125, + "y": 311.859375, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 769.6329978612674, + "y": 280.8804647328107 + }, + "rect": { + "x": 713.625, + "y": 193.875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 767.2706394627982, + "y": 281.5976057648297 + }, + "rect": { + "x": 711.265625, + "y": 374.59375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 769.3768893411348, + "y": 280.7677168284264 + }, + "rect": { + "x": 713.375, + "y": 157.765625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 771.732865664312, + "y": 280.05352723052334 + }, + "rect": { + "x": 835.71875, + "y": 265.046875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 762.593053698376, + "y": 283.79993949904986 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 756.0158961913901, + "y": 273.89051174460974 + }, + "rect": { + "x": 580.015625, + "y": 258.875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": true, + "active": false, + "anchor": { + "x": 763.6366827907711, + "y": 277.39375010998197 + }, + "rect": { + "x": 587.625, + "y": 220.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 761.8857230737466, + "y": 278.0948492036096 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 757.8301438307981, + "y": 275.3638959733211 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": true, + "active": false, + "anchor": { + "x": 901.2485131214314, + "y": 250.70403075510666 + }, + "rect": { + "x": 845.234375, + "y": 205.3125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 900.9870510679759, + "y": 253.92406427455458 + }, + "rect": { + "x": 914.984375, + "y": 310.921875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 900.6592476124569, + "y": 250.33265270855864 + }, + "rect": { + "x": 844.65625, + "y": 163.328125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 903.3943394677151, + "y": 250.75590873628988 + }, + "rect": { + "x": 967.390625, + "y": 235.75, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 904.7262737402997, + "y": 249.676188496117 + }, + "rect": { + "x": 848.71875, + "y": 126.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 901.9734302907266, + "y": 249.2641542676382 + }, + "rect": { + "x": 965.96875, + "y": 192.25, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 896.7764611500962, + "y": 253.8785479255972 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 891.7338234871861, + "y": 247.83823252196038 + }, + "rect": { + "x": 955.71875, + "y": 274.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 898.5129107813775, + "y": 246.6879779582802 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 896.8538749412656, + "y": 248.01337765890727 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": true, + "active": false, + "anchor": { + "x": 892.3148767034767, + "y": 245.86661846128274 + }, + "rect": { + "x": 716.3125, + "y": 272.859375, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ] + }, + { + "task": "89", + "view": "focus", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": true, + "active": true, + "anchor": { + "x": 795.5232705874024, + "y": 318.20147355137925 + }, + "rect": { + "x": 737.515625, + "y": 261.1875, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 795.5232705874024, + "y": 318.20147355137925 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 789.9999999999992, + "y": 369.70820862676 + }, + "rect": { + "x": 713, + "y": 426.703125, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 855.5034022812836, + "y": 324.9031901220384 + }, + "rect": { + "x": 904.390625, + "y": 309.890625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 763.312438255493, + "y": 363.13480633435466 + }, + "rect": { + "x": 603.078125, + "y": 348.125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 797.4219889845889, + "y": 400.08974961777 + }, + "rect": { + "x": 637.109375, + "y": 385.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 890.1304103228355, + "y": 361.3772867894323 + }, + "rect": { + "x": 939.734375, + "y": 346.375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": true, + "active": false, + "anchor": { + "x": 734.8931069813236, + "y": 218.59829870641212 + }, + "rect": { + "x": 669.890625, + "y": 161.59375, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 648.9831465150645, + "y": -119.91526146675258 + }, + "rect": { + "x": 580.015625, + "y": 258.875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": true, + "active": false, + "anchor": { + "x": 586.2938333981592, + "y": 389.5687194020142 + }, + "rect": { + "x": 530.28125, + "y": 441.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": true, + "active": false, + "anchor": { + "x": 558.8406268368035, + "y": 358.3672708589295 + }, + "rect": { + "x": 502.828125, + "y": 276.734375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 640.5803676883957, + "y": 0.8115823799642644 + }, + "rect": { + "x": 576.390625, + "y": 96.453125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 5730.908558611546, + "y": -1058.4456060543475 + }, + "rect": { + "x": 845.234375, + "y": 205.3125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 5682.681916311526, + "y": -992.564568052849 + }, + "rect": { + "x": 914.984375, + "y": 310.921875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 5728.211880762969, + "y": -1099.2135871389228 + }, + "rect": { + "x": 844.65625, + "y": 163.328125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 5794.5536923204645, + "y": -1038.4987936914754 + }, + "rect": { + "x": 967.390625, + "y": 235.75, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 5857.878764074135, + "y": -1075.6897716599208 + }, + "rect": { + "x": 848.71875, + "y": 126.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 5790.363751357189, + "y": -1135.7812832262161 + }, + "rect": { + "x": 965.96875, + "y": 192.25, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 5536.983516792073, + "y": -972.9841909144479 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 5426.913615234265, + "y": -1059.9096201286438 + }, + "rect": { + "x": 955.71875, + "y": 274.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 5675.359116305497, + "y": -1103.7788653053046 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 5596.501312812159, + "y": -1057.5310858740343 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 5556.260763905062, + "y": -1323.8291702251815 + }, + "rect": { + "x": 716.3125, + "y": 272.859375, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 1.1355947792282914, + 3.5342737911906745, + 2.2495395624859045 + ] + }, + { + "task": "89", + "view": "hide-others", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": false, + "active": true, + "anchor": { + "x": 795.5232705874024, + "y": 318.20147355137925 + }, + "rect": { + "x": 737.515625, + "y": 261.1875, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 795.5232705874024, + "y": 318.20147355137925 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 789.9999999999992, + "y": 369.70820862676 + }, + "rect": { + "x": 713, + "y": 312.703125, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 855.5034022812836, + "y": 324.9031901220384 + }, + "rect": { + "x": 904.390625, + "y": 309.890625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 763.312438255493, + "y": 363.13480633435466 + }, + "rect": { + "x": 603.078125, + "y": 348.125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 797.4219889845889, + "y": 400.08974961777 + }, + "rect": { + "x": 637.109375, + "y": 385.078125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 890.1304103228355, + "y": 361.3772867894323 + }, + "rect": { + "x": 939.734375, + "y": 346.375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 734.8931069813236, + "y": 218.59829870641212 + }, + "rect": { + "x": 669.890625, + "y": 161.59375, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 648.9831465150645, + "y": -119.91526146675258 + }, + "rect": { + "x": 580.015625, + "y": 258.875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 586.2938333981592, + "y": 389.5687194020142 + }, + "rect": { + "x": 530.28125, + "y": 441.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 558.8406268368035, + "y": 358.3672708589295 + }, + "rect": { + "x": 502.828125, + "y": 276.734375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 640.5803676883957, + "y": 0.8115823799642644 + }, + "rect": { + "x": 576.390625, + "y": 96.453125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 5730.908558611546, + "y": -1058.4456060543475 + }, + "rect": { + "x": 845.234375, + "y": 205.3125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 5682.681916311526, + "y": -992.564568052849 + }, + "rect": { + "x": 914.984375, + "y": 310.921875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": false, + "active": false, + "anchor": { + "x": 5728.211880762969, + "y": -1099.2135871389228 + }, + "rect": { + "x": 844.65625, + "y": 163.328125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": false, + "active": false, + "anchor": { + "x": 5794.5536923204645, + "y": -1038.4987936914754 + }, + "rect": { + "x": 967.390625, + "y": 235.75, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": false, + "active": false, + "anchor": { + "x": 5857.878764074135, + "y": -1075.6897716599208 + }, + "rect": { + "x": 848.71875, + "y": 126.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": false, + "active": false, + "anchor": { + "x": 5790.363751357189, + "y": -1135.7812832262161 + }, + "rect": { + "x": 965.96875, + "y": 192.25, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 5536.983516792073, + "y": -972.9841909144479 + }, + "rect": { + "x": 0, + "y": 0, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 5426.913615234265, + "y": -1059.9096201286438 + }, + "rect": { + "x": 955.71875, + "y": 274.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 5675.359116305497, + "y": -1103.7788653053046 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 5596.501312812159, + "y": -1057.5310858740343 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 5556.260763905062, + "y": -1323.8291702251815 + }, + "rect": { + "x": 716.3125, + "y": 272.859375, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 1.1355947792282914, + 3.5342737911906745, + 2.2495395624859045 + ] + }, + { + "task": "89", + "view": "reset", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": true, + "active": true, + "anchor": { + "x": 767.5152046347816, + "y": 281.11828183593144 + }, + "rect": { + "x": 709.5, + "y": 233.84375, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 767.5152046347816, + "y": 281.11828183593144 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 767.2109594216562, + "y": 284.86157419199606 + }, + "rect": { + "x": 690.203125, + "y": 311.859375, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 769.6329978612674, + "y": 280.88046473281076 + }, + "rect": { + "x": 713.625, + "y": 193.875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 767.2706394627982, + "y": 281.5976057648297 + }, + "rect": { + "x": 711.265625, + "y": 374.59375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 769.3768893411348, + "y": 280.76771682842644 + }, + "rect": { + "x": 713.375, + "y": 157.765625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 771.732865664312, + "y": 280.0535272305234 + }, + "rect": { + "x": 835.71875, + "y": 265.046875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 762.593053698376, + "y": 283.79993949904986 + }, + "rect": { + "x": 696.265625, + "y": 387.890625, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 756.0158961913901, + "y": 273.8905117446098 + }, + "rect": { + "x": 580.015625, + "y": 258.875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": true, + "active": false, + "anchor": { + "x": 763.6366827907711, + "y": 277.39375010998197 + }, + "rect": { + "x": 587.625, + "y": 220.390625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 761.8857230737466, + "y": 278.0948492036096 + }, + "rect": { + "x": 502.828125, + "y": 276.734375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 757.8301438307981, + "y": 275.3638959733211 + }, + "rect": { + "x": 577.875, + "y": 238.125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": true, + "active": false, + "anchor": { + "x": 901.2485131214314, + "y": 250.70403075510666 + }, + "rect": { + "x": 845.234375, + "y": 205.3125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 900.9870510679759, + "y": 253.92406427455458 + }, + "rect": { + "x": 914.984375, + "y": 310.921875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 900.6592476124569, + "y": 250.33265270855864 + }, + "rect": { + "x": 844.65625, + "y": 163.328125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 903.3943394677151, + "y": 250.75590873628994 + }, + "rect": { + "x": 967.390625, + "y": 235.75, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 904.7262737402997, + "y": 249.676188496117 + }, + "rect": { + "x": 848.71875, + "y": 126.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 901.9734302907266, + "y": 249.26415426763822 + }, + "rect": { + "x": 965.96875, + "y": 192.25, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 896.7764611500962, + "y": 253.8785479255972 + }, + "rect": { + "x": 876.25, + "y": 345.734375, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 891.7338234871861, + "y": 247.8382325219604 + }, + "rect": { + "x": 955.71875, + "y": 274.828125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 898.5129107813775, + "y": 246.6879779582802 + }, + "rect": { + "x": 981.765625, + "y": 150.359375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 896.8538749412656, + "y": 248.01337765890727 + }, + "rect": { + "x": 976.359375, + "y": 238.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": true, + "active": false, + "anchor": { + "x": 892.3148767034767, + "y": 245.86661846128274 + }, + "rect": { + "x": 716.3125, + "y": 272.859375, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 4.230899508763751, + 3.1343251759404582, + 6.8886078166304445 + ] + }, + { + "task": "89", + "view": "moved", + "labels": [ + { + "id": "bridge-small-valve", + "text": "聚焦 · 小腔平衡阀", + "visible": true, + "active": true, + "anchor": { + "x": 833.6699916743023, + "y": 294.3399216681962 + }, + "rect": { + "x": 775.28125, + "y": 246.890625, + "w": 116, + "h": 30 + } + }, + { + "id": "bridge-small-valve", + "text": "小腔平衡阀", + "visible": false, + "active": false, + "anchor": { + "x": 833.6699916743023, + "y": 294.3399216681962 + }, + "rect": { + "x": 0, + "y": 0, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-seat", + "text": "小腔阀座结合面(示意)", + "visible": true, + "active": false, + "anchor": { + "x": 833.2428657659931, + "y": 298.05865519236426 + }, + "rect": { + "x": 755.84375, + "y": 324.96875, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-1", + "text": "小腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 835.7466490254125, + "y": 294.0938831837857 + }, + "rect": { + "x": 779.359375, + "y": 207.015625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-2", + "text": "小腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 833.5963514267141, + "y": 294.8534065080406 + }, + "rect": { + "x": 777.203125, + "y": 387.765625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-3", + "text": "小腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 835.8598944792461, + "y": 294.05495405250815 + }, + "rect": { + "x": 779.46875, + "y": 170.96875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-bolt-4", + "text": "小腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 838.0025068604783, + "y": 293.29812171747545 + }, + "rect": { + "x": 901.609375, + "y": 278.21875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-pipe", + "text": "小腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 828.2311664854047, + "y": 296.9183172518377 + }, + "rect": { + "x": 696.265625, + "y": 387.890625, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-small-bag", + "text": "小腔管口封口袋", + "visible": true, + "active": false, + "anchor": { + "x": 821.3783619719684, + "y": 286.9537989196296 + }, + "rect": { + "x": 644.984375, + "y": 271.875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-1", + "text": "小腔油堵 1", + "visible": true, + "active": false, + "anchor": { + "x": 830.6692394572896, + "y": 290.79082023812146 + }, + "rect": { + "x": 654.265625, + "y": 233.703125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-plug-2", + "text": "小腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 828.7855061022574, + "y": 291.4653833046599 + }, + "rect": { + "x": 502.828125, + "y": 276.734375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-small-cloth", + "text": "小腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 823.5294791588184, + "y": 288.4945096114142 + }, + "rect": { + "x": 577.875, + "y": 238.125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-valve", + "text": "大腔平衡阀", + "visible": true, + "active": false, + "anchor": { + "x": 958.2241083274346, + "y": 262.0911250645882 + }, + "rect": { + "x": 901.890625, + "y": 216.5625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-seat", + "text": "大腔阀座结合面(示意)", + "visible": false, + "active": false, + "anchor": { + "x": 957.9006018560651, + "y": 265.2987584391037 + }, + "rect": { + "x": 933.390625, + "y": 170.59375, + "w": 154, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-1", + "text": "大腔安装螺栓 1", + "visible": true, + "active": false, + "anchor": { + "x": 957.506284284359, + "y": 261.6940534180558 + }, + "rect": { + "x": 901.171875, + "y": 174.625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-2", + "text": "大腔安装螺栓 2", + "visible": true, + "active": false, + "anchor": { + "x": 960.3659867333382, + "y": 262.1422140137434 + }, + "rect": { + "x": 974.03125, + "y": 319.0625, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-3", + "text": "大腔安装螺栓 3", + "visible": true, + "active": false, + "anchor": { + "x": 961.5902558231589, + "y": 261.0409759011279 + }, + "rect": { + "x": 905.25, + "y": 137.96875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-bolt-4", + "text": "大腔安装螺栓 4", + "visible": true, + "active": false, + "anchor": { + "x": 958.7151961568117, + "y": 260.60451564284597 + }, + "rect": { + "x": 782.375, + "y": 287.53125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-pipe", + "text": "大腔控制油口管接头", + "visible": false, + "active": false, + "anchor": { + "x": 953.9798131247724, + "y": 265.3111615103952 + }, + "rect": { + "x": 876.25, + "y": 345.734375, + "w": 130, + "h": 30 + } + }, + { + "id": "bridge-large-bag", + "text": "大腔管口封口袋", + "visible": false, + "active": false, + "anchor": { + "x": 949.4821811061908, + "y": 259.37977047426574 + }, + "rect": { + "x": 762.625, + "y": 284.203125, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-1", + "text": "大腔油堵 1", + "visible": false, + "active": false, + "anchor": { + "x": 955.889131400069, + "y": 258.15514092418493 + }, + "rect": { + "x": 981.765625, + "y": 150.359375, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-plug-2", + "text": "大腔油堵 2", + "visible": false, + "active": false, + "anchor": { + "x": 954.3641262113431, + "y": 259.5073278775327 + }, + "rect": { + "x": 976.359375, + "y": 238.671875, + "w": 112, + "h": 30 + } + }, + { + "id": "bridge-large-cloth", + "text": "大腔清洗擦拭布", + "visible": false, + "active": false, + "anchor": { + "x": 948.9811923252504, + "y": 257.1919004144232 + }, + "rect": { + "x": 722.3125, + "y": 274.0625, + "w": 112, + "h": 30 + } + } + ], + "intro": false, + "pending": false, + "completed": [], + "camera": [ + 3.780050573974555, + 3.236536384845225, + 7.195391061259029 + ] + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-label-placement-20260925/task-86-focus.png b/reports/bridge-label-placement-20260925/task-86-focus.png new file mode 100644 index 0000000..93810cd Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-86-focus.png differ diff --git a/reports/bridge-label-placement-20260925/task-86-hide-others.png b/reports/bridge-label-placement-20260925/task-86-hide-others.png new file mode 100644 index 0000000..47a7e7a Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-86-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925/task-86-moved.png b/reports/bridge-label-placement-20260925/task-86-moved.png new file mode 100644 index 0000000..eb11722 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-86-moved.png differ diff --git a/reports/bridge-label-placement-20260925/task-86-overview.png b/reports/bridge-label-placement-20260925/task-86-overview.png new file mode 100644 index 0000000..47ecf45 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-86-overview.png differ diff --git a/reports/bridge-label-placement-20260925/task-86-reset.png b/reports/bridge-label-placement-20260925/task-86-reset.png new file mode 100644 index 0000000..3340989 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-86-reset.png differ diff --git a/reports/bridge-label-placement-20260925/task-87-focus.png b/reports/bridge-label-placement-20260925/task-87-focus.png new file mode 100644 index 0000000..36caece Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-87-focus.png differ diff --git a/reports/bridge-label-placement-20260925/task-87-hide-others.png b/reports/bridge-label-placement-20260925/task-87-hide-others.png new file mode 100644 index 0000000..53a708e Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-87-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925/task-87-moved.png b/reports/bridge-label-placement-20260925/task-87-moved.png new file mode 100644 index 0000000..12e2884 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-87-moved.png differ diff --git a/reports/bridge-label-placement-20260925/task-87-overview.png b/reports/bridge-label-placement-20260925/task-87-overview.png new file mode 100644 index 0000000..8c881b4 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-87-overview.png differ diff --git a/reports/bridge-label-placement-20260925/task-87-reset.png b/reports/bridge-label-placement-20260925/task-87-reset.png new file mode 100644 index 0000000..8e0159c Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-87-reset.png differ diff --git a/reports/bridge-label-placement-20260925/task-88-focus.png b/reports/bridge-label-placement-20260925/task-88-focus.png new file mode 100644 index 0000000..5f83443 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-88-focus.png differ diff --git a/reports/bridge-label-placement-20260925/task-88-hide-others.png b/reports/bridge-label-placement-20260925/task-88-hide-others.png new file mode 100644 index 0000000..716ace5 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-88-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925/task-88-moved.png b/reports/bridge-label-placement-20260925/task-88-moved.png new file mode 100644 index 0000000..737caa0 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-88-moved.png differ diff --git a/reports/bridge-label-placement-20260925/task-88-overview.png b/reports/bridge-label-placement-20260925/task-88-overview.png new file mode 100644 index 0000000..279ae48 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-88-overview.png differ diff --git a/reports/bridge-label-placement-20260925/task-88-reset.png b/reports/bridge-label-placement-20260925/task-88-reset.png new file mode 100644 index 0000000..8e74b52 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-88-reset.png differ diff --git a/reports/bridge-label-placement-20260925/task-89-focus.png b/reports/bridge-label-placement-20260925/task-89-focus.png new file mode 100644 index 0000000..b592e05 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-89-focus.png differ diff --git a/reports/bridge-label-placement-20260925/task-89-hide-others.png b/reports/bridge-label-placement-20260925/task-89-hide-others.png new file mode 100644 index 0000000..a96c912 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-89-hide-others.png differ diff --git a/reports/bridge-label-placement-20260925/task-89-moved.png b/reports/bridge-label-placement-20260925/task-89-moved.png new file mode 100644 index 0000000..25a79b5 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-89-moved.png differ diff --git a/reports/bridge-label-placement-20260925/task-89-overview.png b/reports/bridge-label-placement-20260925/task-89-overview.png new file mode 100644 index 0000000..3dc7e94 Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-89-overview.png differ diff --git a/reports/bridge-label-placement-20260925/task-89-reset.png b/reports/bridge-label-placement-20260925/task-89-reset.png new file mode 100644 index 0000000..6c0c3cb Binary files /dev/null and b/reports/bridge-label-placement-20260925/task-89-reset.png differ diff --git a/reports/bridge-teacher-bubble-20260925/dark-1920.png b/reports/bridge-teacher-bubble-20260925/dark-1920.png new file mode 100644 index 0000000..3516794 Binary files /dev/null and b/reports/bridge-teacher-bubble-20260925/dark-1920.png differ diff --git a/reports/bridge-teacher-bubble-20260925/light-1366.png b/reports/bridge-teacher-bubble-20260925/light-1366.png new file mode 100644 index 0000000..84250c1 Binary files /dev/null and b/reports/bridge-teacher-bubble-20260925/light-1366.png differ diff --git a/reports/bridge-teacher-bubble-20260925/light-1920.png b/reports/bridge-teacher-bubble-20260925/light-1920.png new file mode 100644 index 0000000..d2aaf04 Binary files /dev/null and b/reports/bridge-teacher-bubble-20260925/light-1920.png differ diff --git a/reports/bridge-teacher-bubble-20260925/result.json b/reports/bridge-teacher-bubble-20260925/result.json new file mode 100644 index 0000000..9232d32 --- /dev/null +++ b/reports/bridge-teacher-bubble-20260925/result.json @@ -0,0 +1,36 @@ +{ + "pass": true, + "results": [ + { + "theme": "light", + "baseUrl": "http://127.0.0.1:6180", + "width": 1920, + "height": 945, + "background": "rgb(255, 255, 255)", + "pointer": "rgb(255, 255, 255)", + "title": "第1步,停机并初裁牛皮纸。架桥车熄火;按液压泵与取力器结合面形状初步裁剪牛皮纸。", + "text": "第1步,停机并初裁牛皮纸。架桥车熄火;按液压泵与取力器结合面形状初步裁剪牛皮纸。" + }, + { + "theme": "dark", + "baseUrl": "http://127.0.0.1:6180", + "width": 1920, + "height": 945, + "background": "rgb(14, 36, 32)", + "pointer": "rgb(14, 36, 32)", + "title": "第1步,停机并初裁牛皮纸。架桥车熄火;按液压泵与取力器结合面形状初步裁剪牛皮纸。", + "text": "第1步,停机并初裁牛皮纸。架桥车熄火;按液压泵与取力器结合面形状初步裁剪牛皮纸。" + }, + { + "theme": "light", + "baseUrl": "http://192.168.31.168:6180", + "width": 1366, + "height": 768, + "background": "rgb(255, 255, 255)", + "pointer": "rgb(255, 255, 255)", + "title": "第1步,停机并初裁牛皮纸。架桥车熄火;按液压泵与取力器结合面形状初步裁剪牛皮纸。", + "text": "第1步,停机并初裁牛皮纸。架桥车熄火;按液压泵与取力器结合面形状初步裁剪牛皮纸。" + } + ], + "errors": [] +} \ No newline at end of file diff --git a/reports/bridge-workspace-20260925/README.md b/reports/bridge-workspace-20260925/README.md new file mode 100644 index 0000000..b6d58ae --- /dev/null +++ b/reports/bridge-workspace-20260925/README.md @@ -0,0 +1,29 @@ +# 005~008 虚拟仿真界面验收 + +对应前端提交:`ca27634`(unreal_tran_web)。 + +环境:Windows、本地 Gateway 6100、Vite 6180;使用 root 教员预览,未创建学员任务或提交训练成绩。 + +## 最终结果 + +- [背景与讲解实时 3D](../bridge-introduction-3d-20260925/index.html):四个脚本共 11 页,慢速旋转、暂停/恢复、手动播放数字人、进入操作后还原视角。 +- [小屏 3D 检查](../bridge-introduction-3d-20260925-laptop/result.json):局域网 1366×768。 +- [全屏与缩放](../bridge-introduction-3d-20260925-resize/result.json)、[小屏面板开关](../bridge-introduction-3d-20260925-laptop-layout/result.json)。 +- [部件标签桌面检查](../bridge-label-placement-20260925/index.html):四脚本、20 个场景状态,包含标签、聚焦、隐藏其他、复位和移动视角。 +- [部件标签小屏检查](../bridge-label-placement-20260925-laptop/index.html):四脚本、20 个场景状态。 +- [标签稳定性检查](../bridge-label-placement-20260925-stable/index.html):006 静止视角不闪烁、不反复换位。 +- [数字教员气泡与完整讲解 title](../bridge-teacher-bubble-20260925/result.json):明暗主题、桌面与小屏。 + +以上结果均通过。各目录中的 `result.json` 为最终检查结果。 + +## 前序对照 + +[进入页面与复位视角](../bridge-entry-view-20260925/index.html) 和 `bridge-entry-view-20260925-before` 为本轮改动前后对照;`-dual` 为双车视角调整过程记录,最新双车效果见 3D 和标签检查。 + +部分目录保留了调试期间的 `failure.png`,供追溯已修复问题,不代表最终检查失败。 + +## 提交前验证 + +同步远端作业指导书提交后,`pnpm build`(含类型检查与模型编辑器产物校验)通过;讲解、相机、标签、正式训练路由及作业指导书流程回归共 19 项通过。构建有已有的包体积提示,不影响构建成功。 + +本轮验收工具:`tools/bridge-entry-view-live.mjs`、`tools/bridge-introduction-3d-live.mjs`、`tools/bridge-label-placement-live.mjs`。截图和报告中不含登录令牌或密码。 diff --git a/tools/bridge-entry-view-live.mjs b/tools/bridge-entry-view-live.mjs new file mode 100644 index 0000000..da774db --- /dev/null +++ b/tools/bridge-entry-view-live.mjs @@ -0,0 +1,45 @@ +import fs from 'node:fs'; +import assert from 'node:assert/strict'; +import {chromium,expect} from '@playwright/test'; +import {login} from './role-permissions-live.mjs'; +const baseline=process.env.BASELINE==='1',dir='reports/bridge-entry-view-20260925'+(baseline?'-before':'')+(process.env.REPORT_SUFFIX||'');fs.mkdirSync(dir,{recursive:true}); +const viewport={width:Number(process.env.WIDTH||1920),height:Number(process.env.HEIGHT||945)},baseUrl=process.env.BASE_URL||'http://127.0.0.1:6180'; +const session=await login('root'),checks=[],errors=[]; +const browser=await chromium.launch({channel:'msedge',headless:true,args:['--enable-unsafe-swiftshader','--autoplay-policy=no-user-gesture-required']}); +const page=await browser.newPage({viewport}); +await page.addInitScript(s=>{sessionStorage.setItem('unreal-tran:web:access-token:v1',s.accessToken);sessionStorage.setItem('unreal-tran:web:refresh-token:v1',s.refreshToken);localStorage.setItem('unreal-tran:web:preferences:v1',JSON.stringify({themeMode:'light'}));globalThis.__mediaPlays=[];document.addEventListener('play',ev=>globalThis.__mediaPlays.push({src:ev.target.currentSrc,className:ev.target.className}),true);},session); +await page.route(/\/src\/features\/virtual-training-legacy\/upstream\/views\/training\.js(?:\?|$)/,async route=>{const response=await route.fetch();await route.fulfill({response,body:await response.text()+` +globalThis.__entryView=()=>{const e=activeTraining;if(!e?.sceneReady)return null;const r=e.canvas.getBoundingClientRect(),primary=e.viewerPrimaryObject,meshes=[]; + primary?.traverse(m=>{if(!m.isMesh||m.userData.trainingPickProxy)return;for(let p=m;p;p=p.parent)if(!p.visible)return;const box=m.geometry.boundingBox||(m.geometry.computeBoundingBox(),m.geometry.boundingBox);if(!box)return;for(const x of [box.min.x,box.max.x])for(const y of [box.min.y,box.max.y])for(const z of [box.min.z,box.max.z]){const v=new THREE.Vector3(x,y,z).applyMatrix4(m.matrixWorld).project(e.camera);meshes.push({x:(v.x+1)*r.width/2,y:(1-v.y)*r.height/2});}}); + const left=Math.min(...meshes.map(p=>p.x)),top=Math.min(...meshes.map(p=>p.y)),right=Math.max(...meshes.map(p=>p.x)),bottom=Math.max(...meshes.map(p=>p.y)); + return {step:e.session.stepIndex,completed:[...e.session.completed],autoVoice:e.teacherVoiceEnabled,camera:e.camera.position.toArray(),target:e.controls.target.toArray(),zoom:e.camera.zoom,viewport:{x:r.x,y:r.y,w:r.width,h:r.height},area:e.inspection.clearArea(),primary:{x:left,y:top,w:right-left,h:bottom-top},rootBounds:(e.viewerEquipmentRoots||[]).map(o=>({name:o.name,size:new THREE.Box3().setFromObject(o).getSize(new THREE.Vector3()).toArray()})),pending:!!e.viewerCameraTween};};`});}); +page.on('pageerror',error=>errors.push(error.message)); +const snap=()=>page.evaluate(()=>globalThis.__entryView?.()); +const settled=async()=>{await page.waitForTimeout(750);await expect.poll(async()=>(await snap())?.pending,{timeout:15000}).toBe(false);}; +try{ + for(const id of (process.env.TASK_IDS||'86,87,88,89').split(',')){ + await page.goto(baseUrl+'/teaching/virtual-training/preview/'+id); + await expect.poll(async()=>Boolean(await snap()),{timeout:120000}).toBe(true);await page.waitForTimeout(1600); + const overlay=page.locator('.training-introduction'),media=overlay.locator('video'); + const initial={task:id,view:'entry',snapshot:await snap(),media:await media.evaluate(v=>({paused:v.paused,time:v.currentTime})),badge:await page.locator('.training-preview-badge').evaluate(el=>({max:getComputedStyle(el).maxWidth,width:el.getBoundingClientRect().width,title:el.title}))}; + checks.push(initial);await page.screenshot({path:`${dir}/task-${id}-entry.png`}); + if(!baseline){assert.equal(initial.media.paused,true);assert.equal(initial.media.time,0);assert.equal(initial.snapshot.autoVoice,false);assert.equal(initial.badge.max,'300px');assert.ok(initial.badge.width<=300);assert.deepEqual(await page.evaluate(()=>globalThis.__mediaPlays),[]);} + await overlay.locator('[data-intro-command="skip"]').click();await settled();await page.waitForTimeout(900); + if(!baseline)assert.equal(await page.locator('.training-server-video').evaluate(v=>v.paused),true,'entering operation remains silent'); + checks.push({task:id,view:'overview',snapshot:await snap()});await page.screenshot({path:`${dir}/task-${id}-overview.png`}); + await page.locator('[data-role="part-label"]').click();await settled(); + await page.locator('[data-action="reset-view"]').click();await settled(); + checks.push({task:id,view:'reset',snapshot:await snap()});await page.screenshot({path:`${dir}/task-${id}-reset.png`}); + if(!baseline){ + const current=await snap(),initialView=checks.find(c=>c.task===id&&c.view==='overview').snapshot; + assert.ok(Math.abs(current.primary.w-initialView.primary.w)<2,'reset and overview scale match');assert.deepEqual(current.completed,[]); + await page.locator('[data-action="teacher-speak"]').click();await expect.poll(()=>page.locator('.training-server-video').evaluate(v=>v.currentTime),{timeout:30000}).toBeGreaterThan(.1); + await page.locator('[data-intro-page="0"]').click();await page.waitForTimeout(700);assert.equal(await media.evaluate(v=>v.paused&&v.currentTime===0),true); + await overlay.locator('[data-intro-media="toggle"]').click();await expect.poll(()=>media.evaluate(v=>v.currentTime),{timeout:30000}).toBeGreaterThan(.1); + await overlay.locator('[data-intro-command="next"]').click();await page.waitForTimeout(700); + assert.equal(await page.locator('video').evaluateAll(videos=>videos.every(v=>v.paused)),true,'next page never auto starts'); + } + console.log('PASS entry view',id); + } + assert.deepEqual(errors,[]);fs.writeFileSync(dir+'/result.json',JSON.stringify({pass:true,baseline,baseUrl,viewport,accountRole:'root',serverMutations:[],checks,errors},null,2)); +}catch(error){await page.screenshot({path:dir+'/failure.png'}).catch(()=>{});fs.writeFileSync(dir+'/result.json',JSON.stringify({pass:false,error:error.stack,checks,errors,snapshot:await snap().catch(()=>null)},null,2));throw error;}finally{await browser.close();} diff --git a/tools/bridge-introduction-3d-live.mjs b/tools/bridge-introduction-3d-live.mjs new file mode 100644 index 0000000..97c35a1 --- /dev/null +++ b/tools/bridge-introduction-3d-live.mjs @@ -0,0 +1,87 @@ +import fs from 'node:fs'; +import assert from 'node:assert/strict'; +import { chromium, expect } from '@playwright/test'; +import { login } from './role-permissions-live.mjs'; + +const baseUrl=process.env.BASE_URL||'http://127.0.0.1:6180',viewport={width:Number(process.env.WIDTH||1920),height:Number(process.env.HEIGHT||945)}; +const dir='reports/bridge-introduction-3d-20260925'+(process.env.REPORT_SUFFIX||'');fs.mkdirSync(dir,{recursive:true}); +const session=await login('root'),checks=[],errors=[]; +const browser=await chromium.launch({channel:'msedge',headless:true,args:['--enable-unsafe-swiftshader','--autoplay-policy=no-user-gesture-required']}); +const page=await browser.newPage({viewport}); +await page.addInitScript(s=>{ + sessionStorage.setItem('unreal-tran:web:access-token:v1',s.accessToken);sessionStorage.setItem('unreal-tran:web:refresh-token:v1',s.refreshToken); + localStorage.setItem('unreal-tran:web:preferences:v1',JSON.stringify({themeMode:'light'})); +},session); +await page.route(/\/src\/features\/virtual-training-legacy\/upstream\/views\/training\.js(?:\?|$)/,async route=>{ + const response=await route.fetch();await route.fulfill({response,body:await response.text()+` + globalThis.__introSceneState=(withBounds=false)=>{ + const e=activeTraining;if(!e?.sceneReady)return null; + const p=e.introductionScene,v=e.viewport.getBoundingClientRect(); + const rect=selector=>{const node=e.viewport.querySelector(selector);if(!node?.getClientRects().length||getComputedStyle(node).visibility==='hidden')return null;const r=node.getBoundingClientRect();return{x:r.x-v.x,y:r.y-v.y,w:r.width,h:r.height};}; + const objects=withBounds?(e.viewerEquipmentRoots||[]).map(root=>{ + let x=Infinity,y=Infinity,right=-Infinity,bottom=-Infinity;const point=new THREE.Vector3();root.updateWorldMatrix(true,true); + root.traverse(m=>{if(!m.isMesh||m.userData.trainingPickProxy)return;for(let n=m;n;n=n.parent)if(!n.visible)return; + const position=m.geometry.attributes.position;for(let i=0;ierrors.push(error.message)); +const snapshot=(bounds=false)=>page.evaluate(b=>globalThis.__introSceneState?.(b),bounds); +const settled=async()=>{await page.waitForTimeout(800);await expect.poll(async()=>(await snapshot())?.tween,{timeout:20000}).toBe(false);}; +const overlap=(a,b)=>b&&a.xb.x&&a.yb.y; +try { + for(const id of (process.env.TASK_IDS||'86,87,88,89').split(',')){ + await page.goto(baseUrl+'/teaching/virtual-training/preview/'+id); + await expect.poll(async()=>!!(await snapshot())?.previewCamera,{timeout:120000}).toBe(true); + const overlay=page.locator('.training-introduction'),canvas=page.locator('.training-canvas'); + await expect(canvas).toBeVisible();assert.equal(await canvas.count(),1);assert.equal(await page.locator('.introduction-background').count(),0); + const initial=await snapshot();assert.equal(initial.sameRenderer,true);assert.equal(initial.controlsEnabled,false); + await page.waitForTimeout(1500);const rotated=await snapshot();assert.ok(rotated.angle-initial.angle>.015&&rotated.angle-initial.angle<.2); + assert.deepEqual(rotated.camera,initial.camera);assert.deepEqual(rotated.completed,[]); + assert.equal(await overlay.locator('video').evaluate(v=>v.paused&&v.currentTime===0),true); + await overlay.locator('[data-intro-scene-rotation]').click();const paused=await snapshot();await page.waitForTimeout(500); + assert.equal((await snapshot()).angle,paused.angle);await page.screenshot({path:`${dir}/task-${id}-background.png`}); + await overlay.locator('[data-intro-scene-rotation]').click(); + if(process.env.CHECK_LAYOUT==='1'){ + await page.locator('[data-viewer-action="fullscreen"]').click();await page.waitForTimeout(700); + await expect(overlay.locator('canvas')).toBeVisible();await page.screenshot({path:`${dir}/task-${id}-fullscreen.png`}); + await page.locator('[data-viewer-action="fullscreen"]').click();await page.waitForTimeout(700); + await page.setViewportSize({width:1366,height:768});await page.waitForTimeout(700);await expect(overlay.locator('canvas')).toBeVisible(); + await page.setViewportSize(viewport);await page.waitForTimeout(700); + } + const count=await page.locator('[data-intro-page]').count(); + for(let i=1;istart.angle); + assert.equal(await overlay.locator('video').evaluate(v=>v.paused),true); + } + if(count>1)await page.screenshot({path:`${dir}/task-${id}-lecture.png`}); + await overlay.locator('[data-intro-media="toggle"]').click();await expect.poll(()=>overlay.locator('video').evaluate(v=>v.currentTime),{timeout:30000}).toBeGreaterThan(.1); + await overlay.locator('[data-intro-command="skip"]').click();await settled(); + const operation=await snapshot(true);assert.equal(operation.canvasInPreview,false);assert.equal(operation.controlsEnabled,true);assert.deepEqual(operation.completed,[]); + assert.equal(await page.locator('.training-server-video').evaluate(v=>v.paused),true); + if(id==='87')for(const object of operation.objects.slice(0,2)){assert.equal(!!overlap(object,operation.tools),false,'vehicle avoids the tools panel');assert.equal(!!overlap(object,operation.teacher),false,'vehicle avoids the teacher');} + await page.screenshot({path:`${dir}/task-${id}-operation.png`}); + if(id==='87'&&process.env.CHECK_LAYOUT==='1')for(let toggle=0;toggle<2;toggle++){ + await page.locator('[data-viewer-action="tools"]').click();await settled();const layout=await snapshot(true); + for(const object of layout.objects.slice(0,2)){assert.equal(!!overlap(object,layout.tools),false,'panel toggle keeps both vehicles clear');assert.equal(!!overlap(object,layout.teacher),false);} + } + await page.locator('[data-role="part-label"]').click();await settled();const focused=await snapshot(); + await page.locator('[data-intro-page="0"]').click();await expect(overlay.locator('canvas')).toBeVisible();await page.waitForTimeout(500); + assert.deepEqual((await snapshot()).camera,focused.camera,'preview rotation cannot move the operation camera'); + await overlay.locator('[data-intro-command="skip"]').click();await settled(); + assert.deepEqual((await snapshot()).camera,focused.camera,'return restores focused operation camera'); + await page.locator('[data-action="reset-view"]').click();await settled();const reset=await snapshot(true); + assert.ok(Math.abs(reset.objects[0].w-operation.objects[0].w)<2,'reset returns to the same overview'); + await page.screenshot({path:`${dir}/task-${id}-reset.png`}); + checks.push({task:id,introductionPages:count,rotationRadians:rotated.angle-initial.angle,initial,operation,reset});console.log('PASS 3D introduction',id,count,'pages'); + } + assert.deepEqual(errors,[]);fs.writeFileSync(dir+'/result.json',JSON.stringify({pass:true,baseUrl,viewport,accountRole:'root',checks,errors},null,2)); +}catch(error){await page.screenshot({path:dir+'/failure.png'}).catch(()=>{});fs.writeFileSync(dir+'/result.json',JSON.stringify({pass:false,error:error.stack,snapshot:await snapshot(true).catch(()=>null),checks,errors},null,2));throw error;}finally{await browser.close();} diff --git a/tools/bridge-label-placement-live.mjs b/tools/bridge-label-placement-live.mjs new file mode 100644 index 0000000..6e33f83 --- /dev/null +++ b/tools/bridge-label-placement-live.mjs @@ -0,0 +1,96 @@ +import fs from 'node:fs'; +import assert from 'node:assert/strict'; +import { chromium, expect } from '@playwright/test'; +import { login } from './role-permissions-live.mjs'; + +const baseUrl = process.env.BASE_URL || 'http://127.0.0.1:6180'; +const viewport = { width: Number(process.env.WIDTH || 1920), height: Number(process.env.HEIGHT || 945) }; +const dir = 'reports/bridge-label-placement-20260925' + (process.env.REPORT_SUFFIX || ''); +fs.mkdirSync(dir, { recursive: true }); +const session = await login('root'), checks = [], errors = []; +const browser = await chromium.launch({ channel: 'msedge', headless: true, args: ['--enable-unsafe-swiftshader'] }); +const page = await browser.newPage({ viewport }); +await page.addInitScript(session => { + sessionStorage.setItem('unreal-tran:web:access-token:v1', session.accessToken); + sessionStorage.setItem('unreal-tran:web:refresh-token:v1', session.refreshToken); + localStorage.setItem('unreal-tran:web:preferences:v1', JSON.stringify({ themeMode: 'light' })); +}, session); +// Read-only observation of the actual loaded geometry and DOM; never changes training state. +await page.route(/\/src\/features\/virtual-training-legacy\/upstream\/views\/training\.js(?:\?|$)/, async route => { + const response = await route.fetch(); + await route.fulfill({ response, body: await response.text() + ` +globalThis.__labelPlacement = () => { + const e=activeTraining;if(!e?.sceneReady)return null; + const canvas=e.canvas.getBoundingClientRect(),active=e.getActiveTargetId(); + const nodes=[{node:e.partLabel,id:active},...[...e.partLabelLayer.querySelectorAll('[data-label-target]')].map(node=>({node,id:node.dataset.labelTarget}))]; + const labels=nodes.map(({node,id})=>{ + const o=e.parts.get(id),box=new THREE.Box3();if(!o)return null;o.updateWorldMatrix(true,true); + o.traverse(m=>{if(!m.isMesh||m.userData.trainingPickProxy)return;m.geometry.computeBoundingBox();box.union(m.geometry.boundingBox.clone().applyMatrix4(m.matrixWorld));}); + const p=e.worldToScreen(box.getCenter(new THREE.Vector3())),r=node.getBoundingClientRect(); + return{id,text:node.textContent,visible:node.classList.contains('is-visible'),active:node===e.partLabel,anchor:{x:p.localX,y:p.localY},rect:{x:r.x-canvas.x,y:r.y-canvas.y,w:r.width,h:r.height}}; + }).filter(Boolean); + return {labels,intro:e.introductionActive,pending:!!e.viewerCameraTween,completed:[...e.session.completed],camera:e.camera.position.toArray()}; +};` }); +}); +page.on('pageerror', error => errors.push(error.message)); +const snap = () => page.evaluate(() => globalThis.__labelPlacement?.()); +const settled = async () => { + await expect.poll(async () => (await snap())?.pending, { timeout: 20000 }).toBe(false); + await page.waitForTimeout(400); +}; +const overlap = (a, b) => a.x < b.x + b.w - 1 && a.x + a.w > b.x + 1 && a.y < b.y + b.h - 1 && a.y + a.h > b.y + 1; +const check = async (id, view) => { + await settled(); + const state = await snap(), visible = state.labels.filter(l => l.visible); + assert.ok(visible.length > 0, `${id}/${view}: labels are visible`); + for (const [i, label] of visible.entries()) { + const distance = Math.hypot(label.rect.x + label.rect.w / 2 - label.anchor.x, label.rect.y + label.rect.h / 2 - label.anchor.y); + assert.ok(distance <= 130, `${id}/${view}/${label.id}: label moved ${distance.toFixed(1)}px from its part`); + assert.ok(visible.slice(i + 1).every(other => !overlap(label.rect, other.rect)), `${id}/${view}: labels overlap`); + } + assert.deepEqual(state.completed, [], 'focusing and viewer tools cannot complete steps'); + if (view === 'overview') { + await page.waitForTimeout(400); + const stable = (await snap()).labels.filter(l => l.visible); + assert.deepEqual(stable.map(l => l.id), visible.map(l => l.id), 'stationary labels cannot flicker between layouts'); + stable.forEach((label, i) => { + assert.ok(Math.abs(label.rect.x - visible[i].rect.x) < 1 && Math.abs(label.rect.y - visible[i].rect.y) < 1, + 'hidden label measurement cannot shift neighbouring labels'); + }); + } + await page.screenshot({ path: `${dir}/task-${id}-${view}.png` }); + checks.push({ task: id, view, ...state }); +}; +try { + for (const id of (process.env.TASK_IDS || '86,87,88,89').split(',')) { + await page.goto(`${baseUrl}/teaching/virtual-training/preview/${id}`); + await expect.poll(async () => Boolean(await snap()), { timeout: 120000 }).toBe(true); + await page.locator('[data-intro-command="skip"]').click(); + if (!await page.locator('[data-action="toggle-part-labels"]').isVisible()) await page.locator('[data-viewer-action="tools"]').click(); + await page.locator('[data-action="toggle-part-labels"]').click(); + await check(id, 'overview'); + const candidate = (await snap()).labels.find(l => l.visible && !l.active); + if (candidate) await page.locator(`[data-label-target="${candidate.id}"]`).click(); + else await page.locator('[data-role="part-label"]').click(); + await check(id, 'focus'); + await page.locator('[data-action="toggle-hide-others"]').click(); + await check(id, 'hide-others'); + await page.locator('[data-action="toggle-hide-others"]').click(); + await page.locator('[data-action="reset-view"]').click(); + await check(id, 'reset'); + const canvas = await page.locator('.training-canvas').boundingBox(); + await page.mouse.move(canvas.x + canvas.width * .65, canvas.y + canvas.height * .48); + await page.mouse.down({ button: 'right' }); + await page.mouse.move(canvas.x + canvas.width * .65 + 60, canvas.y + canvas.height * .48 + 12, { steps: 12 }); + await page.mouse.up({ button: 'right' }); + await check(id, 'moved'); + console.log('PASS labels', id); + } + assert.deepEqual(errors, []); + fs.writeFileSync(dir + '/result.json', JSON.stringify({ pass: true, baseUrl, viewport, accountRole: 'root', serverMutations: [], checks, errors }, null, 2)); + fs.writeFileSync(dir + '/index.html', `部件标签位置检查

部件标签位置检查:通过

${baseUrl} · ${viewport.width} × ${viewport.height} · 教员预览(root)· 未创建任务或提交训练成绩。

标签中心距部件投影不超过128像素,互不重叠;检查聚焦、隐藏其他、复位和移动视角。

检查数据${checks.map(c => `

任务 ${c.task} · ${c.view}

`).join('')}`); +} catch (error) { + await page.screenshot({ path: dir + '/failure.png' }).catch(() => {}); + fs.writeFileSync(dir + '/result.json', JSON.stringify({ pass: false, error: error.stack, checks, errors, state: await snap().catch(() => null) }, null, 2)); + throw error; +} finally { await browser.close(); }