|
- {
- "title": "实装实训与对抗训练真实流程测试",
- "startedAt": "2026-09-05T15:37:32.805Z",
- "status": "PASS_WITH_LIMITATIONS",
- "checks": [
- {
- "title": "实装:创建、绑定牛奶卡车、3步配置、保存重开与发布",
- "status": "PASS",
- "screenshots": [
- "screenshots/physical-settings-reopen.png",
- "screenshots/physical-authoring.png",
- "screenshots/physical-preflight.png",
- "screenshots/physical-published.png"
- ],
- "details": {
- "id": "163",
- "version": "215",
- "progress": [
- 33,
- 67,
- 100
- ],
- "profile": {
- "type": "PHYSICAL",
- "stationName": "牛奶卡车测试工位 A",
- "equipmentCode": "E2E-TRUCK-163",
- "gatewayProtocol": "HTTP 测试网关",
- "sensorChannels": "人工外观确认;测试状态点位",
- "safetyInterlocks": "测试工位隔离确认"
- }
- }
- },
- {
- "title": "对抗:每队人数为小数时阻止发布",
- "status": "PASS",
- "screenshots": [
- "screenshots/confrontation-invalid-team-size.png"
- ],
- "details": {
- "input": 2.5,
- "message": "发布校验未通过\n×\n发现 1 个必须处理的问题\n\n2 个步骤 · 1 个目标 · 0 个故障 · 及格线 80 分\n\n!\n每队人数必须是 1 到 200 的整数\nmodeConfig.teamSize\ni\n本步骤尚未配置必选安全前置条件\nsteps[0].safetyRules\ni\n本步骤尚未配置必选安全前置条件\nsteps[1].safetyRules\ni\n尚未绑定离线讲解文件,运行时将保留字幕并使用默认本地语音\nsteps.audio\n关闭"
- }
- },
- {
- "title": "对抗:显式清空岗位后保存重开,不恢复默认授权",
- "status": "PASS",
- "screenshots": [
- "screenshots/confrontation-empty-positions.png"
- ],
- "details": {
- "allowedPositions": [
-
- ],
- "published": false
- }
- },
- {
- "title": "对抗:狐狸场景、两步巡检、岗位配置、说明往返与发布",
- "status": "PASS",
- "screenshots": [
- "screenshots/confrontation-positions.png",
- "screenshots/confrontation-settings-reopen.png",
- "screenshots/confrontation-authoring.png",
- "screenshots/confrontation-preflight.png",
- "screenshots/confrontation-published.png"
- ],
- "details": {
- "id": "164",
- "version": "216",
- "profile": {
- "type": "CONFRONTATION",
- "redTeamName": "狐狸巡检红队",
- "blueTeamName": "狐狸巡检蓝队",
- "teamSize": 2,
- "roundDurationMinutes": 7,
- "objective": "两队分别完成狐狸模型巡检并确认状态",
- "winRule": "按已完成步骤与协同检查结果评分",
- "submitPositions": [
- "COMMANDER"
- ],
- "roundDuration": 7,
- "eventInjections": ""
- },
- "steps": [
- {
- "title": "识别狐狸巡检目标",
- "summary": "红蓝两队分别识别场景中的狐狸模型,由指挥员确认目标。",
- "allowedPositions": [
- "COMMANDER"
- ]
- },
- {
- "title": "完成狐狸状态检查",
- "summary": "由指挥员完成状态确认,操作员协同观察;提交团队检查结果。",
- "allowedPositions": [
- "COMMANDER"
- ]
- }
- ]
- }
- },
- {
- "title": "实装:说明兼容修复回写,重新截图封面及发布",
- "status": "PASS",
- "screenshots": [
- "screenshots/physical-final-published.png"
- ],
- "details": {
- "projectId": "163",
- "publishedVersionId": "217",
- "apiTestVersionId": "215",
- "note": "既有任务50固定215;本次仅回填说明与更新截图封面,未改写任务快照。",
- "steps": [
- {
- "stepCode": "PHYSICAL-S01",
- "actionCode": "PHYSICAL-A01",
- "summary": "核对测试工位与牛奶卡车编号。",
- "physicalEventRule": {
- "source": "MANUAL",
- "eventType": "step.physical-s01.confirmed",
- "progressPercent": 33,
- "manualConfirmAllowed": true
- }
- },
- {
- "stepCode": "PHYSICAL-S02",
- "actionCode": "PHYSICAL-A02",
- "summary": "人工确认卡车外观状态,使用受控事件记录检查。",
- "physicalEventRule": {
- "source": "MANUAL",
- "eventType": "step.physical-s02.confirmed",
- "progressPercent": 67,
- "manualConfirmAllowed": true
- }
- },
- {
- "stepCode": "PHYSICAL-S03",
- "actionCode": "PHYSICAL-A03",
- "summary": "核实步骤记录并提交检查结果。",
- "physicalEventRule": {
- "source": "MANUAL",
- "eventType": "step.physical-s03.confirmed",
- "progressPercent": 100,
- "manualConfirmAllowed": true
- }
- }
- ]
- }
- },
- {
- "title": "实装默认页面:离线播放与候选复核可操作,无法执行新卡车正式步骤",
- "status": "BLOCKED",
- "screenshots": [
- "screenshots/physical-teaching-list.png",
- "screenshots/physical-offline-preview.png",
- "screenshots/physical-offline-confirmed.png"
- ],
- "details": {
- "assignmentId": "50",
- "previewUrl": "/teaching/physical-training/preview/50",
- "observed": "进入任务后仍显示固定45秒维修识别录像,确认只改变本次页面候选,未加载卡车三步正式运行。",
- "businessWrites": [
-
- ],
- "required": "需将正式任务快照、场景、人工/设备事件及运行记录接入工作台。"
- }
- },
- {
- "title": "对抗默认页面:新建下拉仅有本地液压预设,无法选择已发布狐狸训练",
- "status": "BLOCKED",
- "screenshots": [
- "screenshots/confrontation-final-entry.png",
- "screenshots/confrontation-final-local-create.png"
- ],
- "details": {
- "options": [
- "桥梁架设装备液压系统检测与维修训练"
- ],
- "formalAssignmentId": "51",
- "formalAssignmentExists": true,
- "required": "需将默认任务清单、创建表单和执行入口接入正式对抗任务服务,并确认通用巡检与五阶段排故的适用范围。"
- }
- },
- {
- "title": "训练列表两种模式展示各自真实截图封面",
- "status": "PASS",
- "screenshots": [
- "screenshots/physical-list-cover.png",
- "screenshots/confrontation-list-cover.png"
- ],
- "details": {
- "projects": [
- "163",
- "164"
- ],
- "authenticatedImagesLoaded": true
- }
- },
- {
- "title": "牛奶卡车实装检查:发布重开、模型实际可见、截图封面",
- "status": "PASS",
- "screenshots": [
- "screenshots/physical-independent-reopen.png",
- "screenshots/physical-independent-settings.png",
- "screenshots/physical-final-cover.jpg"
- ],
- "details": {
- "state": "ready",
- "meshes": 5,
- "visibleMeshes": 5,
- "skinnedMeshes": 0,
- "position": [
- 4.2,
- 0.20617168998977797,
- -0.4356763541543951
- ],
- "scale": [
- 1.2323086149245381,
- 1.2323086149245381,
- 1.2323086149245381
- ],
- "finiteBounds": true,
- "size": [
- 3.4406057210321332,
- 3.390913184034896,
- 6.000000000000001
- ],
- "camera": {
- "position": [
- 10.565439077211714,
- 5.0456876852867705,
- 7.37050840519251
- ],
- "target": [
- 4.2,
- 1.695456592017448,
- 0
- ]
- },
- "sample": {
- "width": 320,
- "height": 180,
- "changedPixels": 11669
- },
- "scene": {
- "projectId": "159",
- "versionId": "209"
- },
- "targets": [
- {
- "id": "scene:OBJ-1788605199171-2",
- "name": "牛奶卡车检验主装备",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-1ba581e6",
- "name": "Yup2Zup",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-004dec41",
- "name": "Cesium_Milk_Truck",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-5f7e4bee",
- "name": "Cesium_Milk_Truck_1",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-607e4d81",
- "name": "Cesium_Milk_Truck_2",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-5d7e48c8",
- "name": "Cesium_Milk_Truck_3",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-5e7e4a5b",
- "name": "Node",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-ce2feac4",
- "name": "Wheels",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-637e523a",
- "name": "Node001",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605199171-2/part/interaction-f417f82d",
- "name": "Wheels001",
- "source": "scene"
- }
- ],
- "steps": [
- {
- "title": "核对卡车工位与装备",
- "targetId": "scene:OBJ-1788605199171-2",
- "weight": 30
- },
- {
- "title": "检查卡车外观状态",
- "targetId": "scene:OBJ-1788605199171-2",
- "weight": 30
- },
- {
- "title": "确认检查完成",
- "targetId": "scene:OBJ-1788605199171-2",
- "weight": 40
- }
- ],
- "cover": {
- "assetId": "2111",
- "bytes": 42163,
- "sha256": "efb7060464f840bde78744d89567c609dc7b7922216d1c948fe22c1eed3d41a4",
- "width": 628,
- "height": 640
- },
- "pageErrors": [
-
- ],
- "blockedWrites": [
-
- ]
- }
- },
- {
- "title": "狐狸红蓝协同巡检:发布重开、模型实际可见、截图封面",
- "status": "PASS",
- "screenshots": [
- "screenshots/confrontation-independent-reopen.png",
- "screenshots/confrontation-independent-settings.png",
- "screenshots/confrontation-final-cover.jpg"
- ],
- "details": {
- "state": "ready",
- "meshes": 1,
- "visibleMeshes": 1,
- "skinnedMeshes": 1,
- "position": [
- -7.5,
- 0.10930174852949677,
- 0.3440109341705351
- ],
- "scale": [
- 0.03616375932570189,
- 0.03616375932570189,
- 0.03616375932570189
- ],
- "finiteBounds": true,
- "size": [
- 0.9658796100519353,
- 2.811899945787403,
- 6
- ],
- "camera": {
- "position": [
- -0.04179225073787585,
- 6.099634646023559,
- 17.355036987378313
- ],
- "target": [
- -7.512232860974557,
- 1.4059499759307126,
- -2.2204460492503126E-16
- ]
- },
- "sample": {
- "width": 320,
- "height": 180,
- "changedPixels": 827
- },
- "scene": {
- "projectId": "160",
- "versionId": "210"
- },
- "targets": [
- {
- "id": "scene:OBJ-1788605873329-2",
- "name": "维修装备主体 02",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605916565-6",
- "name": "狐狸野外巡检目标",
- "source": "scene"
- },
- {
- "id": "scene:OBJ-1788605916565-6/part/interaction-a3d35c26",
- "name": "fox",
- "source": "scene"
- }
- ],
- "steps": [
- {
- "title": "识别狐狸巡检目标",
- "targetId": "scene:OBJ-1788605916565-6",
- "weight": 50
- },
- {
- "title": "完成狐狸状态检查",
- "targetId": "scene:OBJ-1788605916565-6",
- "weight": 50
- }
- ],
- "cover": {
- "assetId": "2108",
- "bytes": 51257,
- "sha256": "79779a9d1e40c0c160fa3dab25e83931639942f53e2ee3a5da12f9f86ad70081",
- "width": 628,
- "height": 640
- },
- "pageErrors": [
-
- ],
- "blockedWrites": [
-
- ]
- }
- }
- ],
- "projects": [
- {
- "id": "163",
- "name": "实测训练-牛奶卡车实装检查-20260905",
- "mode": "PHYSICAL",
- "status": "PUBLISHED",
- "currentVersionId": "217",
- "publishedVersionId": "217",
- "sceneProjectId": "159",
- "sceneVersionId": "209",
- "stepCount": 3,
- "totalScore": 100,
- "cover": {
- "assetId": "2111",
- "image": "screenshots/physical-final-cover.jpg"
- },
- "trainingMode": "PHYSICAL",
- "modeConfig": {
- "type": "PHYSICAL",
- "stationName": "牛奶卡车测试工位 A",
- "equipmentCode": "E2E-TRUCK-163",
- "gatewayProtocol": "HTTP 测试网关",
- "sensorChannels": "人工外观确认;测试状态点位",
- "safetyInterlocks": "测试工位隔离确认"
- },
- "steps": [
- {
- "stepCode": "PHYSICAL-S01",
- "actionCode": "PHYSICAL-A01",
- "title": "核对卡车工位与装备",
- "summary": "核对测试工位与牛奶卡车编号。",
- "targetId": "scene:OBJ-1788605199171-2",
- "allowedPositions": [
-
- ],
- "physicalEventRule": {
- "source": "MANUAL",
- "eventType": "step.physical-s01.confirmed",
- "progressPercent": 33,
- "manualConfirmAllowed": true
- },
- "score": 30
- },
- {
- "stepCode": "PHYSICAL-S02",
- "actionCode": "PHYSICAL-A02",
- "title": "检查卡车外观状态",
- "summary": "人工确认卡车外观状态,使用受控事件记录检查。",
- "targetId": "scene:OBJ-1788605199171-2",
- "allowedPositions": [
-
- ],
- "physicalEventRule": {
- "source": "MANUAL",
- "eventType": "step.physical-s02.confirmed",
- "progressPercent": 67,
- "manualConfirmAllowed": true
- },
- "score": 30
- },
- {
- "stepCode": "PHYSICAL-S03",
- "actionCode": "PHYSICAL-A03",
- "title": "确认检查完成",
- "summary": "核实步骤记录并提交检查结果。",
- "targetId": "scene:OBJ-1788605199171-2",
- "allowedPositions": [
-
- ],
- "physicalEventRule": {
- "source": "MANUAL",
- "eventType": "step.physical-s03.confirmed",
- "progressPercent": 100,
- "manualConfirmAllowed": true
- },
- "score": 40
- }
- ],
- "apiTestVersionId": "215",
- "apiVersionNote": "API任务50固定215;说明字段兼容修复后在217做UI及封面回归,未改写任务快照。"
- },
- {
- "id": "164",
- "name": "实测训练-狐狸红蓝协同巡检-20260905",
- "mode": "CONFRONTATION",
- "status": "PUBLISHED",
- "currentVersionId": "216",
- "publishedVersionId": "216",
- "sceneProjectId": "160",
- "sceneVersionId": "210",
- "stepCount": 2,
- "totalScore": 100,
- "cover": {
- "assetId": "2108",
- "image": "screenshots/confrontation-final-cover.jpg"
- },
- "trainingMode": "CONFRONTATION",
- "modeConfig": {
- "type": "CONFRONTATION",
- "redTeamName": "狐狸巡检红队",
- "blueTeamName": "狐狸巡检蓝队",
- "teamSize": 2,
- "roundDurationMinutes": 7,
- "objective": "两队分别完成狐狸模型巡检并确认状态",
- "winRule": "按已完成步骤与协同检查结果评分",
- "submitPositions": [
- "COMMANDER"
- ],
- "roundDuration": 7,
- "eventInjections": ""
- },
- "steps": [
- {
- "stepCode": "CONFRONTATION-S01",
- "actionCode": "CONFRONTATION-A01",
- "title": "识别狐狸巡检目标",
- "summary": "红蓝两队分别识别场景中的狐狸模型,由指挥员确认目标。",
- "targetId": "scene:OBJ-1788605916565-6",
- "allowedPositions": [
- "COMMANDER"
- ],
- "physicalEventRule": {
-
- },
- "score": 50
- },
- {
- "stepCode": "CONFRONTATION-S02",
- "actionCode": "CONFRONTATION-A02",
- "title": "完成狐狸状态检查",
- "summary": "由指挥员完成状态确认,操作员协同观察;提交团队检查结果。",
- "targetId": "scene:OBJ-1788605916565-6",
- "allowedPositions": [
- "COMMANDER"
- ],
- "physicalEventRule": {
-
- },
- "score": 50
- }
- ],
- "apiTestVersionId": "216"
- }
- ],
- "bugs": [
-
- ],
- "limitations": [
- "实装为MANUAL人工事件合同测试,没有接真实PLC、摄像头、视觉识别服务或安全联锁设备。",
- "两步狐狸巡检用于通用步骤与红蓝岗位合同,不是需要CONF-INSPECT等五个固定编码的完整排故作业;未宣称排故工作台阶段回写已打通。",
- "对抗验证服务端设置了7分钟截止时刻,未等待自然超时触发;未把API账号请求视为多人跨浏览器实时协同UI测试。",
- "牛奶卡车沿用原发布场景的视角,车间立柱遮挡部分车身;真实模型已渲染且封面来自该视口。",
- "实装当前发布217仅回填兼容说明并更新封面;已完成教学任务50仍固定不可变版本215。",
- "历史仅positionActions设置动作岗位的定义在教学读取侧与当前发布预检存在口径差异;本次按现有发布规则配置非空allowedPositions,未改后端岗位合同。",
- "开发环境列表切换曾出现一次15秒超时,刷新后恢复;独立复测两种模式共6次查询均HTTP 200、耗时247–403ms,未复现稳定慢查询。详见list-api-latency.json。"
- ],
- "pageErrors": [
-
- ],
- "development": [
- "修复模式配置被旧channelProfiles覆盖,保持默认profile与modeConfig一致;对抗分钟/秒及旧roundDuration兼容。",
- "保留显式空配置文本;每队人数范围与服务端1–200一致,无效数字阻止发布,不静默夹断。",
- "保留步骤设备事件、人工确认、岗位与运行编码;增删排序后重新计算严格递增进度。",
- "修复复制步骤编码冲突(含大小写),复制动作岗位映射随新动作编码迁移。",
- "显式清空allowedPositions不再补回默认三岗位,保持权限边界并交由正式发布校验阻断。",
- "修复instruction/summary双界面操作说明丢失及显式空提示恢复演示内容;用户实际编辑时同步。",
- "正式targetId优先,目标选择同步语义引用、节点与动作,防止旧targetRef把新目标回退。",
- "沿用上轮训练3D视口截图方案:受控TRAINING_COVER上传、同次保存资产与内容,保存/发布后列表正确显示截图。",
- "本次均为正式工程合同适配与bugfix,未新增数据库字段、执行DDL或更改原型业务流程;测试数据通过开发API创建。"
- ],
- "commands": [
- {
- "command": "pnpm run build",
- "status": "PASS",
- "details": "vue-tsc、Vite构建和legacy iframe分发校验均通过;仅已有包体积提示。"
- },
- {
- "command": "node --test tools/training-*.test.mjs(本次8个聚焦文件)",
- "status": "PASS",
- "details": "94/94通过,涵盖封面、场景、真实模型、目标、元数据、模式与步骤兼容。"
- },
- {
- "command": "pnpm run test:training-legacy",
- "status": "PASS",
- "details": "两项既有训练/地形合同检查通过。"
- },
- {
- "command": "content-training-studio.spec.ts / Edge",
- "status": "PASS",
- "details": "7/7通过(mock API的工作台回归),无跳过、无不稳定用例,独立报告studio-regression/html/index.html。"
- },
- {
- "command": "UTE2E_TRAINING_MODES=1 UTE2E_BASE_URL=http://192.168.31.168:6180 node tools/training-scene-visibility.e2e.mjs",
- "status": "PASS",
- "details": "独立Edge会话2/2通过,真实LAN服务、禁止业务写请求;模型可见像素差、固定场景依赖、JPEG尺寸与SHA-256全部通过。"
- },
- {
- "command": "node tools/training-modes-api-live.mjs(163:215;164:216)",
- "status": "PASS",
- "details": "18/18检查组通过,90次正式教学API请求;含训练/场景/模型固定快照只读复核,详见api-evidence.json。"
- }
- ],
- "confirmationItems": [
- "将实装工作台从固定离线识别回放扩展为读取正式任务、已发布场景和步骤,并接入人工/设备事件、提交与结果。",
- "将对抗默认入口从本地预设任务接入正式任务清单、创建和执行链路;确认通用巡检步骤与五阶段排故工作台的适用范围。"
- ],
- "finishedAt": "2026-09-05T15:58:39.239Z"
- }
|