agentworkshop 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (895) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +631 -0
  2. package/.AgentWorkShop/prompts/lead-supervise.md +42 -0
  3. package/.AgentWorkShop/prompts/mode-goal.md +26 -0
  4. package/.AgentWorkShop/prompts/mode-loop.md +10 -0
  5. package/.AgentWorkShop/prompts/mode-pipeline.md +16 -0
  6. package/.AgentWorkShop/prompts/peer-lead-roster.md +3 -0
  7. package/.AgentWorkShop/prompts/peer-message.md +14 -0
  8. package/.AgentWorkShop/prompts/peer-reply-optional.md +2 -0
  9. package/.AgentWorkShop/prompts/peer-reply-required.md +8 -0
  10. package/.AgentWorkShop/prompts/scenario-default.md +11 -0
  11. package/.AgentWorkShop/prompts/system-manual.md +18 -0
  12. package/.AgentWorkShop/prompts/team-roster.md +9 -0
  13. package/.AgentWorkShop/prompts/worker-workflow.md +19 -0
  14. package/.env.example +34 -0
  15. package/README-zh.md +424 -0
  16. package/README.md +424 -0
  17. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.json +1 -0
  18. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/1459e6269990a5d229b9228c8b2f62ffaa7d350068380ae8b875fee0db45cca6.source +180 -0
  19. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/c2991e909c70c5c12b90a407c7adcf63384c51668a2b334e6e047fa675c268fe.source +305 -0
  20. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/e09129039d1e27e3fac24becc9bdafd2d1a7c8049bff24173df007be865f0165.source +264 -0
  21. package/app/.mimosa/hook-status/sess_05189059-e42d-4188-8911-4f7baabe009b-28ef7c75ea.json +14 -0
  22. package/app/app.vue +139 -0
  23. package/app/assets/css/main.css +1257 -0
  24. package/app/components/AppHeader.vue +675 -0
  25. package/app/components/AppSidebar.vue +286 -0
  26. package/app/components/AwChart.vue +44 -0
  27. package/app/components/AwLogo.vue +75 -0
  28. package/app/components/workshop/A2aRpcDebugger.vue +237 -0
  29. package/app/components/workshop/AgentInspectorDrawer.vue +424 -0
  30. package/app/components/workshop/AgentLanesView.vue +947 -0
  31. package/app/components/workshop/ArtifactCard.vue +120 -0
  32. package/app/components/workshop/AssetLibrary.vue +450 -0
  33. package/app/components/workshop/ChannelSessionList.vue +593 -0
  34. package/app/components/workshop/CommandPalette.vue +270 -0
  35. package/app/components/workshop/Composer.vue +731 -0
  36. package/app/components/workshop/DeviceTwinPanel.vue +607 -0
  37. package/app/components/workshop/EventBlock.vue +602 -0
  38. package/app/components/workshop/FileSelectorModal.vue +188 -0
  39. package/app/components/workshop/InspectorPanel.vue +265 -0
  40. package/app/components/workshop/LiveAgentBar.vue +362 -0
  41. package/app/components/workshop/MemoryPanel.vue +364 -0
  42. package/app/components/workshop/MentionHoverCard.vue +155 -0
  43. package/app/components/workshop/MultiChannelView.vue +189 -0
  44. package/app/components/workshop/PaneSplitter.vue +142 -0
  45. package/app/components/workshop/StatsPanel.vue +168 -0
  46. package/app/components/workshop/TaskBoardView.vue +636 -0
  47. package/app/components/workshop/TaskInspectorDrawer.vue +390 -0
  48. package/app/components/workshop/TranscriptTimeline.vue +545 -0
  49. package/app/components/workshop/blocks/ClusterArtifact.vue +77 -0
  50. package/app/components/workshop/blocks/ClusterError.vue +85 -0
  51. package/app/components/workshop/blocks/ClusterLife.vue +87 -0
  52. package/app/components/workshop/blocks/ClusterMember.vue +93 -0
  53. package/app/components/workshop/blocks/ClusterMemory.vue +84 -0
  54. package/app/components/workshop/blocks/ClusterOther.vue +67 -0
  55. package/app/components/workshop/blocks/ClusterRoute.vue +359 -0
  56. package/app/components/workshop/blocks/ClusterStatus.vue +147 -0
  57. package/app/components/workshop/blocks/ClusterStream.vue +325 -0
  58. package/app/components/workshop/blocks/ClusterTask.vue +151 -0
  59. package/app/components/workshop/blocks/ClusterTool.vue +158 -0
  60. package/app/components/workshop/lanes/LaneBlocks.vue +149 -0
  61. package/app/components/workshop/terminal/OmpTerminalPanel.vue +1010 -0
  62. package/app/components/workshop/town/ModelPreview3D.vue +276 -0
  63. package/app/components/workshop/town/TownScene.ts +1355 -0
  64. package/app/components/workshop/town/TownScene3D.ts +4533 -0
  65. package/app/components/workshop/town/TownView.vue +7071 -0
  66. package/app/composables/useCodeCopy.ts +30 -0
  67. package/app/composables/useHttp.ts +8 -0
  68. package/app/composables/useRouteMeta.ts +50 -0
  69. package/app/composables/useSiteConfig.ts +21 -0
  70. package/app/composables/workshop/apiClient.ts +95 -0
  71. package/app/composables/workshop/useCharacterAssets.ts +292 -0
  72. package/app/composables/workshop/useClusteredBlocks.ts +150 -0
  73. package/app/composables/workshop/useComposerBus.ts +16 -0
  74. package/app/composables/workshop/useDaqStream.ts +379 -0
  75. package/app/composables/workshop/useDcwStream.ts +300 -0
  76. package/app/composables/workshop/useDeviceTwins.ts +147 -0
  77. package/app/composables/workshop/useEventBlocks.ts +662 -0
  78. package/app/composables/workshop/useLocalTime.ts +33 -0
  79. package/app/composables/workshop/useOpsLog.ts +164 -0
  80. package/app/composables/workshop/useSceneLayouts.ts +166 -0
  81. package/app/composables/workshop/useTownBus.ts +47 -0
  82. package/app/composables/workshop/useVisibleInterval.ts +42 -0
  83. package/app/composables/workshop/useWorkshopApi.ts +224 -0
  84. package/app/composables/workshop/useWorkshopWs.ts +113 -0
  85. package/app/config/index.ts +66 -0
  86. package/app/config/schema.ts +68 -0
  87. package/app/error.vue +76 -0
  88. package/app/layouts/default.vue +100 -0
  89. package/app/layouts/town.vue +16 -0
  90. package/app/pages/daq/[id].vue +796 -0
  91. package/app/pages/daq/index.vue +2577 -0
  92. package/app/pages/dcw/[id].vue +2259 -0
  93. package/app/pages/dcw/index.vue +1079 -0
  94. package/app/pages/index.vue +830 -0
  95. package/app/pages/logs/index.vue +621 -0
  96. package/app/pages/monitor.vue +665 -0
  97. package/app/pages/settings.vue +757 -0
  98. package/app/pages/tokens.vue +610 -0
  99. package/app/pages/town.vue +145 -0
  100. package/app/pages/users.vue +257 -0
  101. package/app/pages/workshop/agents.vue +382 -0
  102. package/app/pages/workshop/channel-templates.vue +456 -0
  103. package/app/pages/workshop/index.vue +604 -0
  104. package/app/pages/workshop/teams.vue +448 -0
  105. package/app/pages/workshop/w/[wsId].vue +516 -0
  106. package/app/plugins/http.ts +71 -0
  107. package/app/plugins/locale-restore.client.ts +13 -0
  108. package/app/plugins/runtime-config.client.ts +65 -0
  109. package/app/plugins/session-restore.client.ts +24 -0
  110. package/app/plugins/theme.client.ts +15 -0
  111. package/app/stores/app.ts +32 -0
  112. package/app/stores/route-trail.ts +45 -0
  113. package/app/stores/runtime-config.ts +212 -0
  114. package/app/stores/workshop/connection.ts +184 -0
  115. package/app/stores/workshop/entities.ts +350 -0
  116. package/app/stores/workshop/events.ts +292 -0
  117. package/app/stores/workshop/user.ts +176 -0
  118. package/app/stores/workshop/workspaces.ts +133 -0
  119. package/bin/aw.mjs +13 -0
  120. package/cli/aw.mjs +184 -0
  121. package/cli/commands/build.mjs +33 -0
  122. package/cli/commands/config.mjs +157 -0
  123. package/cli/commands/dev.mjs +74 -0
  124. package/cli/commands/doctor.mjs +120 -0
  125. package/cli/commands/home.mjs +75 -0
  126. package/cli/commands/init.mjs +150 -0
  127. package/cli/commands/register.mjs +123 -0
  128. package/cli/commands/start.mjs +106 -0
  129. package/cli/commands/status.mjs +67 -0
  130. package/cli/commands/update.mjs +116 -0
  131. package/cli/commands/version.mjs +32 -0
  132. package/cli/core/args.mjs +95 -0
  133. package/cli/core/context.mjs +264 -0
  134. package/cli/core/errors.mjs +18 -0
  135. package/cli/core/help.mjs +68 -0
  136. package/cli/core/logger.mjs +40 -0
  137. package/cli/core/registry.mjs +111 -0
  138. package/config.yml +70 -0
  139. package/docker-compose.yml +34 -0
  140. package/docs/cli.md +220 -0
  141. package/i18n/dicts/_en.json +1097 -0
  142. package/i18n/dicts/_en2.json +300 -0
  143. package/i18n/dicts/_en3.json +102 -0
  144. package/i18n/dicts/_en4.json +115 -0
  145. package/i18n/dicts/_en5.json +33 -0
  146. package/i18n/dicts/a2aRpcDebugger.json +10 -0
  147. package/i18n/dicts/agentInspectorDrawer.json +25 -0
  148. package/i18n/dicts/agentLanesView.json +57 -0
  149. package/i18n/dicts/agents.json +27 -0
  150. package/i18n/dicts/appHeader.json +7 -0
  151. package/i18n/dicts/appSidebar.json +1 -0
  152. package/i18n/dicts/artifactCard.json +6 -0
  153. package/i18n/dicts/assetLibrary.json +18 -0
  154. package/i18n/dicts/awChart.json +1 -0
  155. package/i18n/dicts/awLogo.json +1 -0
  156. package/i18n/dicts/channelSessionList.json +45 -0
  157. package/i18n/dicts/clusterArtifact.json +4 -0
  158. package/i18n/dicts/clusterError.json +3 -0
  159. package/i18n/dicts/clusterLife.json +5 -0
  160. package/i18n/dicts/clusterMember.json +3 -0
  161. package/i18n/dicts/clusterMemory.json +3 -0
  162. package/i18n/dicts/clusterOther.json +3 -0
  163. package/i18n/dicts/clusterRoute.json +15 -0
  164. package/i18n/dicts/clusterStatus.json +3 -0
  165. package/i18n/dicts/clusterStream.json +3 -0
  166. package/i18n/dicts/clusterTask.json +10 -0
  167. package/i18n/dicts/clusterTool.json +3 -0
  168. package/i18n/dicts/commandPalette.json +16 -0
  169. package/i18n/dicts/composer.json +38 -0
  170. package/i18n/dicts/ctpl.json +32 -0
  171. package/i18n/dicts/daq.json +157 -0
  172. package/i18n/dicts/daqDetail.json +55 -0
  173. package/i18n/dicts/dcw.json +68 -0
  174. package/i18n/dicts/dcwDetail.json +199 -0
  175. package/i18n/dicts/deviceTwinPanel.json +12 -0
  176. package/i18n/dicts/eventBlock.json +8 -0
  177. package/i18n/dicts/fileSelectorModal.json +6 -0
  178. package/i18n/dicts/inspectorPanel.json +12 -0
  179. package/i18n/dicts/laneBlocks.json +6 -0
  180. package/i18n/dicts/liveAgentBar.json +8 -0
  181. package/i18n/dicts/logs.json +39 -0
  182. package/i18n/dicts/memoryPanel.json +20 -0
  183. package/i18n/dicts/mentionHoverCard.json +4 -0
  184. package/i18n/dicts/modelPreview3D.json +1 -0
  185. package/i18n/dicts/monitor.json +5 -0
  186. package/i18n/dicts/multiChannelView.json +13 -0
  187. package/i18n/dicts/ompTerminalPanel.json +7 -0
  188. package/i18n/dicts/paneSplitter.json +3 -0
  189. package/i18n/dicts/settings.json +1 -0
  190. package/i18n/dicts/statsPanel.json +6 -0
  191. package/i18n/dicts/taskBoardView.json +22 -0
  192. package/i18n/dicts/taskInspectorDrawer.json +19 -0
  193. package/i18n/dicts/teams.json +33 -0
  194. package/i18n/dicts/tokens.json +30 -0
  195. package/i18n/dicts/town.json +7 -0
  196. package/i18n/dicts/townView.json +209 -0
  197. package/i18n/dicts/transcriptTimeline.json +31 -0
  198. package/i18n/dicts/users.json +15 -0
  199. package/i18n/dicts/wsHome.json +33 -0
  200. package/i18n/dicts/wsView.json +15 -0
  201. package/i18n/locales/en.ts +1737 -0
  202. package/i18n/locales/zh-CN.ts +1736 -0
  203. package/nuxt.config.ts +209 -0
  204. package/package.json +123 -0
  205. package/public/assets/game/character/bot.png +0 -0
  206. package/public/assets/game/character/device-3d.glb +0 -0
  207. package/public/assets/game/character/hero-3d.glb +0 -0
  208. package/public/assets/game/character/hero-anime-1.glb +0 -0
  209. package/public/assets/game/character/hero-anime-2.glb +0 -0
  210. package/public/assets/game/character/hero-anime-3.glb +0 -0
  211. package/public/assets/game/character/hero-anime-4.glb +0 -0
  212. package/public/assets/game/character/knight.png +0 -0
  213. package/public/assets/game/character/mage.png +0 -0
  214. package/public/assets/game/coin.png +0 -0
  215. package/public/assets/game/devices/agv.glb +0 -0
  216. package/public/assets/game/devices/caster.glb +0 -0
  217. package/public/assets/game/devices/device-console.glb +0 -0
  218. package/public/assets/game/devices/device-robot-arm.glb +0 -0
  219. package/public/assets/game/devices/device-scanner.glb +0 -0
  220. package/public/assets/game/devices/extruder.glb +0 -0
  221. package/public/assets/game/devices/mdo.glb +0 -0
  222. package/public/assets/game/devices/power-cabinet.glb +0 -0
  223. package/public/assets/game/devices/pump.glb +0 -0
  224. package/public/assets/game/devices/tdo.glb +0 -0
  225. package/public/assets/game/devices/thickness-scanner.glb +0 -0
  226. package/public/assets/game/devices/winder.glb +0 -0
  227. package/public/assets/game/npc/boltnu-sheet.png +0 -0
  228. package/public/assets/game/npc/fluttaflap-sheet.png +0 -0
  229. package/public/assets/game/npc/rockitten-sheet.png +0 -0
  230. package/public/assets/game/npc/tux-sheet.png +0 -0
  231. package/public/assets/game/player/misa-back-walk.000.png +0 -0
  232. package/public/assets/game/player/misa-back-walk.001.png +0 -0
  233. package/public/assets/game/player/misa-back-walk.002.png +0 -0
  234. package/public/assets/game/player/misa-back-walk.003.png +0 -0
  235. package/public/assets/game/player/misa-back.png +0 -0
  236. package/public/assets/game/player/misa-front-walk.000.png +0 -0
  237. package/public/assets/game/player/misa-front-walk.001.png +0 -0
  238. package/public/assets/game/player/misa-front-walk.002.png +0 -0
  239. package/public/assets/game/player/misa-front-walk.003.png +0 -0
  240. package/public/assets/game/player/misa-front.png +0 -0
  241. package/public/assets/game/player/misa-left-walk.000.png +0 -0
  242. package/public/assets/game/player/misa-left-walk.001.png +0 -0
  243. package/public/assets/game/player/misa-left-walk.002.png +0 -0
  244. package/public/assets/game/player/misa-left-walk.003.png +0 -0
  245. package/public/assets/game/player/misa-left.png +0 -0
  246. package/public/assets/game/player/misa-right-walk.000.png +0 -0
  247. package/public/assets/game/player/misa-right-walk.001.png +0 -0
  248. package/public/assets/game/player/misa-right-walk.002.png +0 -0
  249. package/public/assets/game/player/misa-right-walk.003.png +0 -0
  250. package/public/assets/game/player/misa-right.png +0 -0
  251. package/public/assets/game/player-sheet.png +0 -0
  252. package/public/assets/game/tuxemon-town.json +1 -0
  253. package/public/assets/game/tuxmon-sample-32px-extruded.png +0 -0
  254. package/public/assets/game/wuwa/scene-map.png +0 -0
  255. package/public/assets/game/wuwa/world-far.png +0 -0
  256. package/public/assets/game/wuwa/world-middle.png +0 -0
  257. package/public/assets/game/wuwa/world-near.png +0 -0
  258. package/public/assets/game/wuwa/wu-aura.png +0 -0
  259. package/public/assets/game/wuwa/wu-lead.png +0 -0
  260. package/public/assets/game/wuwa/wu-ring.png +0 -0
  261. package/public/assets/game/wuwa/wu-slash.png +0 -0
  262. package/public/assets/game/wuwa/wu-worker-0.png +0 -0
  263. package/public/assets/game/wuwa/wu-worker-1.png +0 -0
  264. package/public/assets/game/wuwa/wu-worker-2.png +0 -0
  265. package/public/favicon.svg +14 -0
  266. package/public/scene/background/cyber-town-background.svg +110 -0
  267. package/scripts/_daq-realtime-probe.mjs +68 -0
  268. package/scripts/_daq-warn-probe.mjs +50 -0
  269. package/scripts/_dbg-agent-tools-audit.mjs +154 -0
  270. package/scripts/_dbg-agent-workflow-audit.mjs +177 -0
  271. package/scripts/_dbg-anim-verify.mjs +81 -0
  272. package/scripts/_dbg-audit-all-pages.mjs +43 -0
  273. package/scripts/_dbg-autoframe.mjs +103 -0
  274. package/scripts/_dbg-beacon-final.mjs +181 -0
  275. package/scripts/_dbg-bind-bidi-e2e.mjs +239 -0
  276. package/scripts/_dbg-callout-near.mjs +108 -0
  277. package/scripts/_dbg-chan-focus.mjs +49 -0
  278. package/scripts/_dbg-cleanup.mjs +31 -0
  279. package/scripts/_dbg-closedloop-ui-shot.mjs +61 -0
  280. package/scripts/_dbg-console-audit.mjs +61 -0
  281. package/scripts/_dbg-console-probe.mjs +23 -0
  282. package/scripts/_dbg-context-inject-audit.mjs +231 -0
  283. package/scripts/_dbg-crash-recovery.mjs +143 -0
  284. package/scripts/_dbg-crop-shot.mjs +16 -0
  285. package/scripts/_dbg-daq-acc-probe.mjs +24 -0
  286. package/scripts/_dbg-daq-attrib.mjs +34 -0
  287. package/scripts/_dbg-daq-bind-audit.mjs +119 -0
  288. package/scripts/_dbg-daq-cadence.mjs +104 -0
  289. package/scripts/_dbg-daq-debug.mjs +22 -0
  290. package/scripts/_dbg-daq-diag.mjs +33 -0
  291. package/scripts/_dbg-daq-e2e.mjs +171 -0
  292. package/scripts/_dbg-daq-film.mjs +136 -0
  293. package/scripts/_dbg-daq-filter-e2e.mjs +109 -0
  294. package/scripts/_dbg-daq-filter-e2e2.mjs +62 -0
  295. package/scripts/_dbg-daq-final-regression.mjs +78 -0
  296. package/scripts/_dbg-daq-full-check.mjs +179 -0
  297. package/scripts/_dbg-daq-line-note-verify.mjs +61 -0
  298. package/scripts/_dbg-daq-linebanner-audit.mjs +107 -0
  299. package/scripts/_dbg-daq-pages-shot.mjs +37 -0
  300. package/scripts/_dbg-daq-perf.mjs +61 -0
  301. package/scripts/_dbg-daq-probe.mjs +27 -0
  302. package/scripts/_dbg-daq-recipe-e2e.mjs +30 -0
  303. package/scripts/_dbg-daq-redesign-shot.mjs +88 -0
  304. package/scripts/_dbg-daq-rows-probe.mjs +26 -0
  305. package/scripts/_dbg-daq-rowstate-e2e.mjs +152 -0
  306. package/scripts/_dbg-daq-rowstate-shot.mjs +45 -0
  307. package/scripts/_dbg-daq-rowstate-shot2.mjs +38 -0
  308. package/scripts/_dbg-daq-tpl.mjs +144 -0
  309. package/scripts/_dbg-dash-console-check.mjs +49 -0
  310. package/scripts/_dbg-dash-deep-probe.mjs +61 -0
  311. package/scripts/_dbg-dash-hitpoint.mjs +44 -0
  312. package/scripts/_dbg-dash-live-shot.mjs +36 -0
  313. package/scripts/_dbg-dash-shot.mjs +21 -0
  314. package/scripts/_dbg-dashboard-shot.mjs +35 -0
  315. package/scripts/_dbg-dcw-audit.mjs +126 -0
  316. package/scripts/_dbg-dcw-card-e2e.mjs +108 -0
  317. package/scripts/_dbg-dcw-channel-ui.mjs +144 -0
  318. package/scripts/_dbg-dcw-examples.mjs +81 -0
  319. package/scripts/_dbg-dcw-light-shot.mjs +19 -0
  320. package/scripts/_dbg-dcw-line-audit.mjs +107 -0
  321. package/scripts/_dbg-dcw-pause-tpl-audit.mjs +161 -0
  322. package/scripts/_dbg-dcw-pause-ui.mjs +175 -0
  323. package/scripts/_dbg-dcw-scene.mjs +72 -0
  324. package/scripts/_dbg-dcw-shot2.mjs +14 -0
  325. package/scripts/_dbg-dcw-twin-e2e.mjs +192 -0
  326. package/scripts/_dbg-dt-interact.mjs +193 -0
  327. package/scripts/_dbg-error-probe.mjs +54 -0
  328. package/scripts/_dbg-filter-light-verify.mjs +54 -0
  329. package/scripts/_dbg-final-acceptance-2.mjs +72 -0
  330. package/scripts/_dbg-final-acceptance.mjs +192 -0
  331. package/scripts/_dbg-final-agent-e2e.mjs +151 -0
  332. package/scripts/_dbg-final-full-e2e.mjs +218 -0
  333. package/scripts/_dbg-final-line-e2e.mjs +173 -0
  334. package/scripts/_dbg-final-t6-hitl.mjs +38 -0
  335. package/scripts/_dbg-focus-range.mjs +115 -0
  336. package/scripts/_dbg-fresh-scene-e2e.mjs +125 -0
  337. package/scripts/_dbg-full-feature-e2e.mjs +219 -0
  338. package/scripts/_dbg-fullchain-e2e.mjs +178 -0
  339. package/scripts/_dbg-gate-debug.mjs +37 -0
  340. package/scripts/_dbg-gif-encode.mjs +111 -0
  341. package/scripts/_dbg-gizmo.mjs +95 -0
  342. package/scripts/_dbg-glass-probe.mjs +57 -0
  343. package/scripts/_dbg-glass-shot.mjs +50 -0
  344. package/scripts/_dbg-glass-sweep.mjs +25 -0
  345. package/scripts/_dbg-glb-probe.mjs +43 -0
  346. package/scripts/_dbg-hardening-probe.mjs +90 -0
  347. package/scripts/_dbg-hero-btn-probe.mjs +21 -0
  348. package/scripts/_dbg-hidden-check.mjs +21 -0
  349. package/scripts/_dbg-hitl-timeout-e2e.mjs +93 -0
  350. package/scripts/_dbg-hmi-audit.mjs +164 -0
  351. package/scripts/_dbg-home-repro.mjs +24 -0
  352. package/scripts/_dbg-home-stack.mjs +13 -0
  353. package/scripts/_dbg-huashu-survey.mjs +31 -0
  354. package/scripts/_dbg-huashu-survey2.mjs +35 -0
  355. package/scripts/_dbg-huashu-verify.mjs +25 -0
  356. package/scripts/_dbg-huashu-verify2.mjs +26 -0
  357. package/scripts/_dbg-hydration-detail.mjs +18 -0
  358. package/scripts/_dbg-i18n-debug.mjs +27 -0
  359. package/scripts/_dbg-i18n-debug2.mjs +26 -0
  360. package/scripts/_dbg-i18n-final.mjs +42 -0
  361. package/scripts/_dbg-i18n-scan.mjs +38 -0
  362. package/scripts/_dbg-infra-lifecycle.mjs +44 -0
  363. package/scripts/_dbg-line-aura-shots.mjs +54 -0
  364. package/scripts/_dbg-line-control-e2e.mjs +120 -0
  365. package/scripts/_dbg-line-gate-audit.mjs +108 -0
  366. package/scripts/_dbg-line-live-e2e.mjs +144 -0
  367. package/scripts/_dbg-line-scenario-e2e.mjs +256 -0
  368. package/scripts/_dbg-minimal-omp.mjs +77 -0
  369. package/scripts/_dbg-mode-nav.mjs +173 -0
  370. package/scripts/_dbg-mqtt-chain-e2e.mjs +90 -0
  371. package/scripts/_dbg-nav-rpg.mjs +84 -0
  372. package/scripts/_dbg-nav-shot.mjs +28 -0
  373. package/scripts/_dbg-nav.mjs +27 -0
  374. package/scripts/_dbg-opslog-e2e.mjs +121 -0
  375. package/scripts/_dbg-opslog-shots.mjs +62 -0
  376. package/scripts/_dbg-opt-team-e2e.mjs +133 -0
  377. package/scripts/_dbg-optimization-e2e.mjs +94 -0
  378. package/scripts/_dbg-orbit.mjs +58 -0
  379. package/scripts/_dbg-panesplitter-fix-check.mjs +62 -0
  380. package/scripts/_dbg-phase-e3-monitor.mjs +25 -0
  381. package/scripts/_dbg-pop-clamp-verify.mjs +77 -0
  382. package/scripts/_dbg-preset-e2e.mjs +116 -0
  383. package/scripts/_dbg-preview-console.mjs +28 -0
  384. package/scripts/_dbg-preview-minrepro.mjs +156 -0
  385. package/scripts/_dbg-preview-pixels.mjs +93 -0
  386. package/scripts/_dbg-quality-pages-e2e.mjs +84 -0
  387. package/scripts/_dbg-query-cancel.ts +12 -0
  388. package/scripts/_dbg-rail-tree-e2e.mjs +183 -0
  389. package/scripts/_dbg-real-driver-e2e.mjs +55 -0
  390. package/scripts/_dbg-redesign-shots.mjs +34 -0
  391. package/scripts/_dbg-restart-persist.mjs +41 -0
  392. package/scripts/_dbg-rollback-mgr-audit.mjs +169 -0
  393. package/scripts/_dbg-rpg.mjs +71 -0
  394. package/scripts/_dbg-sc001-dispatch.mjs +63 -0
  395. package/scripts/_dbg-scenario-final-shot.mjs +24 -0
  396. package/scripts/_dbg-scenario-phase-e2.mjs +75 -0
  397. package/scripts/_dbg-scenario-phase-e3.mjs +96 -0
  398. package/scripts/_dbg-scenario-phase1.mjs +90 -0
  399. package/scripts/_dbg-scenario-phase2.mjs +105 -0
  400. package/scripts/_dbg-scenario-phase3-monitor.mjs +48 -0
  401. package/scripts/_dbg-scenario-phase3.mjs +111 -0
  402. package/scripts/_dbg-scene-polish-shot.mjs +118 -0
  403. package/scripts/_dbg-selring-probe.mjs +47 -0
  404. package/scripts/_dbg-sideinfo.mjs +101 -0
  405. package/scripts/_dbg-splitter.mjs +88 -0
  406. package/scripts/_dbg-team-repro.mjs +76 -0
  407. package/scripts/_dbg-town-alarm-e2e.mjs +40 -0
  408. package/scripts/_dbg-town-beauty-shots.mjs +54 -0
  409. package/scripts/_dbg-town-daq-shot.mjs +26 -0
  410. package/scripts/_dbg-town-full-e2e.mjs +104 -0
  411. package/scripts/_dbg-town-gate.mjs +44 -0
  412. package/scripts/_dbg-town-ins-probe.mjs +37 -0
  413. package/scripts/_dbg-town-perf.mjs +50 -0
  414. package/scripts/_dbg-town-polish-shots.mjs +82 -0
  415. package/scripts/_dbg-town-realtime.mjs +42 -0
  416. package/scripts/_dbg-town-shot3.mjs +17 -0
  417. package/scripts/_dbg-town-truth.mjs +37 -0
  418. package/scripts/_dbg-town-truth2.mjs +27 -0
  419. package/scripts/_dbg-transform-audit.mjs +98 -0
  420. package/scripts/_dbg-trend-expand-test.mjs +38 -0
  421. package/scripts/_dbg-twindaq-focus.mjs +81 -0
  422. package/scripts/_dbg-ui-polish-shot.mjs +43 -0
  423. package/scripts/_dbg-ui-polish-verify1.mjs +92 -0
  424. package/scripts/_dbg-ui-polish-verify2.mjs +50 -0
  425. package/scripts/_dbg-ui-polish-verify3.mjs +51 -0
  426. package/scripts/_dbg-ui-polish-verify4.mjs +50 -0
  427. package/scripts/_dbg-ui-shot.mjs +26 -0
  428. package/scripts/_dbg-unify-shot.mjs +43 -0
  429. package/scripts/_dbg-uplink-probe.mjs +36 -0
  430. package/scripts/_dbg-wizard-preview-shot.mjs +58 -0
  431. package/scripts/_dbg-wizard-ui-e2e.mjs +93 -0
  432. package/scripts/_dbg-ws-probe.mjs +86 -0
  433. package/scripts/_dbg-ws-shot2.mjs +23 -0
  434. package/scripts/_dbg-wsdot-sanity.mjs +25 -0
  435. package/scripts/_dev-stack.mjs +46 -0
  436. package/scripts/_http-driver-probe.mjs +30 -0
  437. package/scripts/_lib-dcw-line.mjs +24 -0
  438. package/scripts/_mqtt-driver-probe.mjs +30 -0
  439. package/scripts/_newdriver-rest-probe.mjs +100 -0
  440. package/scripts/_node-state-probe.mjs +5 -0
  441. package/scripts/_opcua-driver-probe.mjs +31 -0
  442. package/scripts/_rtu-debug.mjs +41 -0
  443. package/scripts/_rtu-direct.mjs +6 -0
  444. package/scripts/_rtu-driver-probe.mjs +53 -0
  445. package/scripts/_rtu-mini-slave.mjs +63 -0
  446. package/scripts/_townview_style.css +1185 -0
  447. package/scripts/_townview_template.html +1215 -0
  448. package/scripts/_wizard-shots.mjs +90 -0
  449. package/scripts/acceptance-suite.py +207 -0
  450. package/scripts/api-live-e2e.mjs +467 -0
  451. package/scripts/build-anime-models.mjs +339 -0
  452. package/scripts/build-character-models.mjs +175 -0
  453. package/scripts/build-film-devices.mjs +227 -0
  454. package/scripts/build-model-3d.mjs +173 -0
  455. package/scripts/build-player-sheet.mjs +58 -0
  456. package/scripts/build-world-map.mjs +188 -0
  457. package/scripts/build-wuwa-assets.mjs +345 -0
  458. package/scripts/collab-live-test.py +177 -0
  459. package/scripts/debug-mcp-http.ts +64 -0
  460. package/scripts/demo-lead-worker.ts +256 -0
  461. package/scripts/demo-modes.ts +415 -0
  462. package/scripts/demo-omp-channel.ts +135 -0
  463. package/scripts/design-preflight.mjs +223 -0
  464. package/scripts/design-verify-templates.mjs +110 -0
  465. package/scripts/design-verify.mjs +170 -0
  466. package/scripts/dev-guard.mjs +74 -0
  467. package/scripts/dev-modbus-simulator.mjs +55 -0
  468. package/scripts/dev-opcua-simulator.mjs +57 -0
  469. package/scripts/dev-protocol-simulators.mjs +145 -0
  470. package/scripts/dev-window.cmd +6 -0
  471. package/scripts/device-line-restore.mjs +34 -0
  472. package/scripts/diag-lead-status.ts +101 -0
  473. package/scripts/e2e-a2a-steer-live.mjs +193 -0
  474. package/scripts/e2e-agent-channel-task.ts +151 -0
  475. package/scripts/e2e-agent-team.mjs +168 -0
  476. package/scripts/e2e-auth-matrix.mjs +119 -0
  477. package/scripts/e2e-channel-isolation.ts +325 -0
  478. package/scripts/e2e-dual-drive-comm.ts +259 -0
  479. package/scripts/e2e-lead-team-mgmt.ts +217 -0
  480. package/scripts/e2e-memory-persistence.ts +320 -0
  481. package/scripts/e2e-memory-system.ts +332 -0
  482. package/scripts/e2e-omp-modes.ts +274 -0
  483. package/scripts/e2e-omp-realtime.ts +258 -0
  484. package/scripts/e2e-omp-workspace.ts +180 -0
  485. package/scripts/e2e-parallel-execution.mjs +151 -0
  486. package/scripts/e2e-rest-memory.mjs +251 -0
  487. package/scripts/e2e-rest-robustness.mjs +177 -0
  488. package/scripts/e2e-resume-crash.mjs +254 -0
  489. package/scripts/e2e-tab-close.mjs +136 -0
  490. package/scripts/e2e-task-queue.ts +277 -0
  491. package/scripts/e2e-template-isolation.mjs +267 -0
  492. package/scripts/e2e-token-ui.mjs +149 -0
  493. package/scripts/final-soup-run.py +192 -0
  494. package/scripts/final-soup-watch.py +83 -0
  495. package/scripts/home-bootstrap.mjs +117 -0
  496. package/scripts/i18n-codemod.mjs +173 -0
  497. package/scripts/i18n-fix-en.py +28 -0
  498. package/scripts/i18n-fix-en2.py +31 -0
  499. package/scripts/i18n-merge.mjs +67 -0
  500. package/scripts/omp-real-test.py +328 -0
  501. package/scripts/smoke-optimization-verify.ts +72 -0
  502. package/scripts/start.mjs +60 -0
  503. package/scripts/test-a2a-relay.mjs +222 -0
  504. package/scripts/test-a2a-types.ts +296 -0
  505. package/scripts/test-agent-brain.ts +135 -0
  506. package/scripts/test-agent-multi-channel.ts +160 -0
  507. package/scripts/test-agent-runtime.ts +348 -0
  508. package/scripts/test-api-client.ts +108 -0
  509. package/scripts/test-api-suite.mjs +271 -0
  510. package/scripts/test-block-consumption.mjs +194 -0
  511. package/scripts/test-channel-routing.ts +301 -0
  512. package/scripts/test-cmd-render.mjs +218 -0
  513. package/scripts/test-collab-e2e.mjs +136 -0
  514. package/scripts/test-collab-omp.mjs +192 -0
  515. package/scripts/test-dedup-logic.ts +132 -0
  516. package/scripts/test-dual-drive.ts +227 -0
  517. package/scripts/test-e2e-collaboration.ts +262 -0
  518. package/scripts/test-e2e-monitor.ts +192 -0
  519. package/scripts/test-event-history.ts +112 -0
  520. package/scripts/test-event-persistence.mjs +169 -0
  521. package/scripts/test-exec-modes.ts +316 -0
  522. package/scripts/test-fifo-realtime.mjs +193 -0
  523. package/scripts/test-final-e2e.mjs +290 -0
  524. package/scripts/test-full-system.ts +439 -0
  525. package/scripts/test-game-session.ts +160 -0
  526. package/scripts/test-goal-summary.ts +202 -0
  527. package/scripts/test-harness-liveness.ts +109 -0
  528. package/scripts/test-harness-terminal.ts +164 -0
  529. package/scripts/test-header-trail.mjs +95 -0
  530. package/scripts/test-hitl.ts +360 -0
  531. package/scripts/test-koda-restyle.mjs +105 -0
  532. package/scripts/test-lane-history-live.mjs +103 -0
  533. package/scripts/test-lane-raw.ts +67 -0
  534. package/scripts/test-lanes-history-render.mjs +138 -0
  535. package/scripts/test-loop-omp.mjs +154 -0
  536. package/scripts/test-mcp-tools.ts +285 -0
  537. package/scripts/test-mdlite.ts +53 -0
  538. package/scripts/test-memory-dynamic.ts +99 -0
  539. package/scripts/test-memory-maintenance.ts +117 -0
  540. package/scripts/test-memory-vector.ts +154 -0
  541. package/scripts/test-memory.ts +431 -0
  542. package/scripts/test-mock-collab.mjs +226 -0
  543. package/scripts/test-modern-render.mjs +174 -0
  544. package/scripts/test-omp-terminal.mjs +187 -0
  545. package/scripts/test-orchestration.ts +425 -0
  546. package/scripts/test-persistence-lazy.ts +323 -0
  547. package/scripts/test-prompt-system.mjs +181 -0
  548. package/scripts/test-prompts-loader.ts +56 -0
  549. package/scripts/test-protocol.ts +156 -0
  550. package/scripts/test-real-scenario.mjs +290 -0
  551. package/scripts/test-route-reason.mjs +111 -0
  552. package/scripts/test-scheduler-loop.ts +469 -0
  553. package/scripts/test-stream-render.ts +37 -0
  554. package/scripts/test-task-drawer.mjs +204 -0
  555. package/scripts/test-task-engine.ts +433 -0
  556. package/scripts/test-task-invariants.mjs +169 -0
  557. package/scripts/test-terminal-e2e.mjs +264 -0
  558. package/scripts/test-town-3d.mjs +121 -0
  559. package/scripts/test-town-drag.mjs +218 -0
  560. package/scripts/test-town-layout.mjs +200 -0
  561. package/scripts/test-town-page.mjs +136 -0
  562. package/scripts/test-town-scene-math.ts +169 -0
  563. package/scripts/test-town-twin.mjs +121 -0
  564. package/scripts/test-town-upload.mjs +89 -0
  565. package/scripts/test-town-user-flow.mjs +619 -0
  566. package/scripts/test-town-world.mjs +76 -0
  567. package/scripts/test-town-wuwa.mjs +198 -0
  568. package/scripts/test-user-isolation.mjs +193 -0
  569. package/scripts/test-workshop-db.ts +280 -0
  570. package/scripts/test-workshop-entries.ts +370 -0
  571. package/scripts/test-workspace-api.ts +329 -0
  572. package/scripts/test-ws-aep.mjs +187 -0
  573. package/scripts/test-ws-protocol.ts +134 -0
  574. package/scripts/test-ws-stress.mjs +208 -0
  575. package/scripts/town-demo-seed.mjs +75 -0
  576. package/scripts/town-scene-clear.mjs +56 -0
  577. package/scripts/ui-screenshot.mjs +128 -0
  578. package/scripts/verify-a2a-live.mjs +124 -0
  579. package/scripts/verify-exec-modes-report.ts +248 -0
  580. package/scripts/verify-game.mjs +477 -0
  581. package/scripts/verify-lead-mail.ts +188 -0
  582. package/scripts/verify-page-smoke.mjs +87 -0
  583. package/scripts/verify-ws-events.mjs +123 -0
  584. package/scripts/ws-test.mjs +176 -0
  585. package/scripts/ws-test.py +4 -0
  586. package/server/api/health.get.ts +32 -0
  587. package/server/api/mcp/workshop.ts +78 -0
  588. package/server/api/metrics.ts +75 -0
  589. package/server/api/system/config.get.ts +12 -0
  590. package/server/api/system/monitor/terminal/ws.ts +177 -0
  591. package/server/api/system/monitor/terminate.post.ts +36 -0
  592. package/server/api/system/monitor.get.ts +13 -0
  593. package/server/api/system/settings/events.get.ts +28 -0
  594. package/server/api/system/settings/index.get.ts +14 -0
  595. package/server/api/system/settings/index.patch.ts +22 -0
  596. package/server/api/system/settings/reset.post.ts +12 -0
  597. package/server/api/users/[id].delete.ts +11 -0
  598. package/server/api/users/[id].get.ts +11 -0
  599. package/server/api/users/[id].put.ts +14 -0
  600. package/server/api/users/index.get.ts +13 -0
  601. package/server/api/users/index.post.ts +13 -0
  602. package/server/api/users/login.post.ts +11 -0
  603. package/server/api/users/logout.post.ts +9 -0
  604. package/server/api/users/me.get.ts +9 -0
  605. package/server/api/users/register.post.ts +11 -0
  606. package/server/api/users/tokens/[id]/token.get.ts +11 -0
  607. package/server/api/users/tokens/[id].delete.ts +11 -0
  608. package/server/api/users/tokens/[id].patch.ts +14 -0
  609. package/server/api/users/tokens/index.get.ts +9 -0
  610. package/server/api/users/tokens/index.post.ts +13 -0
  611. package/server/api/workshop/[...path].ts +13 -0
  612. package/server/api/workshop/a2a/[agentId]/card/index.get.ts +75 -0
  613. package/server/api/workshop/a2a/[agentId]/rpc/index.post.ts +429 -0
  614. package/server/api/workshop/a2a/send.post.ts +28 -0
  615. package/server/api/workshop/agent-tools/approvals/[id]/decide.post.ts +21 -0
  616. package/server/api/workshop/agent-tools/approvals/index.get.ts +18 -0
  617. package/server/api/workshop/agent-tools/bindings/[id].delete.ts +21 -0
  618. package/server/api/workshop/agent-tools/bindings/[id].patch.ts +14 -0
  619. package/server/api/workshop/agent-tools/bindings/index.get.ts +14 -0
  620. package/server/api/workshop/agent-tools/bindings/index.post.ts +20 -0
  621. package/server/api/workshop/agent-tools/invoke.post.ts +34 -0
  622. package/server/api/workshop/agents/[id].delete.ts +20 -0
  623. package/server/api/workshop/agents/[id].get.ts +19 -0
  624. package/server/api/workshop/agents/[id].patch.ts +30 -0
  625. package/server/api/workshop/agents/index.get.ts +13 -0
  626. package/server/api/workshop/agents/index.post.ts +29 -0
  627. package/server/api/workshop/agents/subscribe.post.ts +21 -0
  628. package/server/api/workshop/approvals/[id]/decide.post.ts +30 -0
  629. package/server/api/workshop/approvals/index.get.ts +22 -0
  630. package/server/api/workshop/assets/character/[id].delete.ts +33 -0
  631. package/server/api/workshop/assets/character/index.get.ts +17 -0
  632. package/server/api/workshop/assets/character/index.post.ts +87 -0
  633. package/server/api/workshop/assets/devices/[id].delete.ts +43 -0
  634. package/server/api/workshop/assets/devices/index.get.ts +103 -0
  635. package/server/api/workshop/assets/devices/index.post.ts +53 -0
  636. package/server/api/workshop/audit.get.ts +43 -0
  637. package/server/api/workshop/caller.ts +141 -0
  638. package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +31 -0
  639. package/server/api/workshop/channel-templates/[id].delete.ts +20 -0
  640. package/server/api/workshop/channel-templates/[id].get.ts +19 -0
  641. package/server/api/workshop/channel-templates/[id].patch.ts +48 -0
  642. package/server/api/workshop/channel-templates/from-channel.post.ts +31 -0
  643. package/server/api/workshop/channel-templates/index.get.ts +13 -0
  644. package/server/api/workshop/channel-templates/index.post.ts +61 -0
  645. package/server/api/workshop/channels/[id]/activate.post.ts +19 -0
  646. package/server/api/workshop/channels/[id]/agents/[agentId]/memories/[memoryId].delete.ts +30 -0
  647. package/server/api/workshop/channels/[id]/agents/[agentId]/memories/index.get.ts +29 -0
  648. package/server/api/workshop/channels/[id]/agents/[agentId]/memories/index.post.ts +48 -0
  649. package/server/api/workshop/channels/[id]/agents/[agentId]/memories/search.post.ts +43 -0
  650. package/server/api/workshop/channels/[id]/agents/[agentId]/model.patch.ts +39 -0
  651. package/server/api/workshop/channels/[id]/agents/[agentId]/position.patch.ts +33 -0
  652. package/server/api/workshop/channels/[id]/agents/[agentId]/range.patch.ts +54 -0
  653. package/server/api/workshop/channels/[id]/agents/[agentId]/stop.post.ts +25 -0
  654. package/server/api/workshop/channels/[id]/agents/[agentId].delete.ts +23 -0
  655. package/server/api/workshop/channels/[id]/agents/[agentId].patch.ts +28 -0
  656. package/server/api/workshop/channels/[id]/agents/index.get.ts +27 -0
  657. package/server/api/workshop/channels/[id]/agents/index.post.ts +61 -0
  658. package/server/api/workshop/channels/[id]/events.get.ts +55 -0
  659. package/server/api/workshop/channels/[id]/index.get.ts +18 -0
  660. package/server/api/workshop/channels/[id]/index.patch.ts +30 -0
  661. package/server/api/workshop/channels/[id]/memories/[memoryId].delete.ts +29 -0
  662. package/server/api/workshop/channels/[id]/memories/index.get.ts +28 -0
  663. package/server/api/workshop/channels/[id]/memories/index.post.ts +42 -0
  664. package/server/api/workshop/channels/[id]/messages/index.get.ts +56 -0
  665. package/server/api/workshop/channels/[id]/messages/index.post.ts +75 -0
  666. package/server/api/workshop/channels/[id]/queue.get.ts +25 -0
  667. package/server/api/workshop/channels/[id]/tasks/index.get.ts +24 -0
  668. package/server/api/workshop/channels/[id]/tasks/index.post.ts +79 -0
  669. package/server/api/workshop/channels/[id]/terminals.get.ts +21 -0
  670. package/server/api/workshop/channels/[id].delete.ts +18 -0
  671. package/server/api/workshop/channels.get.ts +11 -0
  672. package/server/api/workshop/channels.post.ts +48 -0
  673. package/server/api/workshop/daq/[id]/bind.post.ts +19 -0
  674. package/server/api/workshop/daq/[id]/samples.get.ts +22 -0
  675. package/server/api/workshop/daq/[id]/test.post.ts +17 -0
  676. package/server/api/workshop/daq/[id].delete.ts +30 -0
  677. package/server/api/workshop/daq/[id].patch.ts +31 -0
  678. package/server/api/workshop/daq/alarms/[id]/ack.post.ts +15 -0
  679. package/server/api/workshop/daq/alarms.get.ts +16 -0
  680. package/server/api/workshop/daq/controller.post.ts +52 -0
  681. package/server/api/workshop/daq/index.get.ts +40 -0
  682. package/server/api/workshop/daq/index.post.ts +33 -0
  683. package/server/api/workshop/daq/infra/reconnect.post.ts +17 -0
  684. package/server/api/workshop/daq/infra.get.ts +11 -0
  685. package/server/api/workshop/daq/templates/[key].delete.ts +17 -0
  686. package/server/api/workshop/daq/templates/[key].patch.ts +18 -0
  687. package/server/api/workshop/daq/templates/index.post.ts +17 -0
  688. package/server/api/workshop/daq/test-driver.post.ts +23 -0
  689. package/server/api/workshop/dcw/[id]/bind.post.ts +17 -0
  690. package/server/api/workshop/dcw/[id]/param-ledger.get.ts +15 -0
  691. package/server/api/workshop/dcw/[id]/test.post.ts +15 -0
  692. package/server/api/workshop/dcw/[id]/write.post.ts +19 -0
  693. package/server/api/workshop/dcw/[id].delete.ts +30 -0
  694. package/server/api/workshop/dcw/[id].patch.ts +18 -0
  695. package/server/api/workshop/dcw/controller.post.ts +43 -0
  696. package/server/api/workshop/dcw/index.get.ts +25 -0
  697. package/server/api/workshop/dcw/index.post.ts +20 -0
  698. package/server/api/workshop/dcw/journal/index.get.ts +21 -0
  699. package/server/api/workshop/dcw/journal/node/[nodeId]/rollback.post.ts +22 -0
  700. package/server/api/workshop/dcw/line/query.get.ts +31 -0
  701. package/server/api/workshop/dcw/lines/[id]/start.post.ts +35 -0
  702. package/server/api/workshop/dcw/lines/[id]/stop.post.ts +34 -0
  703. package/server/api/workshop/dcw/lines/[id].delete.ts +35 -0
  704. package/server/api/workshop/dcw/lines/[id].patch.ts +15 -0
  705. package/server/api/workshop/dcw/lines/index.get.ts +14 -0
  706. package/server/api/workshop/dcw/lines/index.post.ts +31 -0
  707. package/server/api/workshop/dcw/optimizations/[id]/judge.post.ts +24 -0
  708. package/server/api/workshop/dcw/optimizations/[id]/rollback.post.ts +29 -0
  709. package/server/api/workshop/dcw/optimizations/[id]/series.get.ts +18 -0
  710. package/server/api/workshop/dcw/optimizations/[id].get.ts +17 -0
  711. package/server/api/workshop/dcw/optimizations/index.get.ts +23 -0
  712. package/server/api/workshop/dcw/products/[id].delete.ts +16 -0
  713. package/server/api/workshop/dcw/products/[id].patch.ts +17 -0
  714. package/server/api/workshop/dcw/products/index.post.ts +16 -0
  715. package/server/api/workshop/dcw/recipes/[id]/apply.post.ts +40 -0
  716. package/server/api/workshop/dcw/recipes/[id]/mark-good.post.ts +21 -0
  717. package/server/api/workshop/dcw/recipes/[id]/rollback-good.post.ts +19 -0
  718. package/server/api/workshop/dcw/recipes/[id].delete.ts +14 -0
  719. package/server/api/workshop/dcw/recipes/[id].patch.ts +16 -0
  720. package/server/api/workshop/dcw/recipes/index.get.ts +12 -0
  721. package/server/api/workshop/dcw/recipes/index.post.ts +15 -0
  722. package/server/api/workshop/dcw/runs/[id]/close.post.ts +15 -0
  723. package/server/api/workshop/dcw/runs/[id]/data.get.ts +15 -0
  724. package/server/api/workshop/dcw/runs/[id]/rollback.post.ts +20 -0
  725. package/server/api/workshop/dcw/runs/index.get.ts +11 -0
  726. package/server/api/workshop/dcw/templates/[key].delete.ts +14 -0
  727. package/server/api/workshop/dcw/templates/[key].patch.ts +16 -0
  728. package/server/api/workshop/dcw/templates/index.post.ts +15 -0
  729. package/server/api/workshop/dcw/test-driver.post.ts +16 -0
  730. package/server/api/workshop/device-twins/[id]/control.post.ts +21 -0
  731. package/server/api/workshop/device-twins/[id]/telemetry.post.ts +21 -0
  732. package/server/api/workshop/device-twins/[id].delete.ts +25 -0
  733. package/server/api/workshop/device-twins/[id].patch.ts +29 -0
  734. package/server/api/workshop/device-twins/index.get.ts +16 -0
  735. package/server/api/workshop/device-twins/index.post.ts +32 -0
  736. package/server/api/workshop/fs/dirs.get.ts +40 -0
  737. package/server/api/workshop/mailbox/all.get.ts +19 -0
  738. package/server/api/workshop/mailbox.get.ts +14 -0
  739. package/server/api/workshop/memories/maintenance.post.ts +15 -0
  740. package/server/api/workshop/ops-logs/index.get.ts +30 -0
  741. package/server/api/workshop/ops-logs/index.post.ts +39 -0
  742. package/server/api/workshop/runtime.get.ts +11 -0
  743. package/server/api/workshop/scene/layouts/[channelId].delete.ts +23 -0
  744. package/server/api/workshop/scene/layouts/[channelId].put.ts +31 -0
  745. package/server/api/workshop/scene/layouts.get.ts +13 -0
  746. package/server/api/workshop/tasks/[id]/cancel/index.post.ts +34 -0
  747. package/server/api/workshop/tasks/[id]/complete.post.ts +32 -0
  748. package/server/api/workshop/tasks/[id]/dispatch.post.ts +30 -0
  749. package/server/api/workshop/tasks/[id]/report.post.ts +38 -0
  750. package/server/api/workshop/tasks/[id]/retry.post.ts +33 -0
  751. package/server/api/workshop/tasks/[id].get.ts +32 -0
  752. package/server/api/workshop/tasks.get.ts +13 -0
  753. package/server/api/workshop/teams/[id]/deploy.post.ts +40 -0
  754. package/server/api/workshop/teams/[id]/members/[agentId].delete.ts +19 -0
  755. package/server/api/workshop/teams/[id]/members/index.get.ts +19 -0
  756. package/server/api/workshop/teams/[id]/members/index.post.ts +32 -0
  757. package/server/api/workshop/teams/[id].delete.ts +20 -0
  758. package/server/api/workshop/teams/[id].get.ts +19 -0
  759. package/server/api/workshop/teams/[id].patch.ts +32 -0
  760. package/server/api/workshop/teams/index.get.ts +13 -0
  761. package/server/api/workshop/teams/index.post.ts +27 -0
  762. package/server/api/workshop/users/me.get.ts +23 -0
  763. package/server/api/workshop/users/register.post.ts +33 -0
  764. package/server/api/workshop/workspaces/[id]/channel-templates/[tplId].post.ts +31 -0
  765. package/server/api/workshop/workspaces/[id]/channels/[channelId].delete.ts +15 -0
  766. package/server/api/workshop/workspaces/[id]/channels/[channelId].post.ts +15 -0
  767. package/server/api/workshop/workspaces/[id]/index.delete.ts +14 -0
  768. package/server/api/workshop/workspaces/index.get.ts +11 -0
  769. package/server/api/workshop/workspaces/index.post.ts +17 -0
  770. package/server/api/workshop/ws.ts +694 -0
  771. package/server/data/agent-node-bindings.json +554 -0
  772. package/server/data/daq-templates.json +16 -0
  773. package/server/data/daqs.json +2680 -0
  774. package/server/data/dcw-lines.json +919 -0
  775. package/server/data/dcw-products.json +835 -0
  776. package/server/data/dcw-recipes.json +1650 -0
  777. package/server/data/dcw-rollback.json +9339 -0
  778. package/server/data/dcw-runs.json +4633 -0
  779. package/server/data/dcw-templates.json +26 -0
  780. package/server/data/dcw-writes.json +9770 -0
  781. package/server/data/dcws.json +1736 -0
  782. package/server/data/device-twins.json +133 -0
  783. package/server/data/line-runs.json +152 -0
  784. package/server/data/scene-layouts.json +200 -0
  785. package/server/mcp/workshop-server.ts +510 -0
  786. package/server/middleware/request-log.ts +15 -0
  787. package/server/plugins/backup.ts +85 -0
  788. package/server/plugins/daq.ts +65 -0
  789. package/server/plugins/dev-stability-guard.ts +42 -0
  790. package/server/plugins/security.ts +29 -0
  791. package/server/plugins/system-config.ts +38 -0
  792. package/server/plugins/workshop.ts +145 -0
  793. package/server/repositories/user.repository.ts +391 -0
  794. package/server/schemas/user.schema.ts +67 -0
  795. package/server/services/system-config.ts +356 -0
  796. package/server/services/user.service.ts +186 -0
  797. package/server/services/workshop/agents/adapters/omp-rpc-client.ts +539 -0
  798. package/server/services/workshop/agents/adapters/to-a2a.ts +40 -0
  799. package/server/services/workshop/agents/agent-interface.ts +219 -0
  800. package/server/services/workshop/agents/claude-agent.ts +47 -0
  801. package/server/services/workshop/agents/factory.ts +24 -0
  802. package/server/services/workshop/agents/harness-process.ts +158 -0
  803. package/server/services/workshop/agents/harness-terminal.ts +545 -0
  804. package/server/services/workshop/agents/industrial-context.ts +222 -0
  805. package/server/services/workshop/agents/industrial-tools.ts +362 -0
  806. package/server/services/workshop/agents/mock-agent.ts +396 -0
  807. package/server/services/workshop/agents/node-bindings.repo.ts +165 -0
  808. package/server/services/workshop/agents/omp-agent.ts +1598 -0
  809. package/server/services/workshop/agents/tool-approvals.ts +174 -0
  810. package/server/services/workshop/assets/character-asset.repo.ts +120 -0
  811. package/server/services/workshop/assets/device-twin.repo.ts +236 -0
  812. package/server/services/workshop/daq/alarm-notify.ts +100 -0
  813. package/server/services/workshop/daq/bus/index.ts +46 -0
  814. package/server/services/workshop/daq/bus/inproc.adapter.ts +62 -0
  815. package/server/services/workshop/daq/bus/mqtt.adapter.ts +112 -0
  816. package/server/services/workshop/daq/bus/queue-port.ts +36 -0
  817. package/server/services/workshop/daq/daq-controller.ts +778 -0
  818. package/server/services/workshop/daq/daq-node.repo.ts +96 -0
  819. package/server/services/workshop/daq/daq-node.ts +247 -0
  820. package/server/services/workshop/daq/daq-runtime.ts +168 -0
  821. package/server/services/workshop/daq/daq-templates.ts +157 -0
  822. package/server/services/workshop/daq/drivers.ts +771 -0
  823. package/server/services/workshop/daq/host-bindings.ts +71 -0
  824. package/server/services/workshop/daq/host-ports.ts +64 -0
  825. package/server/services/workshop/daq/infra.ts +202 -0
  826. package/server/services/workshop/daq/storage/index.ts +96 -0
  827. package/server/services/workshop/daq/storage/sqlite.adapter.ts +205 -0
  828. package/server/services/workshop/daq/storage/timescale.adapter.ts +185 -0
  829. package/server/services/workshop/daq/storage/tsdb-port.ts +74 -0
  830. package/server/services/workshop/db/agent.repo.ts +105 -0
  831. package/server/services/workshop/db/channel-agent.repo.ts +119 -0
  832. package/server/services/workshop/db/channel-event.repo.ts +154 -0
  833. package/server/services/workshop/db/channel-template.repo.ts +113 -0
  834. package/server/services/workshop/db/channel.repo.ts +101 -0
  835. package/server/services/workshop/db/database.ts +934 -0
  836. package/server/services/workshop/db/memory.repo.ts +249 -0
  837. package/server/services/workshop/db/message.repo.ts +149 -0
  838. package/server/services/workshop/db/ops.repo.ts +323 -0
  839. package/server/services/workshop/db/schema.sql +143 -0
  840. package/server/services/workshop/db/subscription.repo.ts +62 -0
  841. package/server/services/workshop/db/task.repo.ts +175 -0
  842. package/server/services/workshop/db/team-member.repo.ts +70 -0
  843. package/server/services/workshop/db/team.repo.ts +109 -0
  844. package/server/services/workshop/db/user.repo.ts +100 -0
  845. package/server/services/workshop/dcw/dcw-controller.ts +841 -0
  846. package/server/services/workshop/dcw/dcw-line.repo.ts +86 -0
  847. package/server/services/workshop/dcw/dcw-node.repo.ts +89 -0
  848. package/server/services/workshop/dcw/dcw-node.ts +200 -0
  849. package/server/services/workshop/dcw/dcw-product.repo.ts +95 -0
  850. package/server/services/workshop/dcw/dcw-recipe.repo.ts +349 -0
  851. package/server/services/workshop/dcw/dcw-runtime.ts +82 -0
  852. package/server/services/workshop/dcw/dcw-templates.ts +138 -0
  853. package/server/services/workshop/dcw/drivers.ts +523 -0
  854. package/server/services/workshop/dcw/line-run.ts +101 -0
  855. package/server/services/workshop/dcw/recipe-rollback-manager.ts +702 -0
  856. package/server/services/workshop/dcw/recipe-rollback.repo.ts +197 -0
  857. package/server/services/workshop/logger.ts +58 -0
  858. package/server/services/workshop/ops/ops.ts +78 -0
  859. package/server/services/workshop/prompts/loader.ts +112 -0
  860. package/server/services/workshop/runtime/agent-runtime.ts +698 -0
  861. package/server/services/workshop/runtime/channel-runtime.ts +202 -0
  862. package/server/services/workshop/runtime/embedding-provider.ts +79 -0
  863. package/server/services/workshop/runtime/execution-mode.ts +215 -0
  864. package/server/services/workshop/runtime/mailbox.ts +148 -0
  865. package/server/services/workshop/runtime/manager.ts +2543 -0
  866. package/server/services/workshop/runtime/memory.ts +439 -0
  867. package/server/services/workshop/runtime/monitor.ts +194 -0
  868. package/server/services/workshop/runtime/scheduler-loop.ts +773 -0
  869. package/server/services/workshop/runtime/task-engine.ts +574 -0
  870. package/server/services/workshop/scene/scene-layout.repo.ts +112 -0
  871. package/server/services/workshop/scene-events.ts +63 -0
  872. package/server/services/workshop/types/a2a.ts +61 -0
  873. package/server/services/workshop/types/task.ts +85 -0
  874. package/server/types/user.ts +53 -0
  875. package/server/utils/approval-gate.ts +67 -0
  876. package/server/utils/auth.ts +13 -0
  877. package/server/utils/config.ts +40 -0
  878. package/server/utils/errors.ts +24 -0
  879. package/server/utils/response.ts +49 -0
  880. package/server/utils/validate.ts +19 -0
  881. package/shared/config/engine.d.mts +41 -0
  882. package/shared/config/engine.mjs +291 -0
  883. package/shared/config/home.d.mts +48 -0
  884. package/shared/config/home.mjs +146 -0
  885. package/shared/config/schema.json +30 -0
  886. package/shared/daq-protocol.ts +361 -0
  887. package/shared/dcw-protocol.ts +576 -0
  888. package/shared/terminal-protocol.ts +70 -0
  889. package/shared/town-anim.ts +56 -0
  890. package/shared/town-behavior.ts +136 -0
  891. package/shared/town-protocol.ts +110 -0
  892. package/shared/town-scene-math.ts +283 -0
  893. package/shared/workshop-protocol.ts +199 -0
  894. package/tsconfig.json +10 -0
  895. package/uno.config.ts +37 -0
@@ -0,0 +1,4633 @@
1
+ [
2
+ {
3
+ "id": "rr-77052bf8",
4
+ "recipeId": "rc-8c99f08c",
5
+ "recipeName": "线审计配方",
6
+ "productId": "pd-f7e92f0d",
7
+ "lineId": "ln-4163b163",
8
+ "startedAt": "2026-08-29T14:48:03.323Z",
9
+ "endedAt": "2026-08-29T14:48:07.042Z",
10
+ "results": [
11
+ {
12
+ "templateRef": "dcw-cw-52d5c9ef",
13
+ "nodeId": "dw-5e63b6aa",
14
+ "ok": true,
15
+ "message": "Mock PLC 写入成功:45 → raw 45,回读一致(标定后物理值 45)",
16
+ "value": 45
17
+ }
18
+ ]
19
+ },
20
+ {
21
+ "id": "rr-1cfa407d",
22
+ "recipeId": "rc-2cda129f",
23
+ "recipeName": "作业流审计配方",
24
+ "productId": "pd-783824dc",
25
+ "lineId": "ln-4fbbc6e5",
26
+ "startedAt": "2026-08-29T14:48:41.611Z",
27
+ "endedAt": "2026-08-29T14:48:47.087Z",
28
+ "results": [
29
+ {
30
+ "templateRef": "dcw-temp-sp",
31
+ "nodeId": "dw-c72cc3d8",
32
+ "ok": true,
33
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
34
+ "value": 180
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "id": "rr-3438a315",
40
+ "recipeId": "rc-e346d225",
41
+ "recipeName": "作业流审计配方",
42
+ "productId": "pd-b51d0098",
43
+ "lineId": "ln-0b846303",
44
+ "startedAt": "2026-08-29T14:49:23.297Z",
45
+ "endedAt": "2026-08-29T14:49:28.771Z",
46
+ "results": [
47
+ {
48
+ "templateRef": "dcw-temp-sp",
49
+ "nodeId": "dw-bc6b2e04",
50
+ "ok": true,
51
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
52
+ "value": 180
53
+ }
54
+ ]
55
+ },
56
+ {
57
+ "id": "rr-89fecc12",
58
+ "recipeId": "rc-4e563100",
59
+ "recipeName": "控制终审X线配方",
60
+ "productId": "pd-999336c2",
61
+ "lineId": "ln-b758b74e",
62
+ "startedAt": "2026-08-29T14:59:09.163Z",
63
+ "endedAt": "2026-08-29T14:59:16.232Z",
64
+ "results": [
65
+ {
66
+ "templateRef": "dcw-temp-sp",
67
+ "nodeId": "dw-65e7c7da",
68
+ "ok": true,
69
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
70
+ "value": 180
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "id": "rr-845ec7a7",
76
+ "recipeId": "rc-075136a0",
77
+ "recipeName": "控制终审Y线配方",
78
+ "productId": "pd-6ba2e8da",
79
+ "lineId": "ln-6cd8918a",
80
+ "startedAt": "2026-08-29T14:59:13.576Z",
81
+ "endedAt": "2026-08-29T14:59:18.388Z",
82
+ "results": [
83
+ {
84
+ "templateRef": "dcw-temp-sp",
85
+ "nodeId": "dw-01418312",
86
+ "ok": true,
87
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
88
+ "value": 165
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ "id": "rr-aa12ae5e",
94
+ "recipeId": "rc-246373dd",
95
+ "recipeName": "场景配方A",
96
+ "productId": "pd-e633ba38",
97
+ "lineId": "ln-0ba52df1",
98
+ "startedAt": "2026-08-29T15:02:33.640Z",
99
+ "endedAt": "2026-08-29T15:02:39.216Z",
100
+ "results": [
101
+ {
102
+ "templateRef": "dcw-temp-sp",
103
+ "nodeId": "dw-f4a529b4",
104
+ "ok": true,
105
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
106
+ "value": 180
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "id": "rr-786703d9",
112
+ "recipeId": "rc-4a67b742",
113
+ "recipeName": "场景配方B",
114
+ "productId": "pd-69813458",
115
+ "lineId": "ln-83ff8f7f",
116
+ "startedAt": "2026-08-29T15:02:39.238Z",
117
+ "endedAt": "2026-08-29T15:03:12.440Z",
118
+ "results": [
119
+ {
120
+ "templateRef": "dcw-temp-sp",
121
+ "nodeId": "dw-6501c76b",
122
+ "ok": true,
123
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
124
+ "value": 165
125
+ }
126
+ ]
127
+ },
128
+ {
129
+ "id": "rr-16b92045",
130
+ "recipeId": "rc-d7722fe2",
131
+ "recipeName": "终审配方A",
132
+ "productId": "pd-1f95918f",
133
+ "lineId": "ln-8b9ad64f",
134
+ "startedAt": "2026-08-29T15:03:12.949Z",
135
+ "endedAt": "2026-08-29T15:03:30.421Z",
136
+ "results": [
137
+ {
138
+ "templateRef": "dcw-temp-sp",
139
+ "nodeId": "dw-26fcdd21",
140
+ "ok": true,
141
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
142
+ "value": 182
143
+ }
144
+ ]
145
+ },
146
+ {
147
+ "id": "rr-0c07ae7e",
148
+ "recipeId": "rc-c27cc031",
149
+ "recipeName": "作业流审计配方",
150
+ "productId": "pd-36cd3a1f",
151
+ "lineId": "ln-1cb2b50e",
152
+ "startedAt": "2026-08-29T15:03:30.794Z",
153
+ "endedAt": "2026-08-29T15:03:36.261Z",
154
+ "results": [
155
+ {
156
+ "templateRef": "dcw-temp-sp",
157
+ "nodeId": "dw-eba5d3d2",
158
+ "ok": true,
159
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
160
+ "value": 180
161
+ }
162
+ ]
163
+ },
164
+ {
165
+ "id": "rr-448a5bc3",
166
+ "recipeId": "rc-37951baf",
167
+ "recipeName": "终审配方A",
168
+ "productId": "pd-68638695",
169
+ "lineId": "ln-9c2a9e77",
170
+ "startedAt": "2026-08-29T15:04:06.371Z",
171
+ "endedAt": "2026-08-29T15:04:22.886Z",
172
+ "results": [
173
+ {
174
+ "templateRef": "dcw-temp-sp",
175
+ "nodeId": "dw-1a399fea",
176
+ "ok": true,
177
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
178
+ "value": 182
179
+ }
180
+ ]
181
+ },
182
+ {
183
+ "id": "rr-092df05b",
184
+ "recipeId": "rc-0a65f360",
185
+ "recipeName": "终审配方A",
186
+ "productId": "pd-e0b6b509",
187
+ "lineId": "ln-327bc579",
188
+ "startedAt": "2026-08-29T15:05:28.249Z",
189
+ "endedAt": "2026-08-29T15:05:45.829Z",
190
+ "results": [
191
+ {
192
+ "templateRef": "dcw-temp-sp",
193
+ "nodeId": "dw-1194826a",
194
+ "ok": true,
195
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
196
+ "value": 182
197
+ }
198
+ ]
199
+ },
200
+ {
201
+ "id": "rr-127c6247",
202
+ "recipeId": "rc-28c5aeb8",
203
+ "recipeName": "终审配方A",
204
+ "productId": "pd-54f429af",
205
+ "lineId": "ln-c5145881",
206
+ "startedAt": "2026-08-29T15:05:46.202Z",
207
+ "endedAt": "2026-08-29T15:05:58.337Z",
208
+ "results": [
209
+ {
210
+ "templateRef": "dcw-temp-sp",
211
+ "nodeId": "dw-c5912d51",
212
+ "ok": true,
213
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
214
+ "value": 182
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "id": "rr-a5f58b1a",
220
+ "recipeId": "rc-7511c1bb",
221
+ "recipeName": "终审配方A",
222
+ "productId": "pd-c3003d5a",
223
+ "lineId": "ln-9cdb4b31",
224
+ "startedAt": "2026-08-29T15:06:48.158Z",
225
+ "endedAt": "2026-08-29T15:07:05.830Z",
226
+ "results": [
227
+ {
228
+ "templateRef": "dcw-temp-sp",
229
+ "nodeId": "dw-d3e126ad",
230
+ "ok": true,
231
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
232
+ "value": 182
233
+ }
234
+ ]
235
+ },
236
+ {
237
+ "id": "rr-efb87f12",
238
+ "recipeId": "rc-01f1a233",
239
+ "recipeName": "终审配方A",
240
+ "productId": "pd-b9f76e26",
241
+ "lineId": "ln-c9048eca",
242
+ "startedAt": "2026-08-29T15:12:32.641Z",
243
+ "endedAt": "2026-08-29T15:13:03.332Z",
244
+ "results": [
245
+ {
246
+ "templateRef": "dcw-temp-sp",
247
+ "nodeId": "dw-045d62c2",
248
+ "ok": true,
249
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
250
+ "value": 182
251
+ }
252
+ ]
253
+ },
254
+ {
255
+ "id": "rr-57bca111",
256
+ "recipeId": "rc-ee30a7a0",
257
+ "recipeName": "终审配方A",
258
+ "productId": "pd-99159b45",
259
+ "lineId": "ln-c6713e4d",
260
+ "startedAt": "2026-08-29T15:13:03.707Z",
261
+ "endedAt": "2026-08-29T15:14:14.609Z",
262
+ "results": [
263
+ {
264
+ "templateRef": "dcw-temp-sp",
265
+ "nodeId": "dw-c4da380a",
266
+ "ok": true,
267
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
268
+ "value": 182
269
+ }
270
+ ]
271
+ },
272
+ {
273
+ "id": "rr-c8ccb1f5",
274
+ "recipeId": "rc-3b094c50",
275
+ "recipeName": "终审配方A",
276
+ "productId": "pd-b9a585f7",
277
+ "lineId": "ln-cd6402cc",
278
+ "startedAt": "2026-08-29T15:14:14.982Z",
279
+ "endedAt": "2026-08-29T15:14:32.369Z",
280
+ "results": [
281
+ {
282
+ "templateRef": "dcw-temp-sp",
283
+ "nodeId": "dw-1740a6f5",
284
+ "ok": true,
285
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
286
+ "value": 182
287
+ }
288
+ ]
289
+ },
290
+ {
291
+ "id": "rr-ff58554d",
292
+ "recipeId": "rc-49a15b8f",
293
+ "recipeName": "终审配方A",
294
+ "productId": "pd-82dd3f92",
295
+ "lineId": "ln-1d5c8bb9",
296
+ "startedAt": "2026-08-29T15:15:06.137Z",
297
+ "endedAt": "2026-08-29T15:15:23.589Z",
298
+ "results": [
299
+ {
300
+ "templateRef": "dcw-temp-sp",
301
+ "nodeId": "dw-5dcf6dd1",
302
+ "ok": true,
303
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
304
+ "value": 182
305
+ }
306
+ ]
307
+ },
308
+ {
309
+ "id": "rr-5fc104fc",
310
+ "recipeId": "rc-cc5d88b8",
311
+ "recipeName": "终审配方A",
312
+ "productId": "pd-b724071c",
313
+ "lineId": "ln-02fae279",
314
+ "startedAt": "2026-08-29T15:19:44.444Z",
315
+ "endedAt": "2026-08-29T15:20:10.191Z",
316
+ "results": [
317
+ {
318
+ "templateRef": "dcw-temp-sp",
319
+ "nodeId": "dw-4adafbe2",
320
+ "ok": true,
321
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
322
+ "value": 182
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "id": "rr-0ff47e63",
328
+ "recipeId": "rc-5c7d80c1",
329
+ "recipeName": "终审配方A",
330
+ "productId": "pd-724edf0a",
331
+ "lineId": "ln-4465a175",
332
+ "startedAt": "2026-08-29T15:20:10.564Z",
333
+ "endedAt": "2026-08-29T15:20:21.692Z",
334
+ "results": [
335
+ {
336
+ "templateRef": "dcw-temp-sp",
337
+ "nodeId": "dw-092d4ecc",
338
+ "ok": true,
339
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
340
+ "value": 182
341
+ }
342
+ ]
343
+ },
344
+ {
345
+ "id": "rr-c671b540",
346
+ "recipeId": "rc-4c193976",
347
+ "recipeName": "终审配方A",
348
+ "productId": "pd-3549c4d7",
349
+ "lineId": "ln-5c572e72",
350
+ "startedAt": "2026-08-29T15:20:22.079Z",
351
+ "endedAt": "2026-08-29T15:20:33.289Z",
352
+ "results": [
353
+ {
354
+ "templateRef": "dcw-temp-sp",
355
+ "nodeId": "dw-7f28c6e0",
356
+ "ok": true,
357
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
358
+ "value": 182
359
+ }
360
+ ]
361
+ },
362
+ {
363
+ "id": "rr-630e0e0a",
364
+ "recipeId": "rc-496fd6d2",
365
+ "recipeName": "控制终审X线配方",
366
+ "productId": "pd-c861ba12",
367
+ "lineId": "ln-130a9e91",
368
+ "startedAt": "2026-08-29T15:21:03.299Z",
369
+ "endedAt": "2026-08-29T15:21:09.157Z",
370
+ "results": [
371
+ {
372
+ "templateRef": "dcw-temp-sp",
373
+ "nodeId": "dw-f79e1227",
374
+ "ok": true,
375
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
376
+ "value": 180
377
+ }
378
+ ]
379
+ },
380
+ {
381
+ "id": "rr-6fc5ea4e",
382
+ "recipeId": "rc-37d7456b",
383
+ "recipeName": "控制终审Y线配方",
384
+ "productId": "pd-cd7a0dda",
385
+ "lineId": "ln-b325f58f",
386
+ "startedAt": "2026-08-29T15:21:06.495Z",
387
+ "endedAt": "2026-08-29T15:21:11.275Z",
388
+ "results": [
389
+ {
390
+ "templateRef": "dcw-temp-sp",
391
+ "nodeId": "dw-f046d93e",
392
+ "ok": true,
393
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
394
+ "value": 165
395
+ }
396
+ ]
397
+ },
398
+ {
399
+ "id": "rr-0f764502",
400
+ "recipeId": "rc-65f99185",
401
+ "recipeName": "终审配方B",
402
+ "productId": "pd-a01ef614",
403
+ "lineId": "ln-2d00966b",
404
+ "startedAt": "2026-08-29T15:21:11.617Z",
405
+ "endedAt": "2026-08-29T15:27:37.501Z",
406
+ "results": [
407
+ {
408
+ "templateRef": "dcw-temp-sp",
409
+ "nodeId": "dw-6a9ba8dd",
410
+ "ok": true,
411
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
412
+ "value": 180
413
+ }
414
+ ]
415
+ },
416
+ {
417
+ "id": "rr-54ee2de1",
418
+ "recipeId": "rc-55b78682",
419
+ "recipeName": "全链路审计配方",
420
+ "productId": "pd-c9144627",
421
+ "lineId": "ln-45768e0a",
422
+ "startedAt": "2026-08-29T15:27:37.719Z",
423
+ "endedAt": "2026-08-29T15:32:52.152Z",
424
+ "results": [
425
+ {
426
+ "templateRef": "dcw-temp-sp",
427
+ "nodeId": "dw-2e39b859",
428
+ "ok": true,
429
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
430
+ "value": 180
431
+ }
432
+ ]
433
+ },
434
+ {
435
+ "id": "rr-7da0473b",
436
+ "recipeId": "rc-c90eb0b5",
437
+ "recipeName": "作业流审计配方",
438
+ "productId": "pd-d47cbf23",
439
+ "lineId": "ln-448f4c64",
440
+ "startedAt": "2026-08-29T15:32:52.498Z",
441
+ "endedAt": "2026-08-29T15:32:58.032Z",
442
+ "results": [
443
+ {
444
+ "templateRef": "dcw-temp-sp",
445
+ "nodeId": "dw-11053afd",
446
+ "ok": true,
447
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
448
+ "value": 180
449
+ }
450
+ ]
451
+ },
452
+ {
453
+ "id": "rr-383d11bd",
454
+ "recipeId": "rc-2fe0f2a6",
455
+ "recipeName": "场景配方A",
456
+ "productId": "pd-d8add223",
457
+ "lineId": "ln-a3e53709",
458
+ "startedAt": "2026-08-29T15:32:59.267Z",
459
+ "endedAt": "2026-08-29T15:33:04.868Z",
460
+ "results": [
461
+ {
462
+ "templateRef": "dcw-temp-sp",
463
+ "nodeId": "dw-cb374fcd",
464
+ "ok": true,
465
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
466
+ "value": 180
467
+ }
468
+ ]
469
+ },
470
+ {
471
+ "id": "rr-0787715b",
472
+ "recipeId": "rc-e5024835",
473
+ "recipeName": "场景配方B",
474
+ "productId": "pd-8ebbdf46",
475
+ "lineId": "ln-dcca8154",
476
+ "startedAt": "2026-08-29T15:33:04.884Z",
477
+ "endedAt": "2026-08-29T15:33:34.026Z",
478
+ "results": [
479
+ {
480
+ "templateRef": "dcw-temp-sp",
481
+ "nodeId": "dw-125084b8",
482
+ "ok": true,
483
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
484
+ "value": 165
485
+ }
486
+ ]
487
+ },
488
+ {
489
+ "id": "rr-35146ce1",
490
+ "recipeId": "rc-b42f0f0c",
491
+ "recipeName": "线审计配方",
492
+ "productId": "pd-ee15f987",
493
+ "lineId": "ln-81cc398c",
494
+ "startedAt": "2026-08-29T15:33:34.633Z",
495
+ "endedAt": "2026-08-29T15:33:38.319Z",
496
+ "results": [
497
+ {
498
+ "templateRef": "dcw-cw-7c75f304",
499
+ "nodeId": "dw-d75a966f",
500
+ "ok": true,
501
+ "message": "Mock PLC 写入成功:45 → raw 45,回读一致(标定后物理值 45)",
502
+ "value": 45
503
+ }
504
+ ]
505
+ },
506
+ {
507
+ "id": "rr-47c5ca83",
508
+ "recipeId": "rc-0aa8915e",
509
+ "recipeName": "全链路审计配方",
510
+ "productId": "pd-23bd7dc9",
511
+ "lineId": "ln-5c1c17b7",
512
+ "startedAt": "2026-08-29T15:36:22.883Z",
513
+ "endedAt": "2026-08-29T15:41:37.135Z",
514
+ "results": [
515
+ {
516
+ "templateRef": "dcw-temp-sp",
517
+ "nodeId": "dw-7dd84f12",
518
+ "ok": true,
519
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
520
+ "value": 180
521
+ }
522
+ ]
523
+ },
524
+ {
525
+ "id": "rr-d70d5ccc",
526
+ "recipeId": "rc-003ec3b5",
527
+ "recipeName": "作业流审计配方",
528
+ "productId": "pd-b14c6b99",
529
+ "lineId": "ln-03cdef3c",
530
+ "startedAt": "2026-08-29T16:03:19.171Z",
531
+ "endedAt": "2026-08-29T16:03:37.808Z",
532
+ "results": [
533
+ {
534
+ "templateRef": "dcw-temp-sp",
535
+ "nodeId": "dw-fc262b2c",
536
+ "ok": true,
537
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
538
+ "value": 180
539
+ }
540
+ ]
541
+ },
542
+ {
543
+ "id": "rr-058abaef",
544
+ "recipeId": "rc-fa605f6c",
545
+ "recipeName": "全链路审计配方",
546
+ "productId": "pd-d2d03625",
547
+ "lineId": "ln-03b21339",
548
+ "startedAt": "2026-08-29T16:03:38.934Z",
549
+ "endedAt": "2026-08-29T16:08:20.849Z",
550
+ "results": [
551
+ {
552
+ "templateRef": "dcw-temp-sp",
553
+ "nodeId": "dw-24317137",
554
+ "ok": true,
555
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
556
+ "value": 180
557
+ }
558
+ ]
559
+ },
560
+ {
561
+ "id": "rr-a04747cf",
562
+ "recipeId": "rc-aed7123d",
563
+ "recipeName": "控制终审X线配方",
564
+ "productId": "pd-08c62fdd",
565
+ "lineId": "ln-4828a3e2",
566
+ "startedAt": "2026-08-29T16:08:21.217Z",
567
+ "endedAt": "2026-08-29T16:08:27.048Z",
568
+ "results": [
569
+ {
570
+ "templateRef": "dcw-temp-sp",
571
+ "nodeId": "dw-fbfe7529",
572
+ "ok": true,
573
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
574
+ "value": 180
575
+ }
576
+ ]
577
+ },
578
+ {
579
+ "id": "rr-c7e02573",
580
+ "recipeId": "rc-44b9babc",
581
+ "recipeName": "控制终审Y线配方",
582
+ "productId": "pd-6fde2893",
583
+ "lineId": "ln-74355b6a",
584
+ "startedAt": "2026-08-29T16:08:24.428Z",
585
+ "endedAt": "2026-08-29T16:08:29.193Z",
586
+ "results": [
587
+ {
588
+ "templateRef": "dcw-temp-sp",
589
+ "nodeId": "dw-4601da7f",
590
+ "ok": true,
591
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
592
+ "value": 165
593
+ }
594
+ ]
595
+ },
596
+ {
597
+ "id": "rr-666c2aab",
598
+ "recipeId": "rc-53721542",
599
+ "recipeName": "场景配方A",
600
+ "productId": "pd-b2d23c22",
601
+ "lineId": "ln-69a895b2",
602
+ "startedAt": "2026-08-29T16:08:30.266Z",
603
+ "endedAt": "2026-08-29T16:08:35.845Z",
604
+ "results": [
605
+ {
606
+ "templateRef": "dcw-temp-sp",
607
+ "nodeId": "dw-60d740d8",
608
+ "ok": true,
609
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
610
+ "value": 180
611
+ }
612
+ ]
613
+ },
614
+ {
615
+ "id": "rr-f2faa046",
616
+ "recipeId": "rc-9cc00569",
617
+ "recipeName": "场景配方B",
618
+ "productId": "pd-f34f8218",
619
+ "lineId": "ln-3c2ca197",
620
+ "startedAt": "2026-08-29T16:08:35.867Z",
621
+ "endedAt": "2026-08-29T16:09:16.679Z",
622
+ "results": [
623
+ {
624
+ "templateRef": "dcw-temp-sp",
625
+ "nodeId": "dw-e902c7a5",
626
+ "ok": true,
627
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
628
+ "value": 165
629
+ }
630
+ ]
631
+ },
632
+ {
633
+ "id": "rr-8a7ecc59",
634
+ "recipeId": "rc-138c4468",
635
+ "recipeName": "线审计配方",
636
+ "productId": "pd-551d88f2",
637
+ "lineId": "ln-4f8eccd2",
638
+ "startedAt": "2026-08-29T16:09:17.575Z",
639
+ "endedAt": "2026-08-29T16:09:21.284Z",
640
+ "results": [
641
+ {
642
+ "templateRef": "dcw-cw-f281321a",
643
+ "nodeId": "dw-509c4066",
644
+ "ok": true,
645
+ "message": "Mock PLC 写入成功:45 → raw 45,回读一致(标定后物理值 45)",
646
+ "value": 45
647
+ }
648
+ ]
649
+ },
650
+ {
651
+ "id": "rr-8cffc414",
652
+ "recipeId": "rc-c1d113c4",
653
+ "recipeName": "作业流审计配方",
654
+ "productId": "pd-b4b1eb6c",
655
+ "lineId": "ln-3bccf4e5",
656
+ "startedAt": "2026-08-29T16:15:54.437Z",
657
+ "endedAt": "2026-08-29T16:16:02.330Z",
658
+ "results": [
659
+ {
660
+ "templateRef": "dcw-temp-sp",
661
+ "nodeId": "dw-a37ae7c2",
662
+ "ok": true,
663
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
664
+ "value": 180
665
+ }
666
+ ]
667
+ },
668
+ {
669
+ "id": "rr-167b1f42",
670
+ "recipeId": "rc-128f7d9a",
671
+ "recipeName": "全链路审计配方",
672
+ "productId": "pd-32015edb",
673
+ "lineId": "ln-7779c12c",
674
+ "startedAt": "2026-08-29T16:16:03.508Z",
675
+ "endedAt": "2026-08-29T16:21:19.926Z",
676
+ "results": [
677
+ {
678
+ "templateRef": "dcw-temp-sp",
679
+ "nodeId": "dw-50bd15d4",
680
+ "ok": true,
681
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
682
+ "value": 180
683
+ }
684
+ ]
685
+ },
686
+ {
687
+ "id": "rr-541430eb",
688
+ "recipeId": "rc-b395b6e5",
689
+ "recipeName": "控制终审X线配方",
690
+ "productId": "pd-13204693",
691
+ "lineId": "ln-813754b2",
692
+ "startedAt": "2026-08-29T16:21:20.333Z",
693
+ "endedAt": "2026-08-29T16:21:26.224Z",
694
+ "results": [
695
+ {
696
+ "templateRef": "dcw-temp-sp",
697
+ "nodeId": "dw-56a43c29",
698
+ "ok": true,
699
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
700
+ "value": 180
701
+ }
702
+ ]
703
+ },
704
+ {
705
+ "id": "rr-11ffc085",
706
+ "recipeId": "rc-b597df03",
707
+ "recipeName": "控制终审Y线配方",
708
+ "productId": "pd-19be1660",
709
+ "lineId": "ln-113e6e62",
710
+ "startedAt": "2026-08-29T16:21:23.584Z",
711
+ "endedAt": "2026-08-29T16:21:28.359Z",
712
+ "results": [
713
+ {
714
+ "templateRef": "dcw-temp-sp",
715
+ "nodeId": "dw-add184b0",
716
+ "ok": true,
717
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
718
+ "value": 165
719
+ }
720
+ ]
721
+ },
722
+ {
723
+ "id": "rr-e81f2dca",
724
+ "recipeId": "rc-9af87cfe",
725
+ "recipeName": "场景配方A",
726
+ "productId": "pd-a2516192",
727
+ "lineId": "ln-71004e4d",
728
+ "startedAt": "2026-08-29T16:21:29.385Z",
729
+ "endedAt": "2026-08-29T16:21:34.912Z",
730
+ "results": [
731
+ {
732
+ "templateRef": "dcw-temp-sp",
733
+ "nodeId": "dw-d2da3486",
734
+ "ok": true,
735
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
736
+ "value": 180
737
+ }
738
+ ]
739
+ },
740
+ {
741
+ "id": "rr-d43b00c4",
742
+ "recipeId": "rc-63f54260",
743
+ "recipeName": "场景配方B",
744
+ "productId": "pd-5a5449fb",
745
+ "lineId": "ln-88914fba",
746
+ "startedAt": "2026-08-29T16:21:34.938Z",
747
+ "endedAt": "2026-08-29T16:22:07.114Z",
748
+ "results": [
749
+ {
750
+ "templateRef": "dcw-temp-sp",
751
+ "nodeId": "dw-0384294a",
752
+ "ok": true,
753
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
754
+ "value": 165
755
+ }
756
+ ]
757
+ },
758
+ {
759
+ "id": "rr-684605d4",
760
+ "recipeId": "rc-a9bd3a98",
761
+ "recipeName": "全链路审计配方",
762
+ "productId": "pd-1a9a1987",
763
+ "lineId": "ln-1152d124",
764
+ "startedAt": "2026-08-29T16:25:27.589Z",
765
+ "endedAt": "2026-08-29T16:28:55.545Z",
766
+ "results": [
767
+ {
768
+ "templateRef": "dcw-temp-sp",
769
+ "nodeId": "dw-c80703eb",
770
+ "ok": true,
771
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
772
+ "value": 180
773
+ }
774
+ ]
775
+ },
776
+ {
777
+ "id": "rr-79212e4b",
778
+ "recipeId": "rc-551d35e7",
779
+ "recipeName": "探针配方Q5",
780
+ "productId": "pd-89dfe680",
781
+ "lineId": "ln-72e04d16",
782
+ "startedAt": "2026-08-29T16:50:51.967Z",
783
+ "endedAt": "2026-08-29T16:50:55.733Z",
784
+ "results": [
785
+ {
786
+ "templateRef": "dcw-temp-sp",
787
+ "nodeId": "dw-e2705cf9",
788
+ "ok": true,
789
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
790
+ "value": 180
791
+ }
792
+ ]
793
+ },
794
+ {
795
+ "id": "rr-861009cf",
796
+ "recipeId": "rc-2a89b66b",
797
+ "recipeName": "探针配方Q5",
798
+ "productId": "pd-b4426cd8",
799
+ "lineId": "ln-c50e0ca4",
800
+ "startedAt": "2026-08-29T16:54:04.607Z",
801
+ "endedAt": "2026-08-29T16:54:08.386Z",
802
+ "results": [
803
+ {
804
+ "templateRef": "dcw-temp-sp",
805
+ "nodeId": "dw-1601267e",
806
+ "ok": true,
807
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
808
+ "value": 180
809
+ }
810
+ ]
811
+ },
812
+ {
813
+ "id": "rr-69970cb3",
814
+ "recipeId": "rc-b3d4e280",
815
+ "recipeName": "探针配方Q5",
816
+ "productId": "pd-54132aba",
817
+ "lineId": "ln-06f06656",
818
+ "startedAt": "2026-08-29T16:55:05.851Z",
819
+ "endedAt": null,
820
+ "results": [
821
+ {
822
+ "templateRef": "dcw-temp-sp",
823
+ "nodeId": "dw-27b4375a",
824
+ "ok": true,
825
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
826
+ "value": 180
827
+ }
828
+ ]
829
+ },
830
+ {
831
+ "id": "rr-f9620cd7",
832
+ "recipeId": "rc-d04a7e04",
833
+ "recipeName": "探针配方Q5",
834
+ "productId": "pd-5f4ba882",
835
+ "lineId": "ln-73c3b1e4",
836
+ "startedAt": "2026-08-30T01:49:02.645Z",
837
+ "endedAt": "2026-08-30T01:57:02.510Z",
838
+ "results": [
839
+ {
840
+ "templateRef": "dcw-temp-sp",
841
+ "nodeId": "dw-f0769f22",
842
+ "ok": true,
843
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
844
+ "value": 180
845
+ }
846
+ ]
847
+ },
848
+ {
849
+ "id": "rr-2339e74a",
850
+ "recipeId": "rc-0c5201dd",
851
+ "recipeName": "工具审计配方",
852
+ "productId": "pd-39f76bc4",
853
+ "lineId": "ln-c8f08cbd",
854
+ "startedAt": "2026-08-30T01:57:03.037Z",
855
+ "endedAt": "2026-08-30T01:57:21.695Z",
856
+ "results": [
857
+ {
858
+ "templateRef": "dcw-temp-sp",
859
+ "nodeId": "dw-2ed2e19a",
860
+ "ok": true,
861
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
862
+ "value": 180
863
+ }
864
+ ]
865
+ },
866
+ {
867
+ "id": "rr-06f366cf",
868
+ "recipeId": "rc-84cbf4ae",
869
+ "recipeName": "控制终审X线配方",
870
+ "productId": "pd-6ab53e1d",
871
+ "lineId": "ln-38a7c26b",
872
+ "startedAt": "2026-08-30T01:57:22.043Z",
873
+ "endedAt": "2026-08-30T01:57:27.855Z",
874
+ "results": [
875
+ {
876
+ "templateRef": "dcw-temp-sp",
877
+ "nodeId": "dw-a11c1063",
878
+ "ok": true,
879
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
880
+ "value": 180
881
+ }
882
+ ]
883
+ },
884
+ {
885
+ "id": "rr-0662ccf4",
886
+ "recipeId": "rc-a53fbadc",
887
+ "recipeName": "控制终审Y线配方",
888
+ "productId": "pd-244c32c7",
889
+ "lineId": "ln-897079d9",
890
+ "startedAt": "2026-08-30T01:57:25.226Z",
891
+ "endedAt": "2026-08-30T01:57:30.009Z",
892
+ "results": [
893
+ {
894
+ "templateRef": "dcw-temp-sp",
895
+ "nodeId": "dw-5719899b",
896
+ "ok": true,
897
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
898
+ "value": 165
899
+ }
900
+ ]
901
+ },
902
+ {
903
+ "id": "rr-2c7c87ad",
904
+ "recipeId": "rc-d9bd7a3c",
905
+ "recipeName": "终审配方B",
906
+ "productId": "pd-a868e666",
907
+ "lineId": "ln-42378318",
908
+ "startedAt": "2026-08-30T01:57:30.363Z",
909
+ "endedAt": "2026-08-30T02:02:31.372Z",
910
+ "results": [
911
+ {
912
+ "templateRef": "dcw-temp-sp",
913
+ "nodeId": "dw-ff58ea65",
914
+ "ok": true,
915
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
916
+ "value": 180
917
+ }
918
+ ]
919
+ },
920
+ {
921
+ "id": "rr-3adc1ebd",
922
+ "recipeId": "rc-e35aa723",
923
+ "recipeName": "全链路审计配方",
924
+ "productId": "pd-abf2ce75",
925
+ "lineId": "ln-342ebb35",
926
+ "startedAt": "2026-08-30T02:02:31.578Z",
927
+ "endedAt": "2026-08-30T02:05:37.740Z",
928
+ "results": [
929
+ {
930
+ "templateRef": "dcw-temp-sp",
931
+ "nodeId": "dw-f5fb94ca",
932
+ "ok": true,
933
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
934
+ "value": 180
935
+ }
936
+ ]
937
+ },
938
+ {
939
+ "id": "rr-842bf8f2",
940
+ "recipeId": "rc-441a308a",
941
+ "recipeName": "工具审计配方",
942
+ "productId": "pd-6d5b56d9",
943
+ "lineId": "ln-2d9ddcdd",
944
+ "startedAt": "2026-08-30T02:07:36.105Z",
945
+ "endedAt": "2026-08-30T02:07:49.656Z",
946
+ "results": [
947
+ {
948
+ "templateRef": "dcw-temp-sp",
949
+ "nodeId": "dw-33200617",
950
+ "ok": true,
951
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
952
+ "value": 180
953
+ }
954
+ ]
955
+ },
956
+ {
957
+ "id": "rr-7bd50f54",
958
+ "recipeId": "rc-c1cc9555",
959
+ "recipeName": "探针配方Q5",
960
+ "productId": "pd-edf2cbf0",
961
+ "lineId": "ln-a95f0e22",
962
+ "startedAt": "2026-08-30T02:07:51.038Z",
963
+ "endedAt": "2026-08-30T02:14:10.156Z",
964
+ "results": [
965
+ {
966
+ "templateRef": "dcw-temp-sp",
967
+ "nodeId": "dw-3cd5c7b6",
968
+ "ok": true,
969
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
970
+ "value": 180
971
+ }
972
+ ]
973
+ },
974
+ {
975
+ "id": "rr-d486ce72",
976
+ "recipeId": "rc-0a9abcf7",
977
+ "recipeName": "探针配方Q5",
978
+ "productId": "pd-dab719d8",
979
+ "lineId": "ln-42c6d982",
980
+ "startedAt": "2026-08-30T02:15:11.404Z",
981
+ "endedAt": "2026-08-30T02:23:06.752Z",
982
+ "results": [
983
+ {
984
+ "templateRef": "dcw-temp-sp",
985
+ "nodeId": "dw-7879db6b",
986
+ "ok": true,
987
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
988
+ "value": 180
989
+ }
990
+ ]
991
+ },
992
+ {
993
+ "id": "rr-a7f2b569",
994
+ "recipeId": "rc-4bc5e73d",
995
+ "recipeName": "探针配方Q5",
996
+ "productId": "pd-ec8220db",
997
+ "lineId": "ln-0958d4da",
998
+ "startedAt": "2026-08-30T02:29:09.532Z",
999
+ "endedAt": "2026-08-30T02:35:36.229Z",
1000
+ "results": [
1001
+ {
1002
+ "templateRef": "dcw-temp-sp",
1003
+ "nodeId": "dw-f58fda28",
1004
+ "ok": true,
1005
+ "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
1006
+ "value": 180
1007
+ }
1008
+ ]
1009
+ },
1010
+ {
1011
+ "id": "rr-aaf8e2c2",
1012
+ "recipeId": "rc-540ea9c3",
1013
+ "recipeName": "终审配方A",
1014
+ "productId": "pd-641f7dee",
1015
+ "lineId": "ln-eb53bc4d",
1016
+ "startedAt": "2026-08-30T07:41:33.834Z",
1017
+ "endedAt": "2026-08-30T07:41:54.080Z",
1018
+ "results": [
1019
+ {
1020
+ "templateRef": "dcw-temp-sp",
1021
+ "nodeId": "dw-b361c30f",
1022
+ "ok": true,
1023
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
1024
+ "value": 182
1025
+ }
1026
+ ]
1027
+ },
1028
+ {
1029
+ "id": "rr-adf11ad3",
1030
+ "recipeId": "rc-db98ac7f",
1031
+ "recipeName": "控制终审X线配方",
1032
+ "productId": "pd-3d886f32",
1033
+ "lineId": "ln-9cc67fe6",
1034
+ "startedAt": "2026-08-30T07:41:54.376Z",
1035
+ "endedAt": "2026-08-30T07:42:00.234Z",
1036
+ "results": [
1037
+ {
1038
+ "templateRef": "dcw-temp-sp",
1039
+ "nodeId": "dw-058c5b13",
1040
+ "ok": true,
1041
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1042
+ "value": 180
1043
+ }
1044
+ ]
1045
+ },
1046
+ {
1047
+ "id": "rr-4c9920e7",
1048
+ "recipeId": "rc-23cbfa6b",
1049
+ "recipeName": "控制终审Y线配方",
1050
+ "productId": "pd-0a3b1a6b",
1051
+ "lineId": "ln-ee288c10",
1052
+ "startedAt": "2026-08-30T07:41:57.565Z",
1053
+ "endedAt": "2026-08-30T07:42:02.385Z",
1054
+ "results": [
1055
+ {
1056
+ "templateRef": "dcw-temp-sp",
1057
+ "nodeId": "dw-6ae89624",
1058
+ "ok": true,
1059
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
1060
+ "value": 165
1061
+ }
1062
+ ]
1063
+ },
1064
+ {
1065
+ "id": "rr-a679fe71",
1066
+ "recipeId": "rc-798819f9",
1067
+ "recipeName": "工具审计配方",
1068
+ "productId": "pd-68656e38",
1069
+ "lineId": "ln-915a4031",
1070
+ "startedAt": "2026-08-30T07:42:02.881Z",
1071
+ "endedAt": "2026-08-30T07:42:16.498Z",
1072
+ "results": [
1073
+ {
1074
+ "templateRef": "dcw-temp-sp",
1075
+ "nodeId": "dw-761e7543",
1076
+ "ok": true,
1077
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1078
+ "value": 180
1079
+ }
1080
+ ]
1081
+ },
1082
+ {
1083
+ "id": "rr-cabc4b8e",
1084
+ "recipeId": "rc-12b6fe3a",
1085
+ "recipeName": "作业流审计配方",
1086
+ "productId": "pd-5176e0c0",
1087
+ "lineId": "ln-ef8c8109",
1088
+ "startedAt": "2026-08-30T07:42:16.919Z",
1089
+ "endedAt": "2026-08-30T07:42:22.447Z",
1090
+ "results": [
1091
+ {
1092
+ "templateRef": "dcw-temp-sp",
1093
+ "nodeId": "dw-9e0a641c",
1094
+ "ok": true,
1095
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1096
+ "value": 180
1097
+ }
1098
+ ]
1099
+ },
1100
+ {
1101
+ "id": "rr-977bee11",
1102
+ "recipeId": "rc-0282083f",
1103
+ "recipeName": "加固探针配方",
1104
+ "productId": "pd-7daabef6",
1105
+ "lineId": "ln-4d6cbd50",
1106
+ "startedAt": "2026-08-30T08:34:13.832Z",
1107
+ "endedAt": "2026-08-30T08:34:17.460Z",
1108
+ "results": [
1109
+ {
1110
+ "templateRef": "dcw-temp-sp",
1111
+ "nodeId": "dw-6e4b3069",
1112
+ "ok": true,
1113
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1114
+ "value": 180
1115
+ }
1116
+ ]
1117
+ },
1118
+ {
1119
+ "id": "rr-45a509d9",
1120
+ "recipeId": "rc-5e36acb3",
1121
+ "recipeName": "加固探针配方",
1122
+ "productId": "pd-fb896b33",
1123
+ "lineId": "ln-0f8ba5c7",
1124
+ "startedAt": "2026-08-30T08:34:30.046Z",
1125
+ "endedAt": "2026-08-30T08:34:33.681Z",
1126
+ "results": [
1127
+ {
1128
+ "templateRef": "dcw-temp-sp",
1129
+ "nodeId": "dw-8dcb94fe",
1130
+ "ok": true,
1131
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1132
+ "value": 180
1133
+ }
1134
+ ]
1135
+ },
1136
+ {
1137
+ "id": "rr-17257f9d",
1138
+ "recipeId": "rc-c18c9c53",
1139
+ "recipeName": "控制终审X线配方",
1140
+ "productId": "pd-f2b61054",
1141
+ "lineId": "ln-a7022cdc",
1142
+ "startedAt": "2026-08-30T08:34:34.140Z",
1143
+ "endedAt": "2026-08-30T08:34:40.000Z",
1144
+ "results": [
1145
+ {
1146
+ "templateRef": "dcw-temp-sp",
1147
+ "nodeId": "dw-61c0dd97",
1148
+ "ok": true,
1149
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1150
+ "value": 180
1151
+ }
1152
+ ]
1153
+ },
1154
+ {
1155
+ "id": "rr-29c4f794",
1156
+ "recipeId": "rc-2058ac67",
1157
+ "recipeName": "控制终审Y线配方",
1158
+ "productId": "pd-be50ddb0",
1159
+ "lineId": "ln-ade526fa",
1160
+ "startedAt": "2026-08-30T08:34:37.334Z",
1161
+ "endedAt": "2026-08-30T08:34:42.151Z",
1162
+ "results": [
1163
+ {
1164
+ "templateRef": "dcw-temp-sp",
1165
+ "nodeId": "dw-c316eb9e",
1166
+ "ok": true,
1167
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
1168
+ "value": 165
1169
+ }
1170
+ ]
1171
+ },
1172
+ {
1173
+ "id": "rr-812a2910",
1174
+ "recipeId": "rc-eb5c4fb3",
1175
+ "recipeName": "工具审计配方",
1176
+ "productId": "pd-eaf2efa6",
1177
+ "lineId": "ln-00056e5b",
1178
+ "startedAt": "2026-08-30T08:34:42.668Z",
1179
+ "endedAt": "2026-08-30T08:35:01.580Z",
1180
+ "results": [
1181
+ {
1182
+ "templateRef": "dcw-temp-sp",
1183
+ "nodeId": "dw-66644029",
1184
+ "ok": true,
1185
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1186
+ "value": 180
1187
+ }
1188
+ ]
1189
+ },
1190
+ {
1191
+ "id": "rr-26256a6d",
1192
+ "recipeId": "rc-ae2b967e",
1193
+ "recipeName": "作业流审计配方",
1194
+ "productId": "pd-640d8816",
1195
+ "lineId": "ln-883acb63",
1196
+ "startedAt": "2026-08-30T08:35:01.984Z",
1197
+ "endedAt": "2026-08-30T08:35:07.489Z",
1198
+ "results": [
1199
+ {
1200
+ "templateRef": "dcw-temp-sp",
1201
+ "nodeId": "dw-7bc34a4b",
1202
+ "ok": true,
1203
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1204
+ "value": 180
1205
+ }
1206
+ ]
1207
+ },
1208
+ {
1209
+ "id": "rr-58ea12f1",
1210
+ "recipeId": "rc-3511ecbb",
1211
+ "recipeName": "终审配方A",
1212
+ "productId": "pd-f9e3a072",
1213
+ "lineId": "ln-d63c4d1c",
1214
+ "startedAt": "2026-08-30T08:35:08.590Z",
1215
+ "endedAt": "2026-08-30T08:35:20.364Z",
1216
+ "results": [
1217
+ {
1218
+ "templateRef": "dcw-temp-sp",
1219
+ "nodeId": "dw-52a8b97e",
1220
+ "ok": true,
1221
+ "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
1222
+ "value": 182
1223
+ }
1224
+ ]
1225
+ },
1226
+ {
1227
+ "id": "rr-3f947bf4",
1228
+ "recipeId": "rc-5611e28b",
1229
+ "recipeName": "场景配方A",
1230
+ "productId": "pd-5d5279f7",
1231
+ "lineId": "ln-595b7e1d",
1232
+ "startedAt": "2026-08-30T08:35:20.859Z",
1233
+ "endedAt": "2026-08-30T08:35:26.409Z",
1234
+ "results": [
1235
+ {
1236
+ "templateRef": "dcw-temp-sp",
1237
+ "nodeId": "dw-a9759e18",
1238
+ "ok": true,
1239
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1240
+ "value": 180
1241
+ }
1242
+ ]
1243
+ },
1244
+ {
1245
+ "id": "rr-b4ee801d",
1246
+ "recipeId": "rc-9fbc9641",
1247
+ "recipeName": "场景配方B",
1248
+ "productId": "pd-25bcd330",
1249
+ "lineId": "ln-e25ce0a0",
1250
+ "startedAt": "2026-08-30T08:35:26.426Z",
1251
+ "endedAt": "2026-08-30T08:35:56.188Z",
1252
+ "results": [
1253
+ {
1254
+ "templateRef": "dcw-temp-sp",
1255
+ "nodeId": "dw-6b47687f",
1256
+ "ok": true,
1257
+ "message": "Mock PLC 写入成功:165 → raw 165,回读一致(标定后物理值 165)",
1258
+ "value": 165
1259
+ }
1260
+ ]
1261
+ },
1262
+ {
1263
+ "id": "rr-f8cffd0d",
1264
+ "recipeId": "rc-c113b99e",
1265
+ "recipeName": "标定审计配方",
1266
+ "productId": "pd-239baef2",
1267
+ "lineId": "ln-adef5b03",
1268
+ "startedAt": "2026-08-30T08:40:09.463Z",
1269
+ "endedAt": "2026-08-30T08:40:14.304Z",
1270
+ "results": [
1271
+ {
1272
+ "templateRef": "dcw-temp-sp",
1273
+ "nodeId": "dw-0b55ae65",
1274
+ "ok": true,
1275
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1276
+ "value": 180
1277
+ }
1278
+ ]
1279
+ },
1280
+ {
1281
+ "id": "rr-cf0a59cc",
1282
+ "recipeId": "rc-a30734b7",
1283
+ "recipeName": "审计配方-光学膜",
1284
+ "productId": "pd-f66f6351",
1285
+ "lineId": "ln-552aba9c",
1286
+ "startedAt": "2026-08-30T08:41:13.047Z",
1287
+ "endedAt": "2026-08-30T08:41:16.825Z",
1288
+ "results": [
1289
+ {
1290
+ "templateRef": "dcw-temp-sp",
1291
+ "nodeId": "dw-34200a01",
1292
+ "ok": true,
1293
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
1294
+ "value": 185
1295
+ },
1296
+ {
1297
+ "templateRef": "dcw-cw-76f80ea3",
1298
+ "nodeId": null,
1299
+ "ok": false,
1300
+ "message": "目标控制节点不存在(dw-c07840d5),参数未下发",
1301
+ "value": 320
1302
+ }
1303
+ ]
1304
+ },
1305
+ {
1306
+ "id": "rr-d3d0be87",
1307
+ "recipeId": "rc-7fc53407",
1308
+ "recipeName": "审计配方-B",
1309
+ "productId": "pd-f66f6351",
1310
+ "lineId": "ln-552aba9c",
1311
+ "startedAt": "2026-08-30T08:41:14.097Z",
1312
+ "endedAt": "2026-08-30T08:41:16.904Z",
1313
+ "results": [
1314
+ {
1315
+ "templateRef": "dcw-temp-sp",
1316
+ "nodeId": "dw-34200a01",
1317
+ "ok": true,
1318
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
1319
+ "value": 160
1320
+ }
1321
+ ]
1322
+ },
1323
+ {
1324
+ "id": "rr-830e8ce8",
1325
+ "recipeId": "rc-7efd4042",
1326
+ "recipeName": "B-低温工艺",
1327
+ "productId": "pd-5c18f2a8",
1328
+ "lineId": "ln-17b2d0ae",
1329
+ "startedAt": "2026-08-30T10:04:50.177Z",
1330
+ "endedAt": null,
1331
+ "results": [
1332
+ {
1333
+ "templateRef": "dcw-temp-sp",
1334
+ "nodeId": "dw-d341d62e",
1335
+ "ok": true,
1336
+ "message": "Mock PLC 写入成功:162 → raw 162,回读一致(标定后物理值 162)",
1337
+ "value": 162
1338
+ }
1339
+ ]
1340
+ },
1341
+ {
1342
+ "id": "rr-b9b333b8",
1343
+ "recipeId": "rc-82ca6601",
1344
+ "recipeName": "暂停审计配方-sttdr",
1345
+ "productId": "pd-78c7f507",
1346
+ "lineId": "",
1347
+ "startedAt": "2026-08-30T10:42:36.238Z",
1348
+ "endedAt": null,
1349
+ "results": [
1350
+ {
1351
+ "templateRef": "dcw-cw-4750b4bb",
1352
+ "nodeId": "dw-69135086",
1353
+ "ok": false,
1354
+ "message": "当前节点暂停:「暂停审计-扭矩节点-sttdr」控制已暂停,仅开启控制的节点可被设定",
1355
+ "value": 32
1356
+ }
1357
+ ]
1358
+ },
1359
+ {
1360
+ "id": "rr-5c0fff1f",
1361
+ "recipeId": "rc-82ca6601",
1362
+ "recipeName": "暂停审计配方-sttdr",
1363
+ "productId": "pd-78c7f507",
1364
+ "lineId": "",
1365
+ "startedAt": "2026-08-30T10:42:36.483Z",
1366
+ "endedAt": null,
1367
+ "results": [
1368
+ {
1369
+ "templateRef": "dcw-cw-4750b4bb",
1370
+ "nodeId": "dw-69135086",
1371
+ "ok": false,
1372
+ "message": "控制网关已暂停(暂停全部控制):设定下发被拒绝,请先「恢复全部控制」",
1373
+ "value": 32
1374
+ }
1375
+ ]
1376
+ },
1377
+ {
1378
+ "id": "rr-ad69c602",
1379
+ "recipeId": "rc-e1aeed7b",
1380
+ "recipeName": "暂停审计配方-vo12j",
1381
+ "productId": "pd-1738e789",
1382
+ "lineId": "",
1383
+ "startedAt": "2026-08-30T10:42:59.321Z",
1384
+ "endedAt": null,
1385
+ "results": [
1386
+ {
1387
+ "templateRef": "dcw-cw-c12651c1",
1388
+ "nodeId": "dw-68d912a1",
1389
+ "ok": false,
1390
+ "message": "当前节点暂停:「暂停审计-扭矩节点-vo12j」控制已暂停,仅开启控制的节点可被设定",
1391
+ "value": 32
1392
+ }
1393
+ ]
1394
+ },
1395
+ {
1396
+ "id": "rr-927d18a2",
1397
+ "recipeId": "rc-0f1499c9",
1398
+ "recipeName": "暂停审计配方-o9pk5",
1399
+ "productId": "pd-ebbc3a62",
1400
+ "lineId": "",
1401
+ "startedAt": "2026-08-30T10:43:11.705Z",
1402
+ "endedAt": null,
1403
+ "results": [
1404
+ {
1405
+ "templateRef": "dcw-cw-afc49732",
1406
+ "nodeId": "dw-cca7897c",
1407
+ "ok": false,
1408
+ "message": "当前节点暂停:「暂停审计-扭矩节点-o9pk5」控制已暂停,仅开启控制的节点可被设定",
1409
+ "value": 32
1410
+ }
1411
+ ]
1412
+ },
1413
+ {
1414
+ "id": "rr-a83f2629",
1415
+ "recipeId": "rc-0f1499c9",
1416
+ "recipeName": "暂停审计配方-o9pk5",
1417
+ "productId": "pd-ebbc3a62",
1418
+ "lineId": "",
1419
+ "startedAt": "2026-08-30T10:43:13.080Z",
1420
+ "endedAt": null,
1421
+ "results": [
1422
+ {
1423
+ "templateRef": "dcw-cw-afc49732",
1424
+ "nodeId": "dw-cca7897c",
1425
+ "ok": false,
1426
+ "message": "控制网关已暂停(暂停全部控制):设定下发被拒绝,请先「恢复全部控制」",
1427
+ "value": 32
1428
+ }
1429
+ ]
1430
+ },
1431
+ {
1432
+ "id": "rr-b9cc60a5",
1433
+ "recipeId": "rc-7bf584db",
1434
+ "recipeName": "A-标准工艺",
1435
+ "productId": "pd-6348a595",
1436
+ "lineId": "ln-af002514",
1437
+ "startedAt": "2026-08-30T11:15:54.164Z",
1438
+ "endedAt": null,
1439
+ "results": [
1440
+ {
1441
+ "templateRef": "dcw-temp-sp",
1442
+ "nodeId": "dw-322b1978",
1443
+ "ok": false,
1444
+ "message": "控制网关已暂停(暂停全部控制):设定下发被拒绝,请先「恢复全部控制」",
1445
+ "value": 182
1446
+ },
1447
+ {
1448
+ "templateRef": "dcw-pressure-sp",
1449
+ "nodeId": "dw-e92bb0e7",
1450
+ "ok": false,
1451
+ "message": "控制网关已暂停(暂停全部控制):设定下发被拒绝,请先「恢复全部控制」",
1452
+ "value": 0.92
1453
+ }
1454
+ ]
1455
+ },
1456
+ {
1457
+ "id": "rr-0db8e4d2",
1458
+ "recipeId": "rc-7bf584db",
1459
+ "recipeName": "A-标准工艺",
1460
+ "productId": "pd-6348a595",
1461
+ "lineId": "ln-af002514",
1462
+ "startedAt": "2026-08-30T11:15:57.783Z",
1463
+ "endedAt": null,
1464
+ "results": [
1465
+ {
1466
+ "templateRef": "dcw-temp-sp",
1467
+ "nodeId": "dw-322b1978",
1468
+ "ok": true,
1469
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1470
+ "value": 182
1471
+ },
1472
+ {
1473
+ "templateRef": "dcw-pressure-sp",
1474
+ "nodeId": "dw-e92bb0e7",
1475
+ "ok": true,
1476
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1477
+ "value": 0.92
1478
+ }
1479
+ ]
1480
+ },
1481
+ {
1482
+ "id": "rr-692e3b83",
1483
+ "recipeId": "rc-7bf584db",
1484
+ "recipeName": "A-标准工艺",
1485
+ "productId": "pd-6348a595",
1486
+ "lineId": "ln-af002514",
1487
+ "startedAt": "2026-08-30T11:23:12.943Z",
1488
+ "endedAt": "2026-08-30T11:23:14.664Z",
1489
+ "results": [
1490
+ {
1491
+ "templateRef": "dcw-temp-sp",
1492
+ "nodeId": "dw-322b1978",
1493
+ "ok": true,
1494
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1495
+ "value": 182
1496
+ },
1497
+ {
1498
+ "templateRef": "dcw-pressure-sp",
1499
+ "nodeId": "dw-e92bb0e7",
1500
+ "ok": true,
1501
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1502
+ "value": 0.92
1503
+ }
1504
+ ]
1505
+ },
1506
+ {
1507
+ "id": "rr-993474e0",
1508
+ "recipeId": "rc-7bf584db",
1509
+ "recipeName": "A-标准工艺",
1510
+ "productId": "pd-6348a595",
1511
+ "lineId": "ln-af002514",
1512
+ "startedAt": "2026-08-30T11:37:49.594Z",
1513
+ "endedAt": "2026-08-30T11:37:54.761Z",
1514
+ "results": [
1515
+ {
1516
+ "templateRef": "dcw-temp-sp",
1517
+ "nodeId": "dw-322b1978",
1518
+ "ok": true,
1519
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1520
+ "value": 182
1521
+ },
1522
+ {
1523
+ "templateRef": "dcw-pressure-sp",
1524
+ "nodeId": "dw-e92bb0e7",
1525
+ "ok": true,
1526
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1527
+ "value": 0.92
1528
+ }
1529
+ ]
1530
+ },
1531
+ {
1532
+ "id": "rr-fdb0a713",
1533
+ "recipeId": "rc-7bf584db",
1534
+ "recipeName": "A-标准工艺",
1535
+ "productId": "pd-6348a595",
1536
+ "lineId": "ln-af002514",
1537
+ "startedAt": "2026-08-30T11:43:18.446Z",
1538
+ "endedAt": "2026-08-30T11:43:56.206Z",
1539
+ "results": [
1540
+ {
1541
+ "templateRef": "dcw-temp-sp",
1542
+ "nodeId": "dw-322b1978",
1543
+ "ok": true,
1544
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1545
+ "value": 182
1546
+ },
1547
+ {
1548
+ "templateRef": "dcw-pressure-sp",
1549
+ "nodeId": "dw-e92bb0e7",
1550
+ "ok": true,
1551
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1552
+ "value": 0.92
1553
+ }
1554
+ ]
1555
+ },
1556
+ {
1557
+ "id": "rr-b171f611",
1558
+ "recipeId": "rc-7bf584db",
1559
+ "recipeName": "A-标准工艺",
1560
+ "productId": "pd-6348a595",
1561
+ "lineId": "ln-af002514",
1562
+ "startedAt": "2026-08-30T11:45:42.754Z",
1563
+ "endedAt": "2026-08-30T11:46:40.875Z",
1564
+ "results": [
1565
+ {
1566
+ "templateRef": "dcw-temp-sp",
1567
+ "nodeId": "dw-322b1978",
1568
+ "ok": true,
1569
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1570
+ "value": 182
1571
+ },
1572
+ {
1573
+ "templateRef": "dcw-pressure-sp",
1574
+ "nodeId": "dw-e92bb0e7",
1575
+ "ok": true,
1576
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1577
+ "value": 0.92
1578
+ }
1579
+ ]
1580
+ },
1581
+ {
1582
+ "id": "rr-7ff55812",
1583
+ "recipeId": "rc-7bf584db",
1584
+ "recipeName": "A-标准工艺",
1585
+ "productId": "pd-6348a595",
1586
+ "lineId": "ln-af002514",
1587
+ "startedAt": "2026-08-30T11:49:25.607Z",
1588
+ "endedAt": "2026-08-30T11:50:03.476Z",
1589
+ "results": [
1590
+ {
1591
+ "templateRef": "dcw-temp-sp",
1592
+ "nodeId": "dw-322b1978",
1593
+ "ok": true,
1594
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1595
+ "value": 182
1596
+ },
1597
+ {
1598
+ "templateRef": "dcw-pressure-sp",
1599
+ "nodeId": "dw-e92bb0e7",
1600
+ "ok": true,
1601
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1602
+ "value": 0.92
1603
+ }
1604
+ ]
1605
+ },
1606
+ {
1607
+ "id": "rr-78084ec6",
1608
+ "recipeId": "rc-7bf584db",
1609
+ "recipeName": "A-标准工艺",
1610
+ "productId": "pd-6348a595",
1611
+ "lineId": "ln-af002514",
1612
+ "startedAt": "2026-08-30T11:51:02.784Z",
1613
+ "endedAt": "2026-08-30T11:51:07.947Z",
1614
+ "results": [
1615
+ {
1616
+ "templateRef": "dcw-temp-sp",
1617
+ "nodeId": "dw-322b1978",
1618
+ "ok": true,
1619
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1620
+ "value": 182
1621
+ },
1622
+ {
1623
+ "templateRef": "dcw-pressure-sp",
1624
+ "nodeId": "dw-e92bb0e7",
1625
+ "ok": true,
1626
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1627
+ "value": 0.92
1628
+ }
1629
+ ]
1630
+ },
1631
+ {
1632
+ "id": "rr-01ae127b",
1633
+ "recipeId": "rc-7bf584db",
1634
+ "recipeName": "A-标准工艺",
1635
+ "productId": "pd-6348a595",
1636
+ "lineId": "ln-af002514",
1637
+ "startedAt": "2026-08-30T12:15:39.662Z",
1638
+ "endedAt": "2026-08-30T12:16:35.223Z",
1639
+ "results": [
1640
+ {
1641
+ "templateRef": "dcw-temp-sp",
1642
+ "nodeId": "dw-322b1978",
1643
+ "ok": true,
1644
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1645
+ "value": 182
1646
+ },
1647
+ {
1648
+ "templateRef": "dcw-pressure-sp",
1649
+ "nodeId": "dw-e92bb0e7",
1650
+ "ok": true,
1651
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1652
+ "value": 0.92
1653
+ }
1654
+ ]
1655
+ },
1656
+ {
1657
+ "id": "rr-f3cb33d0",
1658
+ "recipeId": "rc-7bf584db",
1659
+ "recipeName": "A-标准工艺",
1660
+ "productId": "pd-6348a595",
1661
+ "lineId": "ln-af002514",
1662
+ "startedAt": "2026-08-30T12:18:36.060Z",
1663
+ "endedAt": "2026-08-30T12:19:30.722Z",
1664
+ "results": [
1665
+ {
1666
+ "templateRef": "dcw-temp-sp",
1667
+ "nodeId": "dw-322b1978",
1668
+ "ok": true,
1669
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1670
+ "value": 182
1671
+ },
1672
+ {
1673
+ "templateRef": "dcw-pressure-sp",
1674
+ "nodeId": "dw-e92bb0e7",
1675
+ "ok": true,
1676
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1677
+ "value": 0.92
1678
+ }
1679
+ ]
1680
+ },
1681
+ {
1682
+ "id": "rr-94074f6c",
1683
+ "recipeId": "rc-7bf584db",
1684
+ "recipeName": "A-标准工艺",
1685
+ "productId": "pd-6348a595",
1686
+ "lineId": "ln-af002514",
1687
+ "startedAt": "2026-08-30T12:24:48.621Z",
1688
+ "endedAt": "2026-08-30T12:24:56.192Z",
1689
+ "results": [
1690
+ {
1691
+ "templateRef": "dcw-temp-sp",
1692
+ "nodeId": "dw-322b1978",
1693
+ "ok": true,
1694
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1695
+ "value": 182
1696
+ },
1697
+ {
1698
+ "templateRef": "dcw-pressure-sp",
1699
+ "nodeId": "dw-e92bb0e7",
1700
+ "ok": true,
1701
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1702
+ "value": 0.92
1703
+ }
1704
+ ]
1705
+ },
1706
+ {
1707
+ "id": "rr-7a2b1d8e",
1708
+ "recipeId": "rc-383d5228",
1709
+ "recipeName": "全功能配方-cmi1rk",
1710
+ "productId": "pd-f5e16580",
1711
+ "lineId": "ln-c6398954",
1712
+ "startedAt": "2026-08-30T15:01:39.119Z",
1713
+ "endedAt": "2026-08-30T15:11:53.479Z",
1714
+ "results": [
1715
+ {
1716
+ "templateRef": "dcw-temp-sp",
1717
+ "nodeId": "dw-e7d0b794",
1718
+ "ok": true,
1719
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1720
+ "value": 180
1721
+ }
1722
+ ]
1723
+ },
1724
+ {
1725
+ "id": "rr-3cfdeade",
1726
+ "recipeId": "rc-7bf584db",
1727
+ "recipeName": "A-标准工艺",
1728
+ "productId": "pd-6348a595",
1729
+ "lineId": "ln-af002514",
1730
+ "startedAt": "2026-08-30T15:51:40.543Z",
1731
+ "endedAt": "2026-08-30T15:52:09.236Z",
1732
+ "results": [
1733
+ {
1734
+ "templateRef": "dcw-temp-sp",
1735
+ "nodeId": "dw-322b1978",
1736
+ "ok": true,
1737
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1738
+ "value": 182
1739
+ },
1740
+ {
1741
+ "templateRef": "dcw-pressure-sp",
1742
+ "nodeId": "dw-e92bb0e7",
1743
+ "ok": true,
1744
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1745
+ "value": 0.92
1746
+ }
1747
+ ]
1748
+ },
1749
+ {
1750
+ "id": "rr-046e4328",
1751
+ "recipeId": "rc-7bf584db",
1752
+ "recipeName": "A-标准工艺",
1753
+ "productId": "pd-6348a595",
1754
+ "lineId": "ln-af002514",
1755
+ "startedAt": "2026-08-30T15:52:46.613Z",
1756
+ "endedAt": "2026-08-30T15:53:02.101Z",
1757
+ "results": [
1758
+ {
1759
+ "templateRef": "dcw-temp-sp",
1760
+ "nodeId": "dw-322b1978",
1761
+ "ok": true,
1762
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1763
+ "value": 182
1764
+ },
1765
+ {
1766
+ "templateRef": "dcw-pressure-sp",
1767
+ "nodeId": "dw-e92bb0e7",
1768
+ "ok": true,
1769
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1770
+ "value": 0.92
1771
+ }
1772
+ ]
1773
+ },
1774
+ {
1775
+ "id": "rr-9ac3a8c5",
1776
+ "recipeId": "rc-7bf584db",
1777
+ "recipeName": "A-标准工艺",
1778
+ "productId": "pd-6348a595",
1779
+ "lineId": "ln-af002514",
1780
+ "startedAt": "2026-08-30T15:53:46.748Z",
1781
+ "endedAt": "2026-08-30T15:53:57.454Z",
1782
+ "results": [
1783
+ {
1784
+ "templateRef": "dcw-temp-sp",
1785
+ "nodeId": "dw-322b1978",
1786
+ "ok": true,
1787
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1788
+ "value": 182
1789
+ },
1790
+ {
1791
+ "templateRef": "dcw-pressure-sp",
1792
+ "nodeId": "dw-e92bb0e7",
1793
+ "ok": true,
1794
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
1795
+ "value": 0.92
1796
+ }
1797
+ ]
1798
+ },
1799
+ {
1800
+ "id": "rr-cbfa475a",
1801
+ "recipeId": "rc-be9f32f1",
1802
+ "recipeName": "OMPDBG-配方",
1803
+ "productId": "pd-49a5c9c5",
1804
+ "lineId": "ln-18f515c7",
1805
+ "startedAt": "2026-08-30T16:33:09.489Z",
1806
+ "endedAt": null,
1807
+ "results": [
1808
+ {
1809
+ "templateRef": "dcw-temp-sp",
1810
+ "nodeId": "dw-446be489",
1811
+ "ok": true,
1812
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1813
+ "value": 180
1814
+ }
1815
+ ]
1816
+ },
1817
+ {
1818
+ "id": "rr-aabedbd7",
1819
+ "recipeId": "rc-d78ba182",
1820
+ "recipeName": "OMPDBG-配方",
1821
+ "productId": "pd-46da28bc",
1822
+ "lineId": "ln-22fa44a1",
1823
+ "startedAt": "2026-08-30T16:34:22.155Z",
1824
+ "endedAt": null,
1825
+ "results": [
1826
+ {
1827
+ "templateRef": "dcw-temp-sp",
1828
+ "nodeId": "dw-17a41938",
1829
+ "ok": true,
1830
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1831
+ "value": 180
1832
+ }
1833
+ ]
1834
+ },
1835
+ {
1836
+ "id": "rr-db6393d4",
1837
+ "recipeId": "rc-d0a6fa11",
1838
+ "recipeName": "OMPDBG-配方",
1839
+ "productId": "pd-7b470ac0",
1840
+ "lineId": "ln-d7460017",
1841
+ "startedAt": "2026-08-30T16:36:03.781Z",
1842
+ "endedAt": null,
1843
+ "results": [
1844
+ {
1845
+ "templateRef": "dcw-temp-sp",
1846
+ "nodeId": "dw-abd67572",
1847
+ "ok": true,
1848
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1849
+ "value": 180
1850
+ }
1851
+ ]
1852
+ },
1853
+ {
1854
+ "id": "rr-a9d4f5d4",
1855
+ "recipeId": "rc-1d236ab0",
1856
+ "recipeName": "TEAMDBG-配方",
1857
+ "productId": "pd-00a1b95a",
1858
+ "lineId": "ln-d7bd99eb",
1859
+ "startedAt": "2026-08-30T16:43:36.670Z",
1860
+ "endedAt": "2026-08-30T16:54:02.934Z",
1861
+ "results": [
1862
+ {
1863
+ "templateRef": "dcw-temp-sp",
1864
+ "nodeId": "dw-7351ea86",
1865
+ "ok": true,
1866
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1867
+ "value": 180
1868
+ }
1869
+ ]
1870
+ },
1871
+ {
1872
+ "id": "rr-7e8b6ffe",
1873
+ "recipeId": "rc-c0660e33",
1874
+ "recipeName": "TEAMDBG-配方",
1875
+ "productId": "pd-50c200be",
1876
+ "lineId": "ln-7dc463ab",
1877
+ "startedAt": "2026-08-30T16:44:43.852Z",
1878
+ "endedAt": "2026-08-30T16:54:02.964Z",
1879
+ "results": [
1880
+ {
1881
+ "templateRef": "dcw-temp-sp",
1882
+ "nodeId": "dw-0e09fe42",
1883
+ "ok": true,
1884
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1885
+ "value": 180
1886
+ }
1887
+ ]
1888
+ },
1889
+ {
1890
+ "id": "rr-22eba3d5",
1891
+ "recipeId": "rc-3abdb942",
1892
+ "recipeName": "TEAMDBG-配方",
1893
+ "productId": "pd-d7a00eaf",
1894
+ "lineId": "ln-2d9ed7a3",
1895
+ "startedAt": "2026-08-30T16:45:58.393Z",
1896
+ "endedAt": "2026-08-30T16:54:02.980Z",
1897
+ "results": [
1898
+ {
1899
+ "templateRef": "dcw-temp-sp",
1900
+ "nodeId": "dw-2d439fe9",
1901
+ "ok": true,
1902
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1903
+ "value": 180
1904
+ }
1905
+ ]
1906
+ },
1907
+ {
1908
+ "id": "rr-006cdef3",
1909
+ "recipeId": "rc-79f78e9b",
1910
+ "recipeName": "TEAMDBG-配方",
1911
+ "productId": "pd-a2083b71",
1912
+ "lineId": "ln-2104ed0e",
1913
+ "startedAt": "2026-08-30T16:47:00.727Z",
1914
+ "endedAt": "2026-08-30T16:54:02.996Z",
1915
+ "results": [
1916
+ {
1917
+ "templateRef": "dcw-temp-sp",
1918
+ "nodeId": "dw-15099e27",
1919
+ "ok": true,
1920
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1921
+ "value": 180
1922
+ }
1923
+ ]
1924
+ },
1925
+ {
1926
+ "id": "rr-173c33b3",
1927
+ "recipeId": "rc-af913fcc",
1928
+ "recipeName": "TEAMDBG-配方",
1929
+ "productId": "pd-2874ada9",
1930
+ "lineId": "ln-08e71bc4",
1931
+ "startedAt": "2026-08-30T16:49:54.137Z",
1932
+ "endedAt": "2026-08-30T16:54:03.037Z",
1933
+ "results": [
1934
+ {
1935
+ "templateRef": "dcw-temp-sp",
1936
+ "nodeId": "dw-3f1fc785",
1937
+ "ok": true,
1938
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1939
+ "value": 180
1940
+ }
1941
+ ]
1942
+ },
1943
+ {
1944
+ "id": "rr-7bad6c2f",
1945
+ "recipeId": "rc-3cc6b71c",
1946
+ "recipeName": "全功能配方-5u2sgc",
1947
+ "productId": "pd-3a2d96f2",
1948
+ "lineId": "ln-afd73022",
1949
+ "startedAt": "2026-08-30T16:54:26.216Z",
1950
+ "endedAt": "2026-08-30T16:56:37.989Z",
1951
+ "results": [
1952
+ {
1953
+ "templateRef": "dcw-temp-sp",
1954
+ "nodeId": "dw-b91bdc6d",
1955
+ "ok": true,
1956
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1957
+ "value": 180
1958
+ }
1959
+ ]
1960
+ },
1961
+ {
1962
+ "id": "rr-69067357",
1963
+ "recipeId": "rc-d818cba9",
1964
+ "recipeName": "全功能配方-rgk2f3",
1965
+ "productId": "pd-bac0aa38",
1966
+ "lineId": "ln-9d152c2c",
1967
+ "startedAt": "2026-08-31T02:07:53.607Z",
1968
+ "endedAt": "2026-08-31T02:11:01.066Z",
1969
+ "results": [
1970
+ {
1971
+ "templateRef": "dcw-temp-sp",
1972
+ "nodeId": "dw-0f3224b4",
1973
+ "ok": true,
1974
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
1975
+ "value": 180
1976
+ }
1977
+ ]
1978
+ },
1979
+ {
1980
+ "id": "rr-dad6d1bf",
1981
+ "recipeId": "rc-7bf584db",
1982
+ "recipeName": "A-标准工艺",
1983
+ "productId": "pd-6348a595",
1984
+ "lineId": "ln-af002514",
1985
+ "startedAt": "2026-08-31T03:30:02.163Z",
1986
+ "endedAt": "2026-08-31T04:07:49.188Z",
1987
+ "results": [
1988
+ {
1989
+ "templateRef": "dcw-temp-sp",
1990
+ "nodeId": "dw-322b1978",
1991
+ "ok": true,
1992
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
1993
+ "value": 182
1994
+ },
1995
+ {
1996
+ "templateRef": "dcw-pressure-sp",
1997
+ "nodeId": "dw-e92bb0e7",
1998
+ "ok": true,
1999
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
2000
+ "value": 0.92
2001
+ }
2002
+ ]
2003
+ },
2004
+ {
2005
+ "id": "rr-8558edb6",
2006
+ "recipeId": "rc-7bf584db",
2007
+ "recipeName": "A-标准工艺",
2008
+ "productId": "pd-6348a595",
2009
+ "lineId": "ln-af002514",
2010
+ "startedAt": "2026-08-31T04:07:54.251Z",
2011
+ "endedAt": null,
2012
+ "results": [
2013
+ {
2014
+ "templateRef": "dcw-temp-sp",
2015
+ "nodeId": "dw-322b1978",
2016
+ "ok": true,
2017
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
2018
+ "value": 182
2019
+ },
2020
+ {
2021
+ "templateRef": "dcw-pressure-sp",
2022
+ "nodeId": "dw-e92bb0e7",
2023
+ "ok": true,
2024
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
2025
+ "value": 0.92
2026
+ }
2027
+ ]
2028
+ },
2029
+ {
2030
+ "id": "rr-6b180446",
2031
+ "recipeId": "rc-7bf584db",
2032
+ "recipeName": "A-标准工艺",
2033
+ "productId": "pd-6348a595",
2034
+ "lineId": "ln-af002514",
2035
+ "startedAt": "2026-08-31T05:39:30.254Z",
2036
+ "endedAt": null,
2037
+ "results": [
2038
+ {
2039
+ "templateRef": "dcw-temp-sp",
2040
+ "nodeId": "dw-322b1978",
2041
+ "ok": true,
2042
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
2043
+ "value": 182
2044
+ },
2045
+ {
2046
+ "templateRef": "dcw-pressure-sp",
2047
+ "nodeId": "dw-e92bb0e7",
2048
+ "ok": true,
2049
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
2050
+ "value": 0.92
2051
+ }
2052
+ ]
2053
+ },
2054
+ {
2055
+ "id": "rr-b1ab97b5",
2056
+ "recipeId": "rc-7bf584db",
2057
+ "recipeName": "A-标准工艺",
2058
+ "productId": "pd-6348a595",
2059
+ "lineId": "ln-af002514",
2060
+ "startedAt": "2026-08-31T05:52:15.607Z",
2061
+ "endedAt": "2026-08-31T15:40:26.251Z",
2062
+ "results": [
2063
+ {
2064
+ "templateRef": "dcw-temp-sp",
2065
+ "nodeId": "dw-322b1978",
2066
+ "ok": true,
2067
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
2068
+ "value": 182
2069
+ },
2070
+ {
2071
+ "templateRef": "dcw-pressure-sp",
2072
+ "nodeId": "dw-e92bb0e7",
2073
+ "ok": true,
2074
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
2075
+ "value": 0.92
2076
+ }
2077
+ ]
2078
+ },
2079
+ {
2080
+ "id": "rr-8788a81c",
2081
+ "recipeId": "rc-f62239b2",
2082
+ "recipeName": "语义验证配方",
2083
+ "productId": "pd-2308e253",
2084
+ "lineId": "ln-feef6e4d",
2085
+ "startedAt": "2026-08-31T14:26:24.122Z",
2086
+ "endedAt": null,
2087
+ "results": [
2088
+ {
2089
+ "templateRef": "dcw-temp-sp",
2090
+ "nodeId": "dw-b1c4bbb2",
2091
+ "ok": false,
2092
+ "message": "Modbus 写入失败: connect ECONNREFUSED 127.0.0.1:1502",
2093
+ "value": 182
2094
+ }
2095
+ ]
2096
+ },
2097
+ {
2098
+ "id": "rr-d3d7635c",
2099
+ "recipeId": "rc-89031e11",
2100
+ "recipeName": "全功能配方-m20gm8",
2101
+ "productId": "pd-510edc1b",
2102
+ "lineId": "ln-3aff4d75",
2103
+ "startedAt": "2026-08-31T15:01:17.249Z",
2104
+ "endedAt": "2026-08-31T15:05:19.626Z",
2105
+ "results": [
2106
+ {
2107
+ "templateRef": "dcw-temp-sp",
2108
+ "nodeId": "dw-aff8c1f5",
2109
+ "ok": true,
2110
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
2111
+ "value": 180
2112
+ }
2113
+ ]
2114
+ },
2115
+ {
2116
+ "id": "rr-38f7f364",
2117
+ "recipeId": "rc-9326681e",
2118
+ "recipeName": "快照配方-prmthfeolm",
2119
+ "productId": "pd-a580ad4f",
2120
+ "lineId": "ln-35e3626b",
2121
+ "startedAt": "2026-08-31T16:01:42.442Z",
2122
+ "endedAt": "2026-08-31T16:03:19.310Z",
2123
+ "results": [
2124
+ {
2125
+ "templateRef": "dcw-temp-sp",
2126
+ "nodeId": "dw-a4205751",
2127
+ "ok": true,
2128
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
2129
+ "value": 180
2130
+ }
2131
+ ],
2132
+ "paramsSnapshot": [
2133
+ {
2134
+ "nodeId": "dw-a4205751",
2135
+ "templateRef": "dcw-temp-sp",
2136
+ "value": 180,
2137
+ "min": 176,
2138
+ "max": 188
2139
+ }
2140
+ ]
2141
+ },
2142
+ {
2143
+ "id": "rr-51ed0c51",
2144
+ "recipeId": "rc-d6ce6aca",
2145
+ "recipeName": "快照配方-prmthffidc",
2146
+ "productId": "pd-7335ba73",
2147
+ "lineId": "ln-c31cf75d",
2148
+ "startedAt": "2026-08-31T16:02:20.957Z",
2149
+ "endedAt": "2026-08-31T16:02:45.415Z",
2150
+ "results": [
2151
+ {
2152
+ "templateRef": "dcw-temp-sp",
2153
+ "nodeId": "dw-47a397c1",
2154
+ "ok": true,
2155
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
2156
+ "value": 180
2157
+ }
2158
+ ],
2159
+ "paramsSnapshot": [
2160
+ {
2161
+ "nodeId": "dw-47a397c1",
2162
+ "templateRef": "dcw-temp-sp",
2163
+ "value": 180,
2164
+ "min": 176,
2165
+ "max": 188
2166
+ }
2167
+ ]
2168
+ },
2169
+ {
2170
+ "id": "rr-dce5ebb4",
2171
+ "recipeId": "rc-ccbbbad7",
2172
+ "recipeName": "独立性配方-ndmthfmq46",
2173
+ "productId": "pd-91ac8f36",
2174
+ "lineId": "ln-f4b89912",
2175
+ "startedAt": "2026-08-31T16:07:57.515Z",
2176
+ "endedAt": "2026-08-31T16:08:38.507Z",
2177
+ "results": [
2178
+ {
2179
+ "templateRef": "dcw-temp-sp",
2180
+ "nodeId": "dw-c0743b62",
2181
+ "ok": true,
2182
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
2183
+ "value": 180
2184
+ }
2185
+ ],
2186
+ "paramsSnapshot": [
2187
+ {
2188
+ "nodeId": "dw-c0743b62",
2189
+ "templateRef": "dcw-temp-sp",
2190
+ "value": 180,
2191
+ "min": 176,
2192
+ "max": 188
2193
+ }
2194
+ ]
2195
+ },
2196
+ {
2197
+ "id": "rr-3166887e",
2198
+ "recipeId": "rc-249c45ce",
2199
+ "recipeName": "独立性配方-ndmthftb7w",
2200
+ "productId": "pd-30c207eb",
2201
+ "lineId": "ln-673b1dbb",
2202
+ "startedAt": "2026-08-31T16:13:04.789Z",
2203
+ "endedAt": "2026-08-31T16:13:41.314Z",
2204
+ "results": [
2205
+ {
2206
+ "templateRef": "dcw-temp-sp",
2207
+ "nodeId": "dw-cf5c6f31",
2208
+ "ok": true,
2209
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
2210
+ "value": 180
2211
+ }
2212
+ ],
2213
+ "paramsSnapshot": [
2214
+ {
2215
+ "nodeId": "dw-cf5c6f31",
2216
+ "templateRef": "dcw-temp-sp",
2217
+ "value": 180,
2218
+ "min": 176,
2219
+ "max": 188
2220
+ }
2221
+ ]
2222
+ },
2223
+ {
2224
+ "id": "rr-a417c5ed",
2225
+ "recipeId": "rc-bf794217",
2226
+ "recipeName": "独立性配方-ndmthfuytl",
2227
+ "productId": "pd-f2bff163",
2228
+ "lineId": "ln-486aeda3",
2229
+ "startedAt": "2026-08-31T16:14:21.970Z",
2230
+ "endedAt": "2026-08-31T16:15:02.586Z",
2231
+ "results": [
2232
+ {
2233
+ "templateRef": "dcw-temp-sp",
2234
+ "nodeId": "dw-f48330eb",
2235
+ "ok": true,
2236
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
2237
+ "value": 180
2238
+ }
2239
+ ],
2240
+ "paramsSnapshot": [
2241
+ {
2242
+ "nodeId": "dw-f48330eb",
2243
+ "templateRef": "dcw-temp-sp",
2244
+ "value": 180,
2245
+ "min": 176,
2246
+ "max": 188
2247
+ }
2248
+ ]
2249
+ },
2250
+ {
2251
+ "id": "rr-31bd6332",
2252
+ "recipeId": "rc-2af34217",
2253
+ "recipeName": "独立性配方-ndmthfwq9p",
2254
+ "productId": "pd-a424dfd1",
2255
+ "lineId": "ln-32736fa4",
2256
+ "startedAt": "2026-08-31T16:15:44.244Z",
2257
+ "endedAt": "2026-08-31T16:16:24.815Z",
2258
+ "results": [
2259
+ {
2260
+ "templateRef": "dcw-temp-sp",
2261
+ "nodeId": "dw-b952387c",
2262
+ "ok": true,
2263
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
2264
+ "value": 180
2265
+ }
2266
+ ],
2267
+ "paramsSnapshot": [
2268
+ {
2269
+ "nodeId": "dw-b952387c",
2270
+ "templateRef": "dcw-temp-sp",
2271
+ "value": 180,
2272
+ "min": 176,
2273
+ "max": 188
2274
+ }
2275
+ ]
2276
+ },
2277
+ {
2278
+ "id": "rr-c645c0fe",
2279
+ "recipeId": "rc-96943477",
2280
+ "recipeName": "RB审计配方-43dhw",
2281
+ "productId": "pd-5ad84699",
2282
+ "lineId": "ln-427909b2",
2283
+ "startedAt": "2026-08-31T16:15:59.477Z",
2284
+ "endedAt": "2026-08-31T16:16:00.297Z",
2285
+ "results": [
2286
+ {
2287
+ "templateRef": "dcw-temp-sp",
2288
+ "nodeId": "dw-7269e65a",
2289
+ "ok": true,
2290
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2291
+ "value": 175
2292
+ }
2293
+ ],
2294
+ "paramsSnapshot": [
2295
+ {
2296
+ "nodeId": "dw-7269e65a",
2297
+ "templateRef": "dcw-temp-sp",
2298
+ "value": 175,
2299
+ "min": 160,
2300
+ "max": 180
2301
+ }
2302
+ ]
2303
+ },
2304
+ {
2305
+ "id": "rr-a1578f1e",
2306
+ "recipeId": "rc-7f17a222",
2307
+ "recipeName": "BOPP 标准工艺",
2308
+ "productId": "pd-3ad54846",
2309
+ "lineId": "ln-29c185e7",
2310
+ "startedAt": "2026-08-31T16:20:13.707Z",
2311
+ "endedAt": null,
2312
+ "results": [
2313
+ {
2314
+ "templateRef": "dcw-temp-sp",
2315
+ "nodeId": "dw-405438fa",
2316
+ "ok": true,
2317
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
2318
+ "value": 182
2319
+ },
2320
+ {
2321
+ "templateRef": "dcw-speed-sp",
2322
+ "nodeId": "dw-6b558041",
2323
+ "ok": true,
2324
+ "message": "Mock PLC 写入成功:320 → raw 320,回读一致(标定后物理值 320)",
2325
+ "value": 320
2326
+ }
2327
+ ],
2328
+ "paramsSnapshot": [
2329
+ {
2330
+ "nodeId": "dw-405438fa",
2331
+ "templateRef": "dcw-temp-sp",
2332
+ "value": 182,
2333
+ "min": 176,
2334
+ "max": 188
2335
+ },
2336
+ {
2337
+ "nodeId": "dw-6b558041",
2338
+ "templateRef": "dcw-speed-sp",
2339
+ "value": 320,
2340
+ "min": 300,
2341
+ "max": 340
2342
+ }
2343
+ ]
2344
+ },
2345
+ {
2346
+ "id": "rr-9ec3a5fc",
2347
+ "recipeId": "rc-f1a8764f",
2348
+ "recipeName": "RB审计配方-n4iy3",
2349
+ "productId": "pd-fc436518",
2350
+ "lineId": "ln-d41a0d5e",
2351
+ "startedAt": "2026-08-31T16:22:44.701Z",
2352
+ "endedAt": null,
2353
+ "results": [
2354
+ {
2355
+ "templateRef": "dcw-temp-sp",
2356
+ "nodeId": "dw-6d6ccfd9",
2357
+ "ok": true,
2358
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2359
+ "value": 175
2360
+ }
2361
+ ],
2362
+ "paramsSnapshot": [
2363
+ {
2364
+ "nodeId": "dw-6d6ccfd9",
2365
+ "templateRef": "dcw-temp-sp",
2366
+ "value": 175,
2367
+ "min": 160,
2368
+ "max": 180
2369
+ }
2370
+ ]
2371
+ },
2372
+ {
2373
+ "id": "rr-3b5a636e",
2374
+ "recipeId": "rc-f1a8764f",
2375
+ "recipeName": "RB审计配方-n4iy3",
2376
+ "productId": "pd-fc436518",
2377
+ "lineId": "ln-d41a0d5e",
2378
+ "startedAt": "2026-08-31T16:22:49.141Z",
2379
+ "endedAt": "2026-08-31T16:22:49.904Z",
2380
+ "results": [
2381
+ {
2382
+ "templateRef": "dcw-temp-sp",
2383
+ "nodeId": "dw-6d6ccfd9",
2384
+ "ok": true,
2385
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2386
+ "value": 175
2387
+ }
2388
+ ],
2389
+ "paramsSnapshot": [
2390
+ {
2391
+ "nodeId": "dw-6d6ccfd9",
2392
+ "templateRef": "dcw-temp-sp",
2393
+ "value": 175,
2394
+ "min": 160,
2395
+ "max": 180
2396
+ }
2397
+ ]
2398
+ },
2399
+ {
2400
+ "id": "rr-e90f1635",
2401
+ "recipeId": "rc-f1a8764f",
2402
+ "recipeName": "RB审计配方-n4iy3",
2403
+ "productId": "pd-fc436518",
2404
+ "lineId": "ln-d41a0d5e",
2405
+ "startedAt": "2026-08-31T16:22:49.982Z",
2406
+ "endedAt": "2026-08-31T16:22:50.277Z",
2407
+ "results": [
2408
+ {
2409
+ "templateRef": "dcw-temp-sp",
2410
+ "nodeId": "dw-6d6ccfd9",
2411
+ "ok": true,
2412
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
2413
+ "value": 176
2414
+ }
2415
+ ],
2416
+ "paramsSnapshot": [
2417
+ {
2418
+ "nodeId": "dw-6d6ccfd9",
2419
+ "templateRef": "dcw-temp-sp",
2420
+ "value": 176,
2421
+ "min": 160,
2422
+ "max": 180
2423
+ }
2424
+ ]
2425
+ },
2426
+ {
2427
+ "id": "rr-2fd3c624",
2428
+ "recipeId": "rc-58b3786b",
2429
+ "recipeName": "RB审计配方-d5rvg",
2430
+ "productId": "pd-4a3566bc",
2431
+ "lineId": "ln-2d1adacd",
2432
+ "startedAt": "2026-08-31T16:24:24.803Z",
2433
+ "endedAt": null,
2434
+ "results": [
2435
+ {
2436
+ "templateRef": "dcw-temp-sp",
2437
+ "nodeId": "dw-224b6936",
2438
+ "ok": true,
2439
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2440
+ "value": 175
2441
+ }
2442
+ ],
2443
+ "paramsSnapshot": [
2444
+ {
2445
+ "nodeId": "dw-224b6936",
2446
+ "templateRef": "dcw-temp-sp",
2447
+ "value": 175,
2448
+ "min": 160,
2449
+ "max": 180
2450
+ }
2451
+ ]
2452
+ },
2453
+ {
2454
+ "id": "rr-1f93710c",
2455
+ "recipeId": "rc-58b3786b",
2456
+ "recipeName": "RB审计配方-d5rvg",
2457
+ "productId": "pd-4a3566bc",
2458
+ "lineId": "ln-2d1adacd",
2459
+ "startedAt": "2026-08-31T16:24:29.388Z",
2460
+ "endedAt": "2026-08-31T16:24:30.152Z",
2461
+ "results": [
2462
+ {
2463
+ "templateRef": "dcw-temp-sp",
2464
+ "nodeId": "dw-224b6936",
2465
+ "ok": true,
2466
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2467
+ "value": 175
2468
+ }
2469
+ ],
2470
+ "paramsSnapshot": [
2471
+ {
2472
+ "nodeId": "dw-224b6936",
2473
+ "templateRef": "dcw-temp-sp",
2474
+ "value": 175,
2475
+ "min": 160,
2476
+ "max": 180
2477
+ }
2478
+ ]
2479
+ },
2480
+ {
2481
+ "id": "rr-1fb4a044",
2482
+ "recipeId": "rc-58b3786b",
2483
+ "recipeName": "RB审计配方-d5rvg",
2484
+ "productId": "pd-4a3566bc",
2485
+ "lineId": "ln-2d1adacd",
2486
+ "startedAt": "2026-08-31T16:24:30.230Z",
2487
+ "endedAt": "2026-08-31T16:24:30.526Z",
2488
+ "results": [
2489
+ {
2490
+ "templateRef": "dcw-temp-sp",
2491
+ "nodeId": "dw-224b6936",
2492
+ "ok": true,
2493
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
2494
+ "value": 176
2495
+ }
2496
+ ],
2497
+ "paramsSnapshot": [
2498
+ {
2499
+ "nodeId": "dw-224b6936",
2500
+ "templateRef": "dcw-temp-sp",
2501
+ "value": 176,
2502
+ "min": 160,
2503
+ "max": 180
2504
+ }
2505
+ ]
2506
+ },
2507
+ {
2508
+ "id": "rr-1575bb34",
2509
+ "recipeId": "rc-e63444e8",
2510
+ "recipeName": "RB审计配方-2au0i",
2511
+ "productId": "pd-e7b18a7a",
2512
+ "lineId": "ln-572ac0ff",
2513
+ "startedAt": "2026-08-31T16:27:28.087Z",
2514
+ "endedAt": null,
2515
+ "results": [
2516
+ {
2517
+ "templateRef": "dcw-temp-sp",
2518
+ "nodeId": "dw-102117d5",
2519
+ "ok": true,
2520
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2521
+ "value": 175
2522
+ }
2523
+ ],
2524
+ "paramsSnapshot": [
2525
+ {
2526
+ "nodeId": "dw-102117d5",
2527
+ "templateRef": "dcw-temp-sp",
2528
+ "value": 175,
2529
+ "min": 160,
2530
+ "max": 180
2531
+ }
2532
+ ]
2533
+ },
2534
+ {
2535
+ "id": "rr-ca12f16a",
2536
+ "recipeId": "rc-e63444e8",
2537
+ "recipeName": "RB审计配方-2au0i",
2538
+ "productId": "pd-e7b18a7a",
2539
+ "lineId": "ln-572ac0ff",
2540
+ "startedAt": "2026-08-31T16:27:32.605Z",
2541
+ "endedAt": "2026-08-31T16:27:33.569Z",
2542
+ "results": [
2543
+ {
2544
+ "templateRef": "dcw-temp-sp",
2545
+ "nodeId": "dw-102117d5",
2546
+ "ok": true,
2547
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2548
+ "value": 175
2549
+ }
2550
+ ],
2551
+ "paramsSnapshot": [
2552
+ {
2553
+ "nodeId": "dw-102117d5",
2554
+ "templateRef": "dcw-temp-sp",
2555
+ "value": 175,
2556
+ "min": 160,
2557
+ "max": 180
2558
+ }
2559
+ ]
2560
+ },
2561
+ {
2562
+ "id": "rr-80226fa8",
2563
+ "recipeId": "rc-e63444e8",
2564
+ "recipeName": "RB审计配方-2au0i",
2565
+ "productId": "pd-e7b18a7a",
2566
+ "lineId": "ln-572ac0ff",
2567
+ "startedAt": "2026-08-31T16:27:33.647Z",
2568
+ "endedAt": "2026-08-31T16:27:33.973Z",
2569
+ "results": [
2570
+ {
2571
+ "templateRef": "dcw-temp-sp",
2572
+ "nodeId": "dw-102117d5",
2573
+ "ok": true,
2574
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
2575
+ "value": 176
2576
+ }
2577
+ ],
2578
+ "paramsSnapshot": [
2579
+ {
2580
+ "nodeId": "dw-102117d5",
2581
+ "templateRef": "dcw-temp-sp",
2582
+ "value": 176,
2583
+ "min": 160,
2584
+ "max": 180
2585
+ }
2586
+ ]
2587
+ },
2588
+ {
2589
+ "id": "rr-9dbcdc5a",
2590
+ "recipeId": "rc-a252283f",
2591
+ "recipeName": "RB审计配方-fs7rd",
2592
+ "productId": "pd-35c27e80",
2593
+ "lineId": "ln-e132a42f",
2594
+ "startedAt": "2026-08-31T16:30:17.092Z",
2595
+ "endedAt": null,
2596
+ "results": [
2597
+ {
2598
+ "templateRef": "dcw-temp-sp",
2599
+ "nodeId": "dw-73c0b79a",
2600
+ "ok": true,
2601
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2602
+ "value": 175
2603
+ }
2604
+ ],
2605
+ "paramsSnapshot": [
2606
+ {
2607
+ "nodeId": "dw-73c0b79a",
2608
+ "templateRef": "dcw-temp-sp",
2609
+ "value": 175,
2610
+ "min": 160,
2611
+ "max": 180
2612
+ }
2613
+ ]
2614
+ },
2615
+ {
2616
+ "id": "rr-120df93b",
2617
+ "recipeId": "rc-a252283f",
2618
+ "recipeName": "RB审计配方-fs7rd",
2619
+ "productId": "pd-35c27e80",
2620
+ "lineId": "ln-e132a42f",
2621
+ "startedAt": "2026-08-31T16:30:21.520Z",
2622
+ "endedAt": "2026-08-31T16:30:22.563Z",
2623
+ "results": [
2624
+ {
2625
+ "templateRef": "dcw-temp-sp",
2626
+ "nodeId": "dw-73c0b79a",
2627
+ "ok": true,
2628
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2629
+ "value": 175
2630
+ }
2631
+ ],
2632
+ "paramsSnapshot": [
2633
+ {
2634
+ "nodeId": "dw-73c0b79a",
2635
+ "templateRef": "dcw-temp-sp",
2636
+ "value": 175,
2637
+ "min": 160,
2638
+ "max": 180
2639
+ }
2640
+ ]
2641
+ },
2642
+ {
2643
+ "id": "rr-76a15eb1",
2644
+ "recipeId": "rc-a252283f",
2645
+ "recipeName": "RB审计配方-fs7rd",
2646
+ "productId": "pd-35c27e80",
2647
+ "lineId": "ln-e132a42f",
2648
+ "startedAt": "2026-08-31T16:30:22.629Z",
2649
+ "endedAt": "2026-08-31T16:30:22.904Z",
2650
+ "results": [
2651
+ {
2652
+ "templateRef": "dcw-temp-sp",
2653
+ "nodeId": "dw-73c0b79a",
2654
+ "ok": true,
2655
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
2656
+ "value": 176
2657
+ }
2658
+ ],
2659
+ "paramsSnapshot": [
2660
+ {
2661
+ "nodeId": "dw-73c0b79a",
2662
+ "templateRef": "dcw-temp-sp",
2663
+ "value": 176,
2664
+ "min": 160,
2665
+ "max": 180
2666
+ }
2667
+ ]
2668
+ },
2669
+ {
2670
+ "id": "rr-63a9d6d6",
2671
+ "recipeId": "rc-8a659d97",
2672
+ "recipeName": "RB审计配方-33hss",
2673
+ "productId": "pd-fe39aac8",
2674
+ "lineId": "ln-f178ca43",
2675
+ "startedAt": "2026-08-31T16:30:40.424Z",
2676
+ "endedAt": null,
2677
+ "results": [
2678
+ {
2679
+ "templateRef": "dcw-temp-sp",
2680
+ "nodeId": "dw-88c0516b",
2681
+ "ok": true,
2682
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2683
+ "value": 175
2684
+ }
2685
+ ],
2686
+ "paramsSnapshot": [
2687
+ {
2688
+ "nodeId": "dw-88c0516b",
2689
+ "templateRef": "dcw-temp-sp",
2690
+ "value": 175,
2691
+ "min": 160,
2692
+ "max": 180
2693
+ }
2694
+ ]
2695
+ },
2696
+ {
2697
+ "id": "rr-76ef5c67",
2698
+ "recipeId": "rc-8a659d97",
2699
+ "recipeName": "RB审计配方-33hss",
2700
+ "productId": "pd-fe39aac8",
2701
+ "lineId": "ln-f178ca43",
2702
+ "startedAt": "2026-08-31T16:30:44.897Z",
2703
+ "endedAt": "2026-08-31T16:30:45.793Z",
2704
+ "results": [
2705
+ {
2706
+ "templateRef": "dcw-temp-sp",
2707
+ "nodeId": "dw-88c0516b",
2708
+ "ok": true,
2709
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2710
+ "value": 175
2711
+ }
2712
+ ],
2713
+ "paramsSnapshot": [
2714
+ {
2715
+ "nodeId": "dw-88c0516b",
2716
+ "templateRef": "dcw-temp-sp",
2717
+ "value": 175,
2718
+ "min": 160,
2719
+ "max": 180
2720
+ }
2721
+ ]
2722
+ },
2723
+ {
2724
+ "id": "rr-1b10764f",
2725
+ "recipeId": "rc-8a659d97",
2726
+ "recipeName": "RB审计配方-33hss",
2727
+ "productId": "pd-fe39aac8",
2728
+ "lineId": "ln-f178ca43",
2729
+ "startedAt": "2026-08-31T16:30:45.847Z",
2730
+ "endedAt": "2026-08-31T16:30:46.110Z",
2731
+ "results": [
2732
+ {
2733
+ "templateRef": "dcw-temp-sp",
2734
+ "nodeId": "dw-88c0516b",
2735
+ "ok": true,
2736
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
2737
+ "value": 176
2738
+ }
2739
+ ],
2740
+ "paramsSnapshot": [
2741
+ {
2742
+ "nodeId": "dw-88c0516b",
2743
+ "templateRef": "dcw-temp-sp",
2744
+ "value": 176,
2745
+ "min": 160,
2746
+ "max": 180
2747
+ }
2748
+ ]
2749
+ },
2750
+ {
2751
+ "id": "rr-c1fe1e62",
2752
+ "recipeId": "rc-3287a8ce",
2753
+ "recipeName": "RB审计配方-krll7",
2754
+ "productId": "pd-27d1c3b1",
2755
+ "lineId": "ln-c9e7ccee",
2756
+ "startedAt": "2026-08-31T16:31:33.554Z",
2757
+ "endedAt": null,
2758
+ "results": [
2759
+ {
2760
+ "templateRef": "dcw-temp-sp",
2761
+ "nodeId": "dw-59561510",
2762
+ "ok": true,
2763
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2764
+ "value": 175
2765
+ }
2766
+ ],
2767
+ "paramsSnapshot": [
2768
+ {
2769
+ "nodeId": "dw-59561510",
2770
+ "templateRef": "dcw-temp-sp",
2771
+ "value": 175,
2772
+ "min": 160,
2773
+ "max": 180
2774
+ }
2775
+ ]
2776
+ },
2777
+ {
2778
+ "id": "rr-147e9d0f",
2779
+ "recipeId": "rc-3287a8ce",
2780
+ "recipeName": "RB审计配方-krll7",
2781
+ "productId": "pd-27d1c3b1",
2782
+ "lineId": "ln-c9e7ccee",
2783
+ "startedAt": "2026-08-31T16:31:38.092Z",
2784
+ "endedAt": "2026-08-31T16:31:39.054Z",
2785
+ "results": [
2786
+ {
2787
+ "templateRef": "dcw-temp-sp",
2788
+ "nodeId": "dw-59561510",
2789
+ "ok": true,
2790
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2791
+ "value": 175
2792
+ }
2793
+ ],
2794
+ "paramsSnapshot": [
2795
+ {
2796
+ "nodeId": "dw-59561510",
2797
+ "templateRef": "dcw-temp-sp",
2798
+ "value": 175,
2799
+ "min": 160,
2800
+ "max": 180
2801
+ }
2802
+ ]
2803
+ },
2804
+ {
2805
+ "id": "rr-f8b9a044",
2806
+ "recipeId": "rc-3287a8ce",
2807
+ "recipeName": "RB审计配方-krll7",
2808
+ "productId": "pd-27d1c3b1",
2809
+ "lineId": "ln-c9e7ccee",
2810
+ "startedAt": "2026-08-31T16:31:39.130Z",
2811
+ "endedAt": "2026-08-31T16:31:39.396Z",
2812
+ "results": [
2813
+ {
2814
+ "templateRef": "dcw-temp-sp",
2815
+ "nodeId": "dw-59561510",
2816
+ "ok": true,
2817
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
2818
+ "value": 176
2819
+ }
2820
+ ],
2821
+ "paramsSnapshot": [
2822
+ {
2823
+ "nodeId": "dw-59561510",
2824
+ "templateRef": "dcw-temp-sp",
2825
+ "value": 176,
2826
+ "min": 160,
2827
+ "max": 180
2828
+ }
2829
+ ]
2830
+ },
2831
+ {
2832
+ "id": "rr-b8b2b49a",
2833
+ "recipeId": "rc-1f6688c6",
2834
+ "recipeName": "OptE2E配方-zyuly",
2835
+ "productId": "pd-84d65e88",
2836
+ "lineId": "ln-2398a086",
2837
+ "startedAt": "2026-08-31T16:50:08.346Z",
2838
+ "endedAt": "2026-08-31T16:50:16.360Z",
2839
+ "results": [
2840
+ {
2841
+ "templateRef": "dcw-temp-sp",
2842
+ "nodeId": "dw-e3d030c1",
2843
+ "ok": true,
2844
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
2845
+ "value": 175
2846
+ }
2847
+ ],
2848
+ "paramsSnapshot": [
2849
+ {
2850
+ "nodeId": "dw-e3d030c1",
2851
+ "templateRef": "dcw-temp-sp",
2852
+ "value": 175
2853
+ }
2854
+ ]
2855
+ },
2856
+ {
2857
+ "id": "rr-9cd5076e",
2858
+ "recipeId": "rc-7bf584db",
2859
+ "recipeName": "A-标准工艺",
2860
+ "productId": "pd-6348a595",
2861
+ "lineId": "ln-af002514",
2862
+ "startedAt": "2026-08-31T16:54:28.592Z",
2863
+ "endedAt": "2026-09-01T10:58:08.123Z",
2864
+ "results": [
2865
+ {
2866
+ "templateRef": "dcw-temp-sp",
2867
+ "nodeId": "dw-322b1978",
2868
+ "ok": true,
2869
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
2870
+ "value": 182
2871
+ },
2872
+ {
2873
+ "templateRef": "dcw-pressure-sp",
2874
+ "nodeId": "dw-e92bb0e7",
2875
+ "ok": true,
2876
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
2877
+ "value": 0.92
2878
+ }
2879
+ ],
2880
+ "paramsSnapshot": [
2881
+ {
2882
+ "nodeId": "dw-322b1978",
2883
+ "templateRef": "dcw-temp-sp",
2884
+ "value": 182,
2885
+ "min": 176,
2886
+ "max": 188
2887
+ },
2888
+ {
2889
+ "nodeId": "dw-e92bb0e7",
2890
+ "templateRef": "dcw-pressure-sp",
2891
+ "value": 0.92,
2892
+ "min": 0.85,
2893
+ "max": 1
2894
+ }
2895
+ ]
2896
+ },
2897
+ {
2898
+ "id": "rr-60a40fba",
2899
+ "recipeId": "rc-d842ce34",
2900
+ "recipeName": "审计配方-光学膜",
2901
+ "productId": "pd-444c4e51",
2902
+ "lineId": "ln-55777b19",
2903
+ "startedAt": "2026-08-31T17:13:40.662Z",
2904
+ "endedAt": "2026-08-31T17:13:44.396Z",
2905
+ "results": [
2906
+ {
2907
+ "templateRef": "dcw-temp-sp",
2908
+ "nodeId": "dw-e7580542",
2909
+ "ok": true,
2910
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
2911
+ "value": 185
2912
+ },
2913
+ {
2914
+ "templateRef": "dcw-cw-003cab6d",
2915
+ "nodeId": null,
2916
+ "ok": false,
2917
+ "message": "目标控制节点不存在(dw-49bf0e30),参数未下发",
2918
+ "value": 320
2919
+ }
2920
+ ],
2921
+ "paramsSnapshot": [
2922
+ {
2923
+ "nodeId": "dw-e7580542",
2924
+ "templateRef": "dcw-temp-sp",
2925
+ "value": 185
2926
+ },
2927
+ {
2928
+ "nodeId": "dw-49bf0e30",
2929
+ "templateRef": "dcw-cw-003cab6d",
2930
+ "value": 320
2931
+ }
2932
+ ]
2933
+ },
2934
+ {
2935
+ "id": "rr-67f0a960",
2936
+ "recipeId": "rc-b7d4cd8c",
2937
+ "recipeName": "审计配方-B",
2938
+ "productId": "pd-444c4e51",
2939
+ "lineId": "ln-55777b19",
2940
+ "startedAt": "2026-08-31T17:13:41.678Z",
2941
+ "endedAt": "2026-08-31T17:13:44.498Z",
2942
+ "results": [
2943
+ {
2944
+ "templateRef": "dcw-temp-sp",
2945
+ "nodeId": "dw-e7580542",
2946
+ "ok": true,
2947
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
2948
+ "value": 160
2949
+ }
2950
+ ],
2951
+ "paramsSnapshot": [
2952
+ {
2953
+ "nodeId": "dw-e7580542",
2954
+ "templateRef": "dcw-temp-sp",
2955
+ "value": 160
2956
+ }
2957
+ ]
2958
+ },
2959
+ {
2960
+ "id": "rr-3a793567",
2961
+ "recipeId": "rc-9f4e3fb4",
2962
+ "recipeName": "审计配方-光学膜",
2963
+ "productId": "pd-3a6ee283",
2964
+ "lineId": "ln-58cd4370",
2965
+ "startedAt": "2026-08-31T17:15:36.168Z",
2966
+ "endedAt": "2026-08-31T17:15:39.983Z",
2967
+ "results": [
2968
+ {
2969
+ "templateRef": "dcw-temp-sp",
2970
+ "nodeId": "dw-1a945890",
2971
+ "ok": true,
2972
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
2973
+ "value": 185
2974
+ },
2975
+ {
2976
+ "templateRef": "dcw-cw-7993ef27",
2977
+ "nodeId": null,
2978
+ "ok": false,
2979
+ "message": "目标控制节点不存在(dw-82ad805a),参数未下发",
2980
+ "value": 320
2981
+ }
2982
+ ],
2983
+ "paramsSnapshot": [
2984
+ {
2985
+ "nodeId": "dw-1a945890",
2986
+ "templateRef": "dcw-temp-sp",
2987
+ "value": 185
2988
+ },
2989
+ {
2990
+ "nodeId": "dw-82ad805a",
2991
+ "templateRef": "dcw-cw-7993ef27",
2992
+ "value": 320
2993
+ }
2994
+ ]
2995
+ },
2996
+ {
2997
+ "id": "rr-c34125e7",
2998
+ "recipeId": "rc-6ce85e00",
2999
+ "recipeName": "审计配方-B",
3000
+ "productId": "pd-3a6ee283",
3001
+ "lineId": "ln-58cd4370",
3002
+ "startedAt": "2026-08-31T17:15:37.247Z",
3003
+ "endedAt": "2026-08-31T17:15:40.107Z",
3004
+ "results": [
3005
+ {
3006
+ "templateRef": "dcw-temp-sp",
3007
+ "nodeId": "dw-1a945890",
3008
+ "ok": true,
3009
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
3010
+ "value": 160
3011
+ }
3012
+ ],
3013
+ "paramsSnapshot": [
3014
+ {
3015
+ "nodeId": "dw-1a945890",
3016
+ "templateRef": "dcw-temp-sp",
3017
+ "value": 160
3018
+ }
3019
+ ]
3020
+ },
3021
+ {
3022
+ "id": "rr-b5c4d4cc",
3023
+ "recipeId": "rc-5d63759f",
3024
+ "recipeName": "RB审计配方-mnglc",
3025
+ "productId": "pd-101beb88",
3026
+ "lineId": "ln-1b52b78a",
3027
+ "startedAt": "2026-09-01T01:32:07.246Z",
3028
+ "endedAt": null,
3029
+ "results": [
3030
+ {
3031
+ "templateRef": "dcw-temp-sp",
3032
+ "nodeId": "dw-0fcc812e",
3033
+ "ok": true,
3034
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3035
+ "value": 175
3036
+ }
3037
+ ],
3038
+ "paramsSnapshot": [
3039
+ {
3040
+ "nodeId": "dw-0fcc812e",
3041
+ "templateRef": "dcw-temp-sp",
3042
+ "value": 175,
3043
+ "min": 160,
3044
+ "max": 180
3045
+ }
3046
+ ]
3047
+ },
3048
+ {
3049
+ "id": "rr-e347432b",
3050
+ "recipeId": "rc-5d63759f",
3051
+ "recipeName": "RB审计配方-mnglc",
3052
+ "productId": "pd-101beb88",
3053
+ "lineId": "ln-1b52b78a",
3054
+ "startedAt": "2026-09-01T01:32:11.812Z",
3055
+ "endedAt": "2026-09-01T01:32:12.885Z",
3056
+ "results": [
3057
+ {
3058
+ "templateRef": "dcw-temp-sp",
3059
+ "nodeId": "dw-0fcc812e",
3060
+ "ok": true,
3061
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3062
+ "value": 175
3063
+ }
3064
+ ],
3065
+ "paramsSnapshot": [
3066
+ {
3067
+ "nodeId": "dw-0fcc812e",
3068
+ "templateRef": "dcw-temp-sp",
3069
+ "value": 175,
3070
+ "min": 160,
3071
+ "max": 180
3072
+ }
3073
+ ]
3074
+ },
3075
+ {
3076
+ "id": "rr-fe9e6729",
3077
+ "recipeId": "rc-5d63759f",
3078
+ "recipeName": "RB审计配方-mnglc",
3079
+ "productId": "pd-101beb88",
3080
+ "lineId": "ln-1b52b78a",
3081
+ "startedAt": "2026-09-01T01:32:13.041Z",
3082
+ "endedAt": "2026-09-01T01:32:13.336Z",
3083
+ "results": [
3084
+ {
3085
+ "templateRef": "dcw-temp-sp",
3086
+ "nodeId": "dw-0fcc812e",
3087
+ "ok": true,
3088
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
3089
+ "value": 176
3090
+ }
3091
+ ],
3092
+ "paramsSnapshot": [
3093
+ {
3094
+ "nodeId": "dw-0fcc812e",
3095
+ "templateRef": "dcw-temp-sp",
3096
+ "value": 176,
3097
+ "min": 160,
3098
+ "max": 180
3099
+ }
3100
+ ]
3101
+ },
3102
+ {
3103
+ "id": "rr-7af6220c",
3104
+ "recipeId": "rc-71191078",
3105
+ "recipeName": "审计配方-光学膜",
3106
+ "productId": "pd-7984af55",
3107
+ "lineId": "ln-d8711744",
3108
+ "startedAt": "2026-09-01T02:18:32.252Z",
3109
+ "endedAt": "2026-09-01T02:18:36.260Z",
3110
+ "results": [
3111
+ {
3112
+ "templateRef": "dcw-temp-sp",
3113
+ "nodeId": "dw-108a870f",
3114
+ "ok": true,
3115
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
3116
+ "value": 185
3117
+ },
3118
+ {
3119
+ "templateRef": "dcw-cw-cdaf2308",
3120
+ "nodeId": null,
3121
+ "ok": false,
3122
+ "message": "目标控制节点不存在(dw-8afd7fa3),参数未下发",
3123
+ "value": 320
3124
+ }
3125
+ ],
3126
+ "paramsSnapshot": [
3127
+ {
3128
+ "nodeId": "dw-108a870f",
3129
+ "templateRef": "dcw-temp-sp",
3130
+ "value": 185
3131
+ },
3132
+ {
3133
+ "nodeId": "dw-8afd7fa3",
3134
+ "templateRef": "dcw-cw-cdaf2308",
3135
+ "value": 320
3136
+ }
3137
+ ]
3138
+ },
3139
+ {
3140
+ "id": "rr-2460d225",
3141
+ "recipeId": "rc-5587f950",
3142
+ "recipeName": "审计配方-B",
3143
+ "productId": "pd-7984af55",
3144
+ "lineId": "ln-d8711744",
3145
+ "startedAt": "2026-09-01T02:18:33.388Z",
3146
+ "endedAt": "2026-09-01T02:18:36.379Z",
3147
+ "results": [
3148
+ {
3149
+ "templateRef": "dcw-temp-sp",
3150
+ "nodeId": "dw-108a870f",
3151
+ "ok": true,
3152
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
3153
+ "value": 160
3154
+ }
3155
+ ],
3156
+ "paramsSnapshot": [
3157
+ {
3158
+ "nodeId": "dw-108a870f",
3159
+ "templateRef": "dcw-temp-sp",
3160
+ "value": 160
3161
+ }
3162
+ ]
3163
+ },
3164
+ {
3165
+ "id": "rr-d5a72e87",
3166
+ "recipeId": "rc-097eefba",
3167
+ "recipeName": "RB审计配方-bgaud",
3168
+ "productId": "pd-eb46776c",
3169
+ "lineId": "ln-b689deb1",
3170
+ "startedAt": "2026-09-01T02:24:35.144Z",
3171
+ "endedAt": null,
3172
+ "results": [
3173
+ {
3174
+ "templateRef": "dcw-temp-sp",
3175
+ "nodeId": "dw-ffff7cae",
3176
+ "ok": true,
3177
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3178
+ "value": 175
3179
+ }
3180
+ ],
3181
+ "paramsSnapshot": [
3182
+ {
3183
+ "nodeId": "dw-ffff7cae",
3184
+ "templateRef": "dcw-temp-sp",
3185
+ "value": 175,
3186
+ "min": 160,
3187
+ "max": 180
3188
+ }
3189
+ ]
3190
+ },
3191
+ {
3192
+ "id": "rr-8fae80ea",
3193
+ "recipeId": "rc-097eefba",
3194
+ "recipeName": "RB审计配方-bgaud",
3195
+ "productId": "pd-eb46776c",
3196
+ "lineId": "ln-b689deb1",
3197
+ "startedAt": "2026-09-01T02:24:39.630Z",
3198
+ "endedAt": "2026-09-01T02:24:40.715Z",
3199
+ "results": [
3200
+ {
3201
+ "templateRef": "dcw-temp-sp",
3202
+ "nodeId": "dw-ffff7cae",
3203
+ "ok": true,
3204
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3205
+ "value": 175
3206
+ }
3207
+ ],
3208
+ "paramsSnapshot": [
3209
+ {
3210
+ "nodeId": "dw-ffff7cae",
3211
+ "templateRef": "dcw-temp-sp",
3212
+ "value": 175,
3213
+ "min": 160,
3214
+ "max": 180
3215
+ }
3216
+ ]
3217
+ },
3218
+ {
3219
+ "id": "rr-ba7b864a",
3220
+ "recipeId": "rc-097eefba",
3221
+ "recipeName": "RB审计配方-bgaud",
3222
+ "productId": "pd-eb46776c",
3223
+ "lineId": "ln-b689deb1",
3224
+ "startedAt": "2026-09-01T02:24:40.791Z",
3225
+ "endedAt": "2026-09-01T02:24:41.073Z",
3226
+ "results": [
3227
+ {
3228
+ "templateRef": "dcw-temp-sp",
3229
+ "nodeId": "dw-ffff7cae",
3230
+ "ok": true,
3231
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
3232
+ "value": 176
3233
+ }
3234
+ ],
3235
+ "paramsSnapshot": [
3236
+ {
3237
+ "nodeId": "dw-ffff7cae",
3238
+ "templateRef": "dcw-temp-sp",
3239
+ "value": 176,
3240
+ "min": 160,
3241
+ "max": 180
3242
+ }
3243
+ ]
3244
+ },
3245
+ {
3246
+ "id": "rr-6ef1d102",
3247
+ "recipeId": "rc-931ea39e",
3248
+ "recipeName": "警告验证配方-k2xh",
3249
+ "productId": "pd-7e69e0ee",
3250
+ "lineId": "ln-c377a6bf",
3251
+ "startedAt": "2026-09-01T03:23:18.233Z",
3252
+ "endedAt": null,
3253
+ "results": [
3254
+ {
3255
+ "templateRef": "dcw-temp-sp",
3256
+ "nodeId": "dw-2ae6479a",
3257
+ "ok": true,
3258
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3259
+ "value": 175
3260
+ }
3261
+ ],
3262
+ "paramsSnapshot": [
3263
+ {
3264
+ "nodeId": "dw-2ae6479a",
3265
+ "templateRef": "dcw-temp-sp",
3266
+ "value": 175
3267
+ }
3268
+ ]
3269
+ },
3270
+ {
3271
+ "id": "rr-e6d38d2d",
3272
+ "recipeId": "rc-f48062a3",
3273
+ "recipeName": "审计配方-光学膜",
3274
+ "productId": "pd-a51333a1",
3275
+ "lineId": "ln-696bff5d",
3276
+ "startedAt": "2026-09-01T05:35:33.565Z",
3277
+ "endedAt": "2026-09-01T05:35:37.224Z",
3278
+ "results": [
3279
+ {
3280
+ "templateRef": "dcw-temp-sp",
3281
+ "nodeId": "dw-78cfe341",
3282
+ "ok": true,
3283
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
3284
+ "value": 185
3285
+ },
3286
+ {
3287
+ "templateRef": "dcw-cw-27c274e9",
3288
+ "nodeId": null,
3289
+ "ok": false,
3290
+ "message": "目标控制节点不存在(dw-d3ec8748),参数未下发",
3291
+ "value": 320
3292
+ }
3293
+ ],
3294
+ "paramsSnapshot": [
3295
+ {
3296
+ "nodeId": "dw-78cfe341",
3297
+ "templateRef": "dcw-temp-sp",
3298
+ "value": 185
3299
+ },
3300
+ {
3301
+ "nodeId": "dw-d3ec8748",
3302
+ "templateRef": "dcw-cw-27c274e9",
3303
+ "value": 320
3304
+ }
3305
+ ]
3306
+ },
3307
+ {
3308
+ "id": "rr-8fcdc0a4",
3309
+ "recipeId": "rc-345508d5",
3310
+ "recipeName": "审计配方-B",
3311
+ "productId": "pd-a51333a1",
3312
+ "lineId": "ln-696bff5d",
3313
+ "startedAt": "2026-09-01T05:35:34.543Z",
3314
+ "endedAt": "2026-09-01T05:35:37.325Z",
3315
+ "results": [
3316
+ {
3317
+ "templateRef": "dcw-temp-sp",
3318
+ "nodeId": "dw-78cfe341",
3319
+ "ok": true,
3320
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
3321
+ "value": 160
3322
+ }
3323
+ ],
3324
+ "paramsSnapshot": [
3325
+ {
3326
+ "nodeId": "dw-78cfe341",
3327
+ "templateRef": "dcw-temp-sp",
3328
+ "value": 160
3329
+ }
3330
+ ]
3331
+ },
3332
+ {
3333
+ "id": "rr-2e73d103",
3334
+ "recipeId": "rc-49086bee",
3335
+ "recipeName": "审计配方-光学膜",
3336
+ "productId": "pd-0d2fadad",
3337
+ "lineId": "ln-c25d5a69",
3338
+ "startedAt": "2026-09-01T05:36:07.924Z",
3339
+ "endedAt": "2026-09-01T05:36:11.579Z",
3340
+ "results": [
3341
+ {
3342
+ "templateRef": "dcw-temp-sp",
3343
+ "nodeId": "dw-4867e139",
3344
+ "ok": true,
3345
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
3346
+ "value": 185
3347
+ },
3348
+ {
3349
+ "templateRef": "dcw-cw-5c97a806",
3350
+ "nodeId": null,
3351
+ "ok": false,
3352
+ "message": "目标控制节点不存在(dw-991453d7),参数未下发",
3353
+ "value": 320
3354
+ }
3355
+ ],
3356
+ "paramsSnapshot": [
3357
+ {
3358
+ "nodeId": "dw-4867e139",
3359
+ "templateRef": "dcw-temp-sp",
3360
+ "value": 185
3361
+ },
3362
+ {
3363
+ "nodeId": "dw-991453d7",
3364
+ "templateRef": "dcw-cw-5c97a806",
3365
+ "value": 320
3366
+ }
3367
+ ]
3368
+ },
3369
+ {
3370
+ "id": "rr-ce7b2ee8",
3371
+ "recipeId": "rc-42f7ca42",
3372
+ "recipeName": "审计配方-B",
3373
+ "productId": "pd-0d2fadad",
3374
+ "lineId": "ln-c25d5a69",
3375
+ "startedAt": "2026-09-01T05:36:08.918Z",
3376
+ "endedAt": "2026-09-01T05:36:11.682Z",
3377
+ "results": [
3378
+ {
3379
+ "templateRef": "dcw-temp-sp",
3380
+ "nodeId": "dw-4867e139",
3381
+ "ok": true,
3382
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
3383
+ "value": 160
3384
+ }
3385
+ ],
3386
+ "paramsSnapshot": [
3387
+ {
3388
+ "nodeId": "dw-4867e139",
3389
+ "templateRef": "dcw-temp-sp",
3390
+ "value": 160
3391
+ }
3392
+ ]
3393
+ },
3394
+ {
3395
+ "id": "rr-09f8e551",
3396
+ "recipeId": "rc-54b67e8b",
3397
+ "recipeName": "审计配方-光学膜",
3398
+ "productId": "pd-f24aee53",
3399
+ "lineId": "ln-1416a1dc",
3400
+ "startedAt": "2026-09-01T05:37:18.282Z",
3401
+ "endedAt": "2026-09-01T05:37:21.911Z",
3402
+ "results": [
3403
+ {
3404
+ "templateRef": "dcw-temp-sp",
3405
+ "nodeId": "dw-94c73ff5",
3406
+ "ok": true,
3407
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
3408
+ "value": 185
3409
+ },
3410
+ {
3411
+ "templateRef": "dcw-cw-a763c9a6",
3412
+ "nodeId": null,
3413
+ "ok": false,
3414
+ "message": "目标控制节点不存在(dw-193ee07e),参数未下发",
3415
+ "value": 320
3416
+ }
3417
+ ],
3418
+ "paramsSnapshot": [
3419
+ {
3420
+ "nodeId": "dw-94c73ff5",
3421
+ "templateRef": "dcw-temp-sp",
3422
+ "value": 185
3423
+ },
3424
+ {
3425
+ "nodeId": "dw-193ee07e",
3426
+ "templateRef": "dcw-cw-a763c9a6",
3427
+ "value": 320
3428
+ }
3429
+ ]
3430
+ },
3431
+ {
3432
+ "id": "rr-58305057",
3433
+ "recipeId": "rc-d3e15775",
3434
+ "recipeName": "审计配方-B",
3435
+ "productId": "pd-f24aee53",
3436
+ "lineId": "ln-1416a1dc",
3437
+ "startedAt": "2026-09-01T05:37:19.234Z",
3438
+ "endedAt": "2026-09-01T05:37:22.047Z",
3439
+ "results": [
3440
+ {
3441
+ "templateRef": "dcw-temp-sp",
3442
+ "nodeId": "dw-94c73ff5",
3443
+ "ok": true,
3444
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
3445
+ "value": 160
3446
+ }
3447
+ ],
3448
+ "paramsSnapshot": [
3449
+ {
3450
+ "nodeId": "dw-94c73ff5",
3451
+ "templateRef": "dcw-temp-sp",
3452
+ "value": 160
3453
+ }
3454
+ ]
3455
+ },
3456
+ {
3457
+ "id": "rr-e4440882",
3458
+ "recipeId": "rc-2646fe45",
3459
+ "recipeName": "新协议配方-9xhn",
3460
+ "productId": "pd-910c0fa8",
3461
+ "lineId": "ln-9224d3d7",
3462
+ "startedAt": "2026-09-01T05:59:24.062Z",
3463
+ "endedAt": null,
3464
+ "results": [
3465
+ {
3466
+ "templateRef": "dcw-temp-sp",
3467
+ "nodeId": "dw-70617503",
3468
+ "ok": true,
3469
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3470
+ "value": 175
3471
+ }
3472
+ ],
3473
+ "paramsSnapshot": [
3474
+ {
3475
+ "nodeId": "dw-70617503",
3476
+ "templateRef": "dcw-temp-sp",
3477
+ "value": 175
3478
+ }
3479
+ ]
3480
+ },
3481
+ {
3482
+ "id": "rr-daa3a33c",
3483
+ "recipeId": "rc-65148267",
3484
+ "recipeName": "新协议配方-6ofk",
3485
+ "productId": "pd-2d4f9357",
3486
+ "lineId": "ln-386c53ed",
3487
+ "startedAt": "2026-09-01T06:05:53.063Z",
3488
+ "endedAt": null,
3489
+ "results": [
3490
+ {
3491
+ "templateRef": "dcw-temp-sp",
3492
+ "nodeId": "dw-39b4f326",
3493
+ "ok": true,
3494
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3495
+ "value": 175
3496
+ }
3497
+ ],
3498
+ "paramsSnapshot": [
3499
+ {
3500
+ "nodeId": "dw-39b4f326",
3501
+ "templateRef": "dcw-temp-sp",
3502
+ "value": 175
3503
+ }
3504
+ ]
3505
+ },
3506
+ {
3507
+ "id": "rr-5ddab54b",
3508
+ "recipeId": "rc-2035519c",
3509
+ "recipeName": "新协议配方-x4hd",
3510
+ "productId": "pd-a3ed5047",
3511
+ "lineId": "ln-5957f6db",
3512
+ "startedAt": "2026-09-01T06:09:02.148Z",
3513
+ "endedAt": null,
3514
+ "results": [
3515
+ {
3516
+ "templateRef": "dcw-temp-sp",
3517
+ "nodeId": "dw-f3540393",
3518
+ "ok": true,
3519
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3520
+ "value": 175
3521
+ }
3522
+ ],
3523
+ "paramsSnapshot": [
3524
+ {
3525
+ "nodeId": "dw-f3540393",
3526
+ "templateRef": "dcw-temp-sp",
3527
+ "value": 175
3528
+ }
3529
+ ]
3530
+ },
3531
+ {
3532
+ "id": "rr-8001b409",
3533
+ "recipeId": "rc-5288dab4",
3534
+ "recipeName": "新协议配方-teti",
3535
+ "productId": "pd-5de729c0",
3536
+ "lineId": "ln-9ec42f08",
3537
+ "startedAt": "2026-09-01T06:13:44.315Z",
3538
+ "endedAt": null,
3539
+ "results": [
3540
+ {
3541
+ "templateRef": "dcw-temp-sp",
3542
+ "nodeId": "dw-15a041c4",
3543
+ "ok": true,
3544
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3545
+ "value": 175
3546
+ }
3547
+ ],
3548
+ "paramsSnapshot": [
3549
+ {
3550
+ "nodeId": "dw-15a041c4",
3551
+ "templateRef": "dcw-temp-sp",
3552
+ "value": 175
3553
+ }
3554
+ ]
3555
+ },
3556
+ {
3557
+ "id": "rr-6dd2d118",
3558
+ "recipeId": "rc-75e0c87d",
3559
+ "recipeName": "新协议配方-fg8t",
3560
+ "productId": "pd-45eb8d43",
3561
+ "lineId": "ln-69e37924",
3562
+ "startedAt": "2026-09-01T06:16:47.469Z",
3563
+ "endedAt": null,
3564
+ "results": [
3565
+ {
3566
+ "templateRef": "dcw-temp-sp",
3567
+ "nodeId": "dw-a35fc034",
3568
+ "ok": true,
3569
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3570
+ "value": 175
3571
+ }
3572
+ ],
3573
+ "paramsSnapshot": [
3574
+ {
3575
+ "nodeId": "dw-a35fc034",
3576
+ "templateRef": "dcw-temp-sp",
3577
+ "value": 175
3578
+ }
3579
+ ]
3580
+ },
3581
+ {
3582
+ "id": "rr-17af0312",
3583
+ "recipeId": "rc-8260dd38",
3584
+ "recipeName": "新协议配方-w2sp",
3585
+ "productId": "pd-b3bd0191",
3586
+ "lineId": "ln-c269e692",
3587
+ "startedAt": "2026-09-01T06:56:05.893Z",
3588
+ "endedAt": null,
3589
+ "results": [
3590
+ {
3591
+ "templateRef": "dcw-temp-sp",
3592
+ "nodeId": "dw-34d14f82",
3593
+ "ok": true,
3594
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3595
+ "value": 175
3596
+ }
3597
+ ],
3598
+ "paramsSnapshot": [
3599
+ {
3600
+ "nodeId": "dw-34d14f82",
3601
+ "templateRef": "dcw-temp-sp",
3602
+ "value": 175
3603
+ }
3604
+ ]
3605
+ },
3606
+ {
3607
+ "id": "rr-c55cf6f1",
3608
+ "recipeId": "rc-28ca88e4",
3609
+ "recipeName": "新协议配方-lp4h",
3610
+ "productId": "pd-06b896f9",
3611
+ "lineId": "ln-229d1637",
3612
+ "startedAt": "2026-09-01T06:57:29.288Z",
3613
+ "endedAt": null,
3614
+ "results": [
3615
+ {
3616
+ "templateRef": "dcw-temp-sp",
3617
+ "nodeId": "dw-bc21ed2d",
3618
+ "ok": true,
3619
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3620
+ "value": 175
3621
+ }
3622
+ ],
3623
+ "paramsSnapshot": [
3624
+ {
3625
+ "nodeId": "dw-bc21ed2d",
3626
+ "templateRef": "dcw-temp-sp",
3627
+ "value": 175
3628
+ }
3629
+ ]
3630
+ },
3631
+ {
3632
+ "id": "rr-c960d74e",
3633
+ "recipeId": "rc-a3c0effc",
3634
+ "recipeName": "新协议配方-jri6",
3635
+ "productId": "pd-53e55078",
3636
+ "lineId": "ln-9546f91f",
3637
+ "startedAt": "2026-09-01T07:00:25.059Z",
3638
+ "endedAt": null,
3639
+ "results": [
3640
+ {
3641
+ "templateRef": "dcw-temp-sp",
3642
+ "nodeId": "dw-a3c5d845",
3643
+ "ok": true,
3644
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3645
+ "value": 175
3646
+ }
3647
+ ],
3648
+ "paramsSnapshot": [
3649
+ {
3650
+ "nodeId": "dw-a3c5d845",
3651
+ "templateRef": "dcw-temp-sp",
3652
+ "value": 175
3653
+ }
3654
+ ]
3655
+ },
3656
+ {
3657
+ "id": "rr-4e52bbd2",
3658
+ "recipeId": "rc-5ee1dde0",
3659
+ "recipeName": "新协议配方-4c2d",
3660
+ "productId": "pd-e7e969af",
3661
+ "lineId": "ln-087aad5b",
3662
+ "startedAt": "2026-09-01T07:09:07.307Z",
3663
+ "endedAt": null,
3664
+ "results": [
3665
+ {
3666
+ "templateRef": "dcw-temp-sp",
3667
+ "nodeId": "dw-7c0b3e43",
3668
+ "ok": true,
3669
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3670
+ "value": 175
3671
+ }
3672
+ ],
3673
+ "paramsSnapshot": [
3674
+ {
3675
+ "nodeId": "dw-7c0b3e43",
3676
+ "templateRef": "dcw-temp-sp",
3677
+ "value": 175
3678
+ }
3679
+ ]
3680
+ },
3681
+ {
3682
+ "id": "rr-73a827c9",
3683
+ "recipeId": "rc-b308f7a0",
3684
+ "recipeName": "新协议配方-b2ni",
3685
+ "productId": "pd-28a3ab2c",
3686
+ "lineId": "ln-97d44f8a",
3687
+ "startedAt": "2026-09-01T07:13:44.912Z",
3688
+ "endedAt": null,
3689
+ "results": [
3690
+ {
3691
+ "templateRef": "dcw-temp-sp",
3692
+ "nodeId": "dw-ab295a2a",
3693
+ "ok": true,
3694
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3695
+ "value": 175
3696
+ }
3697
+ ],
3698
+ "paramsSnapshot": [
3699
+ {
3700
+ "nodeId": "dw-ab295a2a",
3701
+ "templateRef": "dcw-temp-sp",
3702
+ "value": 175
3703
+ }
3704
+ ]
3705
+ },
3706
+ {
3707
+ "id": "rr-59ac2a5c",
3708
+ "recipeId": "rc-787e31c8",
3709
+ "recipeName": "新协议配方-uwkf",
3710
+ "productId": "pd-0c6a64c8",
3711
+ "lineId": "ln-a9551770",
3712
+ "startedAt": "2026-09-01T07:15:40.113Z",
3713
+ "endedAt": null,
3714
+ "results": [
3715
+ {
3716
+ "templateRef": "dcw-temp-sp",
3717
+ "nodeId": "dw-69140fbd",
3718
+ "ok": true,
3719
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3720
+ "value": 175
3721
+ }
3722
+ ],
3723
+ "paramsSnapshot": [
3724
+ {
3725
+ "nodeId": "dw-69140fbd",
3726
+ "templateRef": "dcw-temp-sp",
3727
+ "value": 175
3728
+ }
3729
+ ]
3730
+ },
3731
+ {
3732
+ "id": "rr-85432914",
3733
+ "recipeId": "rc-45bfddef",
3734
+ "recipeName": "OptE2E配方-7rw3g",
3735
+ "productId": "pd-1b50c6b3",
3736
+ "lineId": "ln-635c2cfa",
3737
+ "startedAt": "2026-09-01T07:16:12.675Z",
3738
+ "endedAt": "2026-09-01T07:16:43.964Z",
3739
+ "results": [
3740
+ {
3741
+ "templateRef": "dcw-temp-sp",
3742
+ "nodeId": "dw-752f7248",
3743
+ "ok": true,
3744
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3745
+ "value": 175
3746
+ }
3747
+ ],
3748
+ "paramsSnapshot": [
3749
+ {
3750
+ "nodeId": "dw-752f7248",
3751
+ "templateRef": "dcw-temp-sp",
3752
+ "value": 175
3753
+ }
3754
+ ]
3755
+ },
3756
+ {
3757
+ "id": "rr-c7e188b3",
3758
+ "recipeId": "rc-4fe4254d",
3759
+ "recipeName": "OptE2E配方-cdxah",
3760
+ "productId": "pd-e357ab16",
3761
+ "lineId": "ln-6f95b193",
3762
+ "startedAt": "2026-09-01T07:17:08.793Z",
3763
+ "endedAt": "2026-09-01T07:17:40.161Z",
3764
+ "results": [
3765
+ {
3766
+ "templateRef": "dcw-temp-sp",
3767
+ "nodeId": "dw-58285250",
3768
+ "ok": true,
3769
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3770
+ "value": 175
3771
+ }
3772
+ ],
3773
+ "paramsSnapshot": [
3774
+ {
3775
+ "nodeId": "dw-58285250",
3776
+ "templateRef": "dcw-temp-sp",
3777
+ "value": 175
3778
+ }
3779
+ ]
3780
+ },
3781
+ {
3782
+ "id": "rr-c2950fef",
3783
+ "recipeId": "rc-4e99da3b",
3784
+ "recipeName": "OptE2E配方-n709o",
3785
+ "productId": "pd-18093638",
3786
+ "lineId": "ln-b8caafb9",
3787
+ "startedAt": "2026-09-01T07:20:58.115Z",
3788
+ "endedAt": "2026-09-01T07:21:29.474Z",
3789
+ "results": [
3790
+ {
3791
+ "templateRef": "dcw-temp-sp",
3792
+ "nodeId": "dw-86a40f81",
3793
+ "ok": true,
3794
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3795
+ "value": 175
3796
+ }
3797
+ ],
3798
+ "paramsSnapshot": [
3799
+ {
3800
+ "nodeId": "dw-86a40f81",
3801
+ "templateRef": "dcw-temp-sp",
3802
+ "value": 175
3803
+ }
3804
+ ]
3805
+ },
3806
+ {
3807
+ "id": "rr-accd07dd",
3808
+ "recipeId": "rc-91f44b9e",
3809
+ "recipeName": "OptE2E配方-h3ipg",
3810
+ "productId": "pd-6c7bf51a",
3811
+ "lineId": "ln-cff04274",
3812
+ "startedAt": "2026-09-01T07:22:56.817Z",
3813
+ "endedAt": "2026-09-01T07:23:03.473Z",
3814
+ "results": [
3815
+ {
3816
+ "templateRef": "dcw-temp-sp",
3817
+ "nodeId": "dw-4299d203",
3818
+ "ok": true,
3819
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3820
+ "value": 175
3821
+ }
3822
+ ],
3823
+ "paramsSnapshot": [
3824
+ {
3825
+ "nodeId": "dw-4299d203",
3826
+ "templateRef": "dcw-temp-sp",
3827
+ "value": 175
3828
+ }
3829
+ ]
3830
+ },
3831
+ {
3832
+ "id": "rr-f4766d69",
3833
+ "recipeId": "rc-97224776",
3834
+ "recipeName": "OptE2E配方-gjx7a",
3835
+ "productId": "pd-0c922536",
3836
+ "lineId": "ln-4746929d",
3837
+ "startedAt": "2026-09-01T07:28:05.848Z",
3838
+ "endedAt": "2026-09-01T07:28:14.044Z",
3839
+ "results": [
3840
+ {
3841
+ "templateRef": "dcw-temp-sp",
3842
+ "nodeId": "dw-acdba874",
3843
+ "ok": true,
3844
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3845
+ "value": 175
3846
+ }
3847
+ ],
3848
+ "paramsSnapshot": [
3849
+ {
3850
+ "nodeId": "dw-acdba874",
3851
+ "templateRef": "dcw-temp-sp",
3852
+ "value": 175
3853
+ }
3854
+ ]
3855
+ },
3856
+ {
3857
+ "id": "rr-93f14594",
3858
+ "recipeId": "rc-54afa03d",
3859
+ "recipeName": "RB审计配方-ikk0g",
3860
+ "productId": "pd-218705f2",
3861
+ "lineId": "ln-fd22576a",
3862
+ "startedAt": "2026-09-01T07:28:24.542Z",
3863
+ "endedAt": null,
3864
+ "results": [
3865
+ {
3866
+ "templateRef": "dcw-temp-sp",
3867
+ "nodeId": "dw-4eac72b6",
3868
+ "ok": true,
3869
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3870
+ "value": 175
3871
+ }
3872
+ ],
3873
+ "paramsSnapshot": [
3874
+ {
3875
+ "nodeId": "dw-4eac72b6",
3876
+ "templateRef": "dcw-temp-sp",
3877
+ "value": 175,
3878
+ "min": 160,
3879
+ "max": 180
3880
+ }
3881
+ ]
3882
+ },
3883
+ {
3884
+ "id": "rr-b0601b72",
3885
+ "recipeId": "rc-54afa03d",
3886
+ "recipeName": "RB审计配方-ikk0g",
3887
+ "productId": "pd-218705f2",
3888
+ "lineId": "ln-fd22576a",
3889
+ "startedAt": "2026-09-01T07:28:29.153Z",
3890
+ "endedAt": "2026-09-01T07:28:30.115Z",
3891
+ "results": [
3892
+ {
3893
+ "templateRef": "dcw-temp-sp",
3894
+ "nodeId": "dw-4eac72b6",
3895
+ "ok": true,
3896
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
3897
+ "value": 175
3898
+ }
3899
+ ],
3900
+ "paramsSnapshot": [
3901
+ {
3902
+ "nodeId": "dw-4eac72b6",
3903
+ "templateRef": "dcw-temp-sp",
3904
+ "value": 175,
3905
+ "min": 160,
3906
+ "max": 180
3907
+ }
3908
+ ]
3909
+ },
3910
+ {
3911
+ "id": "rr-e79c8bfe",
3912
+ "recipeId": "rc-54afa03d",
3913
+ "recipeName": "RB审计配方-ikk0g",
3914
+ "productId": "pd-218705f2",
3915
+ "lineId": "ln-fd22576a",
3916
+ "startedAt": "2026-09-01T07:28:30.185Z",
3917
+ "endedAt": "2026-09-01T07:28:30.469Z",
3918
+ "results": [
3919
+ {
3920
+ "templateRef": "dcw-temp-sp",
3921
+ "nodeId": "dw-4eac72b6",
3922
+ "ok": true,
3923
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
3924
+ "value": 176
3925
+ }
3926
+ ],
3927
+ "paramsSnapshot": [
3928
+ {
3929
+ "nodeId": "dw-4eac72b6",
3930
+ "templateRef": "dcw-temp-sp",
3931
+ "value": 176,
3932
+ "min": 160,
3933
+ "max": 180
3934
+ }
3935
+ ]
3936
+ },
3937
+ {
3938
+ "id": "rr-e25f9778",
3939
+ "recipeId": "rc-5e7df0e2",
3940
+ "recipeName": "审计配方-光学膜",
3941
+ "productId": "pd-a4be44a8",
3942
+ "lineId": "ln-ff360c85",
3943
+ "startedAt": "2026-09-01T07:30:03.419Z",
3944
+ "endedAt": "2026-09-01T07:30:07.260Z",
3945
+ "results": [
3946
+ {
3947
+ "templateRef": "dcw-temp-sp",
3948
+ "nodeId": "dw-980ea252",
3949
+ "ok": true,
3950
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
3951
+ "value": 185
3952
+ },
3953
+ {
3954
+ "templateRef": "dcw-cw-f054bdd2",
3955
+ "nodeId": null,
3956
+ "ok": false,
3957
+ "message": "目标控制节点不存在(dw-9f120897),参数未下发",
3958
+ "value": 320
3959
+ }
3960
+ ],
3961
+ "paramsSnapshot": [
3962
+ {
3963
+ "nodeId": "dw-980ea252",
3964
+ "templateRef": "dcw-temp-sp",
3965
+ "value": 185
3966
+ },
3967
+ {
3968
+ "nodeId": "dw-9f120897",
3969
+ "templateRef": "dcw-cw-f054bdd2",
3970
+ "value": 320
3971
+ }
3972
+ ]
3973
+ },
3974
+ {
3975
+ "id": "rr-9c9489a3",
3976
+ "recipeId": "rc-2d168626",
3977
+ "recipeName": "审计配方-B",
3978
+ "productId": "pd-a4be44a8",
3979
+ "lineId": "ln-ff360c85",
3980
+ "startedAt": "2026-09-01T07:30:04.492Z",
3981
+ "endedAt": "2026-09-01T07:30:07.327Z",
3982
+ "results": [
3983
+ {
3984
+ "templateRef": "dcw-temp-sp",
3985
+ "nodeId": "dw-980ea252",
3986
+ "ok": true,
3987
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
3988
+ "value": 160
3989
+ }
3990
+ ],
3991
+ "paramsSnapshot": [
3992
+ {
3993
+ "nodeId": "dw-980ea252",
3994
+ "templateRef": "dcw-temp-sp",
3995
+ "value": 160
3996
+ }
3997
+ ]
3998
+ },
3999
+ {
4000
+ "id": "rr-08916754",
4001
+ "recipeId": "rc-e1147c2f",
4002
+ "recipeName": "OpsLog配方-aomy4",
4003
+ "productId": "pd-c6bf4dc5",
4004
+ "lineId": "ln-2d785bd8",
4005
+ "startedAt": "2026-09-01T08:52:40.863Z",
4006
+ "endedAt": "2026-09-01T08:52:52.493Z",
4007
+ "results": [
4008
+ {
4009
+ "templateRef": "dcw-temp-sp",
4010
+ "nodeId": "dw-426cf0bd",
4011
+ "ok": true,
4012
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4013
+ "value": 175
4014
+ }
4015
+ ],
4016
+ "paramsSnapshot": [
4017
+ {
4018
+ "nodeId": "dw-426cf0bd",
4019
+ "templateRef": "dcw-temp-sp",
4020
+ "value": 175
4021
+ }
4022
+ ]
4023
+ },
4024
+ {
4025
+ "id": "rr-3ac74f83",
4026
+ "recipeId": "rc-c6fba17b",
4027
+ "recipeName": "OpsLog配方-dgdoc",
4028
+ "productId": "pd-db494472",
4029
+ "lineId": "ln-ec406cd4",
4030
+ "startedAt": "2026-09-01T08:54:00.091Z",
4031
+ "endedAt": "2026-09-01T08:54:07.631Z",
4032
+ "results": [
4033
+ {
4034
+ "templateRef": "dcw-temp-sp",
4035
+ "nodeId": "dw-f7306eea",
4036
+ "ok": true,
4037
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4038
+ "value": 175
4039
+ }
4040
+ ],
4041
+ "paramsSnapshot": [
4042
+ {
4043
+ "nodeId": "dw-f7306eea",
4044
+ "templateRef": "dcw-temp-sp",
4045
+ "value": 175
4046
+ }
4047
+ ]
4048
+ },
4049
+ {
4050
+ "id": "rr-3aaba844",
4051
+ "recipeId": "rc-fd90088d",
4052
+ "recipeName": "新协议配方-kk6l",
4053
+ "productId": "pd-6932b24f",
4054
+ "lineId": "ln-844ad82f",
4055
+ "startedAt": "2026-09-01T09:06:55.728Z",
4056
+ "endedAt": null,
4057
+ "results": [
4058
+ {
4059
+ "templateRef": "dcw-temp-sp",
4060
+ "nodeId": "dw-768e06fe",
4061
+ "ok": true,
4062
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4063
+ "value": 175
4064
+ }
4065
+ ],
4066
+ "paramsSnapshot": [
4067
+ {
4068
+ "nodeId": "dw-768e06fe",
4069
+ "templateRef": "dcw-temp-sp",
4070
+ "value": 175
4071
+ }
4072
+ ]
4073
+ },
4074
+ {
4075
+ "id": "rr-bdebfa9c",
4076
+ "recipeId": "rc-f79f075b",
4077
+ "recipeName": "OptE2E配方-ta2yq",
4078
+ "productId": "pd-b6b265de",
4079
+ "lineId": "ln-fcd8023a",
4080
+ "startedAt": "2026-09-01T09:08:04.400Z",
4081
+ "endedAt": "2026-09-01T09:08:11.114Z",
4082
+ "results": [
4083
+ {
4084
+ "templateRef": "dcw-temp-sp",
4085
+ "nodeId": "dw-6f9b9a2e",
4086
+ "ok": true,
4087
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4088
+ "value": 175
4089
+ }
4090
+ ],
4091
+ "paramsSnapshot": [
4092
+ {
4093
+ "nodeId": "dw-6f9b9a2e",
4094
+ "templateRef": "dcw-temp-sp",
4095
+ "value": 175
4096
+ }
4097
+ ]
4098
+ },
4099
+ {
4100
+ "id": "rr-3e4ec3fb",
4101
+ "recipeId": "rc-3d92859b",
4102
+ "recipeName": "RB审计配方-s5s5f",
4103
+ "productId": "pd-4ef4f4f9",
4104
+ "lineId": "ln-dd871047",
4105
+ "startedAt": "2026-09-01T09:08:11.919Z",
4106
+ "endedAt": null,
4107
+ "results": [
4108
+ {
4109
+ "templateRef": "dcw-temp-sp",
4110
+ "nodeId": "dw-e254bb4b",
4111
+ "ok": true,
4112
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4113
+ "value": 175
4114
+ }
4115
+ ],
4116
+ "paramsSnapshot": [
4117
+ {
4118
+ "nodeId": "dw-e254bb4b",
4119
+ "templateRef": "dcw-temp-sp",
4120
+ "value": 175,
4121
+ "min": 160,
4122
+ "max": 180
4123
+ }
4124
+ ]
4125
+ },
4126
+ {
4127
+ "id": "rr-4ffb4cc3",
4128
+ "recipeId": "rc-3d92859b",
4129
+ "recipeName": "RB审计配方-s5s5f",
4130
+ "productId": "pd-4ef4f4f9",
4131
+ "lineId": "ln-dd871047",
4132
+ "startedAt": "2026-09-01T09:08:16.492Z",
4133
+ "endedAt": "2026-09-01T09:08:17.564Z",
4134
+ "results": [
4135
+ {
4136
+ "templateRef": "dcw-temp-sp",
4137
+ "nodeId": "dw-e254bb4b",
4138
+ "ok": true,
4139
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4140
+ "value": 175
4141
+ }
4142
+ ],
4143
+ "paramsSnapshot": [
4144
+ {
4145
+ "nodeId": "dw-e254bb4b",
4146
+ "templateRef": "dcw-temp-sp",
4147
+ "value": 175,
4148
+ "min": 160,
4149
+ "max": 180
4150
+ }
4151
+ ]
4152
+ },
4153
+ {
4154
+ "id": "rr-f9ae3b6e",
4155
+ "recipeId": "rc-3d92859b",
4156
+ "recipeName": "RB审计配方-s5s5f",
4157
+ "productId": "pd-4ef4f4f9",
4158
+ "lineId": "ln-dd871047",
4159
+ "startedAt": "2026-09-01T09:08:17.648Z",
4160
+ "endedAt": "2026-09-01T09:08:17.860Z",
4161
+ "results": [
4162
+ {
4163
+ "templateRef": "dcw-temp-sp",
4164
+ "nodeId": "dw-e254bb4b",
4165
+ "ok": true,
4166
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
4167
+ "value": 176
4168
+ }
4169
+ ],
4170
+ "paramsSnapshot": [
4171
+ {
4172
+ "nodeId": "dw-e254bb4b",
4173
+ "templateRef": "dcw-temp-sp",
4174
+ "value": 176,
4175
+ "min": 160,
4176
+ "max": 180
4177
+ }
4178
+ ]
4179
+ },
4180
+ {
4181
+ "id": "rr-d8fc0667",
4182
+ "recipeId": "rc-5d14ead1",
4183
+ "recipeName": "RB审计配方-f2vsr",
4184
+ "productId": "pd-6c9942c1",
4185
+ "lineId": "ln-6dc23d6d",
4186
+ "startedAt": "2026-09-01T09:08:38.826Z",
4187
+ "endedAt": null,
4188
+ "results": [
4189
+ {
4190
+ "templateRef": "dcw-temp-sp",
4191
+ "nodeId": "dw-a2ab32e9",
4192
+ "ok": true,
4193
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4194
+ "value": 175
4195
+ }
4196
+ ],
4197
+ "paramsSnapshot": [
4198
+ {
4199
+ "nodeId": "dw-a2ab32e9",
4200
+ "templateRef": "dcw-temp-sp",
4201
+ "value": 175,
4202
+ "min": 160,
4203
+ "max": 180
4204
+ }
4205
+ ]
4206
+ },
4207
+ {
4208
+ "id": "rr-344541e5",
4209
+ "recipeId": "rc-5d14ead1",
4210
+ "recipeName": "RB审计配方-f2vsr",
4211
+ "productId": "pd-6c9942c1",
4212
+ "lineId": "ln-6dc23d6d",
4213
+ "startedAt": "2026-09-01T09:08:43.460Z",
4214
+ "endedAt": "2026-09-01T09:08:44.519Z",
4215
+ "results": [
4216
+ {
4217
+ "templateRef": "dcw-temp-sp",
4218
+ "nodeId": "dw-a2ab32e9",
4219
+ "ok": true,
4220
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4221
+ "value": 175
4222
+ }
4223
+ ],
4224
+ "paramsSnapshot": [
4225
+ {
4226
+ "nodeId": "dw-a2ab32e9",
4227
+ "templateRef": "dcw-temp-sp",
4228
+ "value": 175,
4229
+ "min": 160,
4230
+ "max": 180
4231
+ }
4232
+ ]
4233
+ },
4234
+ {
4235
+ "id": "rr-70cdaba7",
4236
+ "recipeId": "rc-5d14ead1",
4237
+ "recipeName": "RB审计配方-f2vsr",
4238
+ "productId": "pd-6c9942c1",
4239
+ "lineId": "ln-6dc23d6d",
4240
+ "startedAt": "2026-09-01T09:08:44.610Z",
4241
+ "endedAt": "2026-09-01T09:08:44.861Z",
4242
+ "results": [
4243
+ {
4244
+ "templateRef": "dcw-temp-sp",
4245
+ "nodeId": "dw-a2ab32e9",
4246
+ "ok": true,
4247
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
4248
+ "value": 176
4249
+ }
4250
+ ],
4251
+ "paramsSnapshot": [
4252
+ {
4253
+ "nodeId": "dw-a2ab32e9",
4254
+ "templateRef": "dcw-temp-sp",
4255
+ "value": 176,
4256
+ "min": 160,
4257
+ "max": 180
4258
+ }
4259
+ ]
4260
+ },
4261
+ {
4262
+ "id": "rr-9c6a81ca",
4263
+ "recipeId": "rc-06d6537d",
4264
+ "recipeName": "RB审计配方-r6yac",
4265
+ "productId": "pd-e31ab54c",
4266
+ "lineId": "ln-2a2ae15e",
4267
+ "startedAt": "2026-09-01T09:16:29.552Z",
4268
+ "endedAt": null,
4269
+ "results": [
4270
+ {
4271
+ "templateRef": "dcw-temp-sp",
4272
+ "nodeId": "dw-286cfcb1",
4273
+ "ok": true,
4274
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4275
+ "value": 175
4276
+ }
4277
+ ],
4278
+ "paramsSnapshot": [
4279
+ {
4280
+ "nodeId": "dw-286cfcb1",
4281
+ "templateRef": "dcw-temp-sp",
4282
+ "value": 175,
4283
+ "min": 160,
4284
+ "max": 180
4285
+ }
4286
+ ]
4287
+ },
4288
+ {
4289
+ "id": "rr-7c93ac47",
4290
+ "recipeId": "rc-06d6537d",
4291
+ "recipeName": "RB审计配方-r6yac",
4292
+ "productId": "pd-e31ab54c",
4293
+ "lineId": "ln-2a2ae15e",
4294
+ "startedAt": "2026-09-01T09:16:34.136Z",
4295
+ "endedAt": "2026-09-01T09:16:35.117Z",
4296
+ "results": [
4297
+ {
4298
+ "templateRef": "dcw-temp-sp",
4299
+ "nodeId": "dw-286cfcb1",
4300
+ "ok": true,
4301
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4302
+ "value": 175
4303
+ }
4304
+ ],
4305
+ "paramsSnapshot": [
4306
+ {
4307
+ "nodeId": "dw-286cfcb1",
4308
+ "templateRef": "dcw-temp-sp",
4309
+ "value": 175,
4310
+ "min": 160,
4311
+ "max": 180
4312
+ }
4313
+ ]
4314
+ },
4315
+ {
4316
+ "id": "rr-173f454d",
4317
+ "recipeId": "rc-06d6537d",
4318
+ "recipeName": "RB审计配方-r6yac",
4319
+ "productId": "pd-e31ab54c",
4320
+ "lineId": "ln-2a2ae15e",
4321
+ "startedAt": "2026-09-01T09:16:35.203Z",
4322
+ "endedAt": "2026-09-01T09:16:35.449Z",
4323
+ "results": [
4324
+ {
4325
+ "templateRef": "dcw-temp-sp",
4326
+ "nodeId": "dw-286cfcb1",
4327
+ "ok": true,
4328
+ "message": "Mock PLC 写入成功:176 → raw 176,回读一致(标定后物理值 176)",
4329
+ "value": 176
4330
+ }
4331
+ ],
4332
+ "paramsSnapshot": [
4333
+ {
4334
+ "nodeId": "dw-286cfcb1",
4335
+ "templateRef": "dcw-temp-sp",
4336
+ "value": 176,
4337
+ "min": 160,
4338
+ "max": 180
4339
+ }
4340
+ ]
4341
+ },
4342
+ {
4343
+ "id": "rr-7b42e871",
4344
+ "recipeId": "rc-5d9f6af0",
4345
+ "recipeName": "OpsLog配方-z2tyo",
4346
+ "productId": "pd-1decb172",
4347
+ "lineId": "ln-9b54577f",
4348
+ "startedAt": "2026-09-01T09:16:38.721Z",
4349
+ "endedAt": "2026-09-01T09:16:48.299Z",
4350
+ "results": [
4351
+ {
4352
+ "templateRef": "dcw-temp-sp",
4353
+ "nodeId": "dw-24038ff9",
4354
+ "ok": true,
4355
+ "message": "Mock PLC 写入成功:175 → raw 175,回读一致(标定后物理值 175)",
4356
+ "value": 175
4357
+ }
4358
+ ],
4359
+ "paramsSnapshot": [
4360
+ {
4361
+ "nodeId": "dw-24038ff9",
4362
+ "templateRef": "dcw-temp-sp",
4363
+ "value": 175
4364
+ }
4365
+ ]
4366
+ },
4367
+ {
4368
+ "id": "rr-01d4089b",
4369
+ "recipeId": "rc-94182d1f",
4370
+ "recipeName": "审计配方-光学膜",
4371
+ "productId": "pd-391ec09f",
4372
+ "lineId": "ln-28347367",
4373
+ "startedAt": "2026-09-01T09:17:04.168Z",
4374
+ "endedAt": "2026-09-01T09:17:08.234Z",
4375
+ "results": [
4376
+ {
4377
+ "templateRef": "dcw-temp-sp",
4378
+ "nodeId": "dw-9fae83f1",
4379
+ "ok": true,
4380
+ "message": "Mock PLC 写入成功:185 → raw 185,回读一致(标定后物理值 185)",
4381
+ "value": 185
4382
+ },
4383
+ {
4384
+ "templateRef": "dcw-cw-5f93e167",
4385
+ "nodeId": null,
4386
+ "ok": false,
4387
+ "message": "目标控制节点不存在(dw-0b69f889),参数未下发",
4388
+ "value": 320
4389
+ }
4390
+ ],
4391
+ "paramsSnapshot": [
4392
+ {
4393
+ "nodeId": "dw-9fae83f1",
4394
+ "templateRef": "dcw-temp-sp",
4395
+ "value": 185
4396
+ },
4397
+ {
4398
+ "nodeId": "dw-0b69f889",
4399
+ "templateRef": "dcw-cw-5f93e167",
4400
+ "value": 320
4401
+ }
4402
+ ]
4403
+ },
4404
+ {
4405
+ "id": "rr-848b6371",
4406
+ "recipeId": "rc-778caad3",
4407
+ "recipeName": "审计配方-B",
4408
+ "productId": "pd-391ec09f",
4409
+ "lineId": "ln-28347367",
4410
+ "startedAt": "2026-09-01T09:17:05.422Z",
4411
+ "endedAt": "2026-09-01T09:17:08.336Z",
4412
+ "results": [
4413
+ {
4414
+ "templateRef": "dcw-temp-sp",
4415
+ "nodeId": "dw-9fae83f1",
4416
+ "ok": true,
4417
+ "message": "Mock PLC 写入成功:160 → raw 160,回读一致(标定后物理值 160)",
4418
+ "value": 160
4419
+ }
4420
+ ],
4421
+ "paramsSnapshot": [
4422
+ {
4423
+ "nodeId": "dw-9fae83f1",
4424
+ "templateRef": "dcw-temp-sp",
4425
+ "value": 160
4426
+ }
4427
+ ]
4428
+ },
4429
+ {
4430
+ "id": "rr-c11116b7",
4431
+ "recipeId": "rc-7bf584db",
4432
+ "recipeName": "A-标准工艺",
4433
+ "productId": "pd-6348a595",
4434
+ "lineId": "ln-af002514",
4435
+ "startedAt": "2026-09-01T10:58:09.383Z",
4436
+ "endedAt": "2026-09-01T10:59:08.219Z",
4437
+ "results": [
4438
+ {
4439
+ "templateRef": "dcw-temp-sp",
4440
+ "nodeId": "dw-322b1978",
4441
+ "ok": true,
4442
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
4443
+ "value": 182
4444
+ },
4445
+ {
4446
+ "templateRef": "dcw-pressure-sp",
4447
+ "nodeId": "dw-e92bb0e7",
4448
+ "ok": true,
4449
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
4450
+ "value": 0.92
4451
+ }
4452
+ ],
4453
+ "paramsSnapshot": [
4454
+ {
4455
+ "nodeId": "dw-322b1978",
4456
+ "templateRef": "dcw-temp-sp",
4457
+ "value": 182,
4458
+ "min": 176,
4459
+ "max": 188
4460
+ },
4461
+ {
4462
+ "nodeId": "dw-e92bb0e7",
4463
+ "templateRef": "dcw-pressure-sp",
4464
+ "value": 0.92,
4465
+ "min": 0.85,
4466
+ "max": 1
4467
+ }
4468
+ ]
4469
+ },
4470
+ {
4471
+ "id": "rr-8d7e159f",
4472
+ "recipeId": "rc-dafceaf4",
4473
+ "recipeName": "全链路审计配方",
4474
+ "productId": "pd-136d3378",
4475
+ "lineId": "ln-7b9f19d9",
4476
+ "startedAt": "2026-09-01T11:03:23.450Z",
4477
+ "endedAt": "2026-09-01T11:08:40.462Z",
4478
+ "results": [
4479
+ {
4480
+ "templateRef": "dcw-temp-sp",
4481
+ "nodeId": "dw-30afd1ab",
4482
+ "ok": true,
4483
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
4484
+ "value": 180
4485
+ }
4486
+ ],
4487
+ "paramsSnapshot": [
4488
+ {
4489
+ "nodeId": "dw-30afd1ab",
4490
+ "templateRef": "dcw-temp-sp",
4491
+ "value": 180,
4492
+ "min": 176,
4493
+ "max": 188
4494
+ }
4495
+ ]
4496
+ },
4497
+ {
4498
+ "id": "rr-16a3fb0a",
4499
+ "recipeId": "rc-d4aaf559",
4500
+ "recipeName": "HITL验证配方",
4501
+ "productId": "pd-e3c0595a",
4502
+ "lineId": "ln-847bee7f",
4503
+ "startedAt": "2026-09-01T12:25:43.180Z",
4504
+ "endedAt": "2026-09-01T12:25:48.644Z",
4505
+ "results": [
4506
+ {
4507
+ "templateRef": "dcw-temp-sp",
4508
+ "nodeId": "dw-0834096d",
4509
+ "ok": true,
4510
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
4511
+ "value": 180
4512
+ }
4513
+ ],
4514
+ "paramsSnapshot": [
4515
+ {
4516
+ "nodeId": "dw-0834096d",
4517
+ "templateRef": "dcw-temp-sp",
4518
+ "value": 180,
4519
+ "min": 170,
4520
+ "max": 190
4521
+ }
4522
+ ]
4523
+ },
4524
+ {
4525
+ "id": "rr-01bc5f2b",
4526
+ "recipeId": "rc-d3d2f63d",
4527
+ "recipeName": "HITL验证配方",
4528
+ "productId": "pd-0394bea0",
4529
+ "lineId": "ln-d32ca422",
4530
+ "startedAt": "2026-09-01T12:27:14.393Z",
4531
+ "endedAt": "2026-09-01T12:27:19.796Z",
4532
+ "results": [
4533
+ {
4534
+ "templateRef": "dcw-temp-sp",
4535
+ "nodeId": "dw-74784437",
4536
+ "ok": true,
4537
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
4538
+ "value": 180
4539
+ }
4540
+ ],
4541
+ "paramsSnapshot": [
4542
+ {
4543
+ "nodeId": "dw-74784437",
4544
+ "templateRef": "dcw-temp-sp",
4545
+ "value": 180,
4546
+ "min": 170,
4547
+ "max": 190
4548
+ }
4549
+ ]
4550
+ },
4551
+ {
4552
+ "id": "rr-c8614829",
4553
+ "recipeId": "rc-7bf584db",
4554
+ "recipeName": "A-标准工艺",
4555
+ "productId": "pd-6348a595",
4556
+ "lineId": "ln-af002514",
4557
+ "startedAt": "2026-09-01T14:02:39.649Z",
4558
+ "endedAt": "2026-09-01T14:03:17.566Z",
4559
+ "results": [
4560
+ {
4561
+ "templateRef": "dcw-temp-sp",
4562
+ "nodeId": "dw-322b1978",
4563
+ "ok": true,
4564
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
4565
+ "value": 182
4566
+ },
4567
+ {
4568
+ "templateRef": "dcw-pressure-sp",
4569
+ "nodeId": "dw-e92bb0e7",
4570
+ "ok": true,
4571
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
4572
+ "value": 0.92
4573
+ }
4574
+ ],
4575
+ "paramsSnapshot": [
4576
+ {
4577
+ "nodeId": "dw-322b1978",
4578
+ "templateRef": "dcw-temp-sp",
4579
+ "value": 182,
4580
+ "min": 176,
4581
+ "max": 188
4582
+ },
4583
+ {
4584
+ "nodeId": "dw-e92bb0e7",
4585
+ "templateRef": "dcw-pressure-sp",
4586
+ "value": 0.92,
4587
+ "min": 0.85,
4588
+ "max": 1
4589
+ }
4590
+ ]
4591
+ },
4592
+ {
4593
+ "id": "rr-95018e6d",
4594
+ "recipeId": "rc-7bf584db",
4595
+ "recipeName": "A-标准工艺",
4596
+ "productId": "pd-6348a595",
4597
+ "lineId": "ln-af002514",
4598
+ "startedAt": "2026-09-01T14:06:28.766Z",
4599
+ "endedAt": null,
4600
+ "results": [
4601
+ {
4602
+ "templateRef": "dcw-temp-sp",
4603
+ "nodeId": "dw-322b1978",
4604
+ "ok": true,
4605
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
4606
+ "value": 182
4607
+ },
4608
+ {
4609
+ "templateRef": "dcw-pressure-sp",
4610
+ "nodeId": "dw-e92bb0e7",
4611
+ "ok": true,
4612
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
4613
+ "value": 0.92
4614
+ }
4615
+ ],
4616
+ "paramsSnapshot": [
4617
+ {
4618
+ "nodeId": "dw-322b1978",
4619
+ "templateRef": "dcw-temp-sp",
4620
+ "value": 182,
4621
+ "min": 176,
4622
+ "max": 188
4623
+ },
4624
+ {
4625
+ "nodeId": "dw-e92bb0e7",
4626
+ "templateRef": "dcw-pressure-sp",
4627
+ "value": 0.92,
4628
+ "min": 0.85,
4629
+ "max": 1
4630
+ }
4631
+ ]
4632
+ }
4633
+ ]