agentworkshop 0.7.3 → 0.7.4

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 (127) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/B9Yie5HN.js +2 -0
  3. package/.output/public/_nuxt/CN7Zh8GQ.js +1 -0
  4. package/.output/public/_nuxt/CdSgfcYR.js +1 -0
  5. package/.output/public/_nuxt/CdfAP_IH2.js +1 -0
  6. package/.output/public/_nuxt/ChnfyQHz.js +1 -0
  7. package/.output/public/_nuxt/{BkKYf8xY.js → CyygA0q4.js} +4 -4
  8. package/.output/public/_nuxt/{Bz40vyZS.js → DFnGFEav.js} +7 -7
  9. package/.output/public/_nuxt/Xaf_HIR3.js +1 -0
  10. package/.output/public/_nuxt/ZugRk0CM2.js +4 -0
  11. package/.output/public/_nuxt/builds/latest.json +1 -1
  12. package/.output/public/_nuxt/builds/meta/55c10854-ee0e-4be4-924b-a1b0e100fe11.json +1 -0
  13. package/.output/public/_nuxt/{default.iGJy9dP-.css → default.D17kXlD6.css} +1 -1
  14. package/.output/public/_nuxt/monitor.CmwpEUCI.css +1 -0
  15. package/.output/public/_nuxt/yIKY_V1P.js +1 -0
  16. package/.output/server/chunks/_/nitro.mjs +1131 -920
  17. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  18. package/.output/server/chunks/build/{TownView-BkHxMiwZ.mjs → TownView-Bl8Gkcxi.mjs} +3 -3
  19. package/.output/server/chunks/build/{TownView-BkHxMiwZ.mjs.map → TownView-Bl8Gkcxi.mjs.map} +1 -1
  20. package/.output/server/chunks/build/{_id_-Bna1_JuB.mjs → _id_-CWLFGZjV.mjs} +2 -2
  21. package/.output/server/chunks/build/{_id_-Bna1_JuB.mjs.map → _id_-CWLFGZjV.mjs.map} +1 -1
  22. package/.output/server/chunks/build/_id_-GnRJPykX.mjs +1 -1
  23. package/.output/server/chunks/build/{_wsId_-CzLDGT_V.mjs → _wsId_-BhQMjyHG.mjs} +3 -4
  24. package/.output/server/chunks/build/{_wsId_-CzLDGT_V.mjs.map → _wsId_-BhQMjyHG.mjs.map} +1 -1
  25. package/.output/server/chunks/build/{daq-CmeM4u5u.mjs → daq-BOgpn9sl.mjs} +4 -5
  26. package/.output/server/chunks/build/daq-BOgpn9sl.mjs.map +1 -0
  27. package/.output/server/chunks/build/dcw-BTM5YU-B.mjs +1 -1
  28. package/.output/server/chunks/build/{default-Dt6xLdpd.mjs → default-CKJWhkot.mjs} +60 -17
  29. package/.output/server/chunks/build/{default-Dt6xLdpd.mjs.map → default-CKJWhkot.mjs.map} +1 -1
  30. package/.output/server/chunks/build/{logs-CUQt1z7D.mjs → logs-Dyk0I2I9.mjs} +3 -4
  31. package/.output/server/chunks/build/logs-Dyk0I2I9.mjs.map +1 -0
  32. package/.output/server/chunks/build/{monitor-yNoV98rf.mjs → monitor-KW8WLOJd.mjs} +34 -33
  33. package/.output/server/chunks/build/{monitor-yNoV98rf.mjs.map → monitor-KW8WLOJd.mjs.map} +1 -1
  34. package/.output/server/chunks/build/{town-BN4vQPb8.mjs → town-_4tEEEVW.mjs} +3 -4
  35. package/.output/server/chunks/build/town-_4tEEEVW.mjs.map +1 -0
  36. package/.output/server/chunks/build/useDaqStream-hwkhJHFU.mjs +1 -1
  37. package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs +1 -1
  38. package/.output/server/chunks/build/{useWorkshopWs-xcdeiSmJ.mjs → useWorkshopWs-B3j5wIAK.mjs} +177 -3
  39. package/.output/server/chunks/build/useWorkshopWs-B3j5wIAK.mjs.map +1 -0
  40. package/.output/server/chunks/build/{workshop-CLhwe5eo.mjs → workshop-k0XZTFKg.mjs} +2 -3
  41. package/.output/server/chunks/build/workshop-k0XZTFKg.mjs.map +1 -0
  42. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  43. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +1 -1
  44. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +32 -0
  45. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -0
  46. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +56 -0
  47. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -0
  48. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  49. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  50. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  51. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  52. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  53. package/.output/server/chunks/routes/renderer.mjs +2 -2
  54. package/.output/server/chunks/virtual/entry.mjs +17 -11
  55. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  56. package/.output/server/package.json +1 -1
  57. package/README.md +435 -434
  58. package/app/components/AppHeader.vue +138 -0
  59. package/app/composables/workshop/useWorkshopWs.ts +4 -0
  60. package/app/pages/monitor.vue +17 -1
  61. package/app/stores/workshop/hitl.ts +80 -0
  62. package/bin/aw.mjs +0 -0
  63. package/cli/commands/tui.mjs +19 -0
  64. package/config.yml +134 -134
  65. package/docs/tui.md +43 -0
  66. package/i18n/locales/en.ts +3 -0
  67. package/i18n/locales/zh-CN.ts +3 -0
  68. package/package.json +140 -144
  69. package/scripts/_spike-pitui.mjs +116 -0
  70. package/scripts/e2e-hitl-live.mjs +323 -0
  71. package/scripts/e2e-line-live.mjs +144 -0
  72. package/scripts/test-hitl-registry.ts +112 -0
  73. package/scripts/test-tui-commands.mjs +131 -0
  74. package/scripts/test-tui-reducers.mjs +72 -0
  75. package/scripts/tsconfig.json +14 -0
  76. package/scripts/tui-smoke.mjs +91 -0
  77. package/server/api/workshop/hitl/pending.get.ts +28 -0
  78. package/server/api/workshop/hitl/respond.post.ts +67 -0
  79. package/server/api/workshop/ws.ts +30 -1
  80. package/server/data/daqs.json +39 -17
  81. package/server/data/dcw-lines.json +14 -0
  82. package/server/data/dcw-products.json +35 -0
  83. package/server/data/dcw-recipes.json +140 -0
  84. package/server/data/dcw-rollback.json +111 -1
  85. package/server/data/dcw-runs.json +135 -90
  86. package/server/data/dcw-writes.json +120 -0
  87. package/server/data/dcws.json +400 -275
  88. package/server/data/line-runs.json +11 -1
  89. package/server/plugins/workshop.ts +7 -0
  90. package/server/services/workshop/agents/harness-terminal.ts +92 -25
  91. package/server/services/workshop/agents/hitl-registry.ts +181 -0
  92. package/server/services/workshop/agents/tool-approvals.ts +15 -0
  93. package/server/services/workshop/scene-events.ts +19 -9
  94. package/shared/workshop-protocol.ts +37 -0
  95. package/tui/README.md +65 -0
  96. package/tui/aw-tui.mjs +356 -0
  97. package/tui/commands/index.mjs +250 -0
  98. package/tui/components/chat-log.mjs +42 -0
  99. package/tui/components/hitl-card.mjs +36 -0
  100. package/tui/components/monitor-pane.mjs +39 -0
  101. package/tui/components/root.mjs +53 -0
  102. package/tui/components/status-bar.mjs +29 -0
  103. package/tui/lib/api.mjs +82 -0
  104. package/tui/lib/config.mjs +58 -0
  105. package/tui/lib/reducers.mjs +218 -0
  106. package/tui/lib/state.mjs +80 -0
  107. package/tui/lib/virtual-terminal.mjs +48 -0
  108. package/tui/lib/ws.mjs +124 -0
  109. package/tui/theme.mjs +38 -0
  110. package/.output/public/_nuxt/B7V9IfTL.js +0 -1
  111. package/.output/public/_nuxt/BE5QyG5J2.js +0 -1
  112. package/.output/public/_nuxt/BuKI8z-5.js +0 -1
  113. package/.output/public/_nuxt/D0C5Q0di.js +0 -1
  114. package/.output/public/_nuxt/DC-QMEk1.js +0 -2
  115. package/.output/public/_nuxt/DEkQ0qQ02.js +0 -1
  116. package/.output/public/_nuxt/builds/meta/c6c01cdd-762e-4fb8-86e7-753c5185b856.json +0 -1
  117. package/.output/public/_nuxt/dt2tKE95.js +0 -4
  118. package/.output/public/_nuxt/i_MKObHo.js +0 -1
  119. package/.output/public/_nuxt/monitor.41fCD6TB.css +0 -1
  120. package/.output/public/_nuxt/tpDMVY5w.js +0 -1
  121. package/.output/server/chunks/build/connection-Dc0fn6yd.mjs +0 -120
  122. package/.output/server/chunks/build/connection-Dc0fn6yd.mjs.map +0 -1
  123. package/.output/server/chunks/build/daq-CmeM4u5u.mjs.map +0 -1
  124. package/.output/server/chunks/build/logs-CUQt1z7D.mjs.map +0 -1
  125. package/.output/server/chunks/build/town-BN4vQPb8.mjs.map +0 -1
  126. package/.output/server/chunks/build/useWorkshopWs-xcdeiSmJ.mjs.map +0 -1
  127. package/.output/server/chunks/build/workshop-CLhwe5eo.mjs.map +0 -1
@@ -2026,5 +2026,145 @@
2026
2026
  "lastGoodRunId": null,
2027
2027
  "createdAt": "2026-09-03T17:12:52.203Z",
2028
2028
  "updatedAt": "2026-09-03T17:12:52.203Z"
2029
+ },
2030
+ {
2031
+ "id": "rc-59b8eca0",
2032
+ "productId": "pd-b06ac7d7",
2033
+ "lineId": "",
2034
+ "name": "配方-mtmhgrsn",
2035
+ "description": "",
2036
+ "params": [
2037
+ {
2038
+ "nodeId": "dw-3a3f7a4c",
2039
+ "templateRef": "dcw-temp-sp",
2040
+ "value": 180,
2041
+ "min": 176,
2042
+ "max": 188
2043
+ }
2044
+ ],
2045
+ "daqWindows": [
2046
+ {
2047
+ "nodeId": "dn-a3871dc4",
2048
+ "min": 100,
2049
+ "max": 260
2050
+ }
2051
+ ],
2052
+ "version": 1,
2053
+ "paramsHistory": [],
2054
+ "lastGoodRunId": null,
2055
+ "createdAt": "2026-09-04T04:58:09.894Z",
2056
+ "updatedAt": "2026-09-04T04:58:09.894Z"
2057
+ },
2058
+ {
2059
+ "id": "rc-5667c3cb",
2060
+ "productId": "pd-a7ccbe70",
2061
+ "lineId": "",
2062
+ "name": "配方-mtmhnz2f",
2063
+ "description": "",
2064
+ "params": [
2065
+ {
2066
+ "nodeId": "dw-42fcd798",
2067
+ "templateRef": "dcw-temp-sp",
2068
+ "value": 180,
2069
+ "min": 176,
2070
+ "max": 188
2071
+ }
2072
+ ],
2073
+ "daqWindows": [
2074
+ {
2075
+ "nodeId": "dn-80753dd7",
2076
+ "min": 100,
2077
+ "max": 260
2078
+ }
2079
+ ],
2080
+ "version": 1,
2081
+ "paramsHistory": [],
2082
+ "lastGoodRunId": null,
2083
+ "createdAt": "2026-09-04T05:03:45.878Z",
2084
+ "updatedAt": "2026-09-04T05:03:45.878Z"
2085
+ },
2086
+ {
2087
+ "id": "rc-ccee1b1b",
2088
+ "productId": "pd-db432902",
2089
+ "lineId": "ln-1b318320",
2090
+ "name": "探针配方",
2091
+ "description": "",
2092
+ "params": [
2093
+ {
2094
+ "nodeId": "dw-756e3e07",
2095
+ "templateRef": "dcw-temp-sp",
2096
+ "value": 180,
2097
+ "min": 176,
2098
+ "max": 188
2099
+ }
2100
+ ],
2101
+ "daqWindows": [
2102
+ {
2103
+ "nodeId": "dn-2c41fbba",
2104
+ "min": 100,
2105
+ "max": 260
2106
+ }
2107
+ ],
2108
+ "version": 1,
2109
+ "paramsHistory": [],
2110
+ "lastGoodRunId": null,
2111
+ "createdAt": "2026-09-04T05:08:10.099Z",
2112
+ "updatedAt": "2026-09-04T05:08:10.099Z"
2113
+ },
2114
+ {
2115
+ "id": "rc-c73f8aed",
2116
+ "productId": "pd-f6296ca1",
2117
+ "lineId": "",
2118
+ "name": "探针配方",
2119
+ "description": "",
2120
+ "params": [
2121
+ {
2122
+ "nodeId": "dw-1ccbe1a8",
2123
+ "templateRef": "dcw-temp-sp",
2124
+ "value": 180,
2125
+ "min": 176,
2126
+ "max": 188
2127
+ }
2128
+ ],
2129
+ "daqWindows": [
2130
+ {
2131
+ "nodeId": "dn-60156b48",
2132
+ "min": 100,
2133
+ "max": 260
2134
+ }
2135
+ ],
2136
+ "version": 1,
2137
+ "paramsHistory": [],
2138
+ "lastGoodRunId": null,
2139
+ "createdAt": "2026-09-04T05:08:56.240Z",
2140
+ "updatedAt": "2026-09-04T05:08:56.240Z"
2141
+ },
2142
+ {
2143
+ "id": "rc-839041c6",
2144
+ "productId": "pd-cfe2e059",
2145
+ "lineId": "",
2146
+ "name": "配方-mtmhyn1r",
2147
+ "description": "",
2148
+ "params": [
2149
+ {
2150
+ "nodeId": "dw-3b6fd688",
2151
+ "templateRef": "dcw-temp-sp",
2152
+ "value": 180,
2153
+ "min": 176,
2154
+ "max": 188
2155
+ }
2156
+ ],
2157
+ "daqWindows": [
2158
+ {
2159
+ "nodeId": "dn-9f81bd8d",
2160
+ "min": 100,
2161
+ "max": 260
2162
+ }
2163
+ ],
2164
+ "version": 1,
2165
+ "paramsHistory": [],
2166
+ "lastGoodRunId": null,
2167
+ "createdAt": "2026-09-04T05:12:03.621Z",
2168
+ "updatedAt": "2026-09-04T05:12:03.621Z"
2029
2169
  }
2030
2170
  ]
@@ -3447,6 +3447,116 @@
3447
3447
  "recipeRunId": null,
3448
3448
  "id": "anc-38e1341a",
3449
3449
  "at": "2026-09-03T17:12:25.776Z"
3450
+ },
3451
+ {
3452
+ "lineId": "ln-40681e03",
3453
+ "nodeId": "dw-3a3f7a4c",
3454
+ "prevValue": null,
3455
+ "newValue": 180,
3456
+ "source": "recipe",
3457
+ "actor": "recipe",
3458
+ "recipeRunId": "rr-875be24a",
3459
+ "id": "anc-2e647964",
3460
+ "at": "2026-09-04T04:58:10.209Z"
3461
+ },
3462
+ {
3463
+ "lineId": "ln-40681e03",
3464
+ "nodeId": "dw-3a3f7a4c",
3465
+ "prevValue": 180,
3466
+ "newValue": 182,
3467
+ "source": "manual",
3468
+ "actor": "5781d73b-dcfe-4865-a437-9de859ad7e49",
3469
+ "recipeRunId": null,
3470
+ "id": "anc-3a56e78f",
3471
+ "at": "2026-09-04T04:58:20.372Z"
3472
+ },
3473
+ {
3474
+ "lineId": "ln-a284d605",
3475
+ "nodeId": "dw-42fcd798",
3476
+ "prevValue": null,
3477
+ "newValue": 180,
3478
+ "source": "recipe",
3479
+ "actor": "recipe",
3480
+ "recipeRunId": "rr-de10d51e",
3481
+ "id": "anc-1388b44c",
3482
+ "at": "2026-09-04T05:03:46.015Z"
3483
+ },
3484
+ {
3485
+ "lineId": "ln-a284d605",
3486
+ "nodeId": "dw-42fcd798",
3487
+ "prevValue": 180,
3488
+ "newValue": 182,
3489
+ "source": "manual",
3490
+ "actor": "abaa4647-4ff5-4841-9eb6-1cc63e78548f",
3491
+ "recipeRunId": null,
3492
+ "id": "anc-1af90d67",
3493
+ "at": "2026-09-04T05:03:56.195Z"
3494
+ },
3495
+ {
3496
+ "lineId": "ln-1b318320",
3497
+ "nodeId": "dw-756e3e07",
3498
+ "prevValue": null,
3499
+ "newValue": 180,
3500
+ "source": "recipe",
3501
+ "actor": "recipe",
3502
+ "recipeRunId": "rr-9e70a9dc",
3503
+ "id": "anc-d1063132",
3504
+ "at": "2026-09-04T05:08:10.199Z"
3505
+ },
3506
+ {
3507
+ "lineId": "ln-1b318320",
3508
+ "nodeId": "dw-756e3e07",
3509
+ "prevValue": 180,
3510
+ "newValue": 182,
3511
+ "source": "manual",
3512
+ "actor": "0d79cb5d-b903-482a-b051-15fd93353244",
3513
+ "recipeRunId": null,
3514
+ "id": "anc-06b67ce8",
3515
+ "at": "2026-09-04T05:08:10.323Z"
3516
+ },
3517
+ {
3518
+ "lineId": "ln-c50d97f5",
3519
+ "nodeId": "dw-1ccbe1a8",
3520
+ "prevValue": null,
3521
+ "newValue": 180,
3522
+ "source": "recipe",
3523
+ "actor": "recipe",
3524
+ "recipeRunId": "rr-dbb44962",
3525
+ "id": "anc-938cd33b",
3526
+ "at": "2026-09-04T05:08:56.394Z"
3527
+ },
3528
+ {
3529
+ "lineId": "ln-c50d97f5",
3530
+ "nodeId": "dw-1ccbe1a8",
3531
+ "prevValue": 180,
3532
+ "newValue": 182,
3533
+ "source": "manual",
3534
+ "actor": "8a5b36eb-b4ce-485c-bfbd-c5fa45f73774",
3535
+ "recipeRunId": null,
3536
+ "id": "anc-11437d12",
3537
+ "at": "2026-09-04T05:08:56.547Z"
3538
+ },
3539
+ {
3540
+ "lineId": "ln-826f8518",
3541
+ "nodeId": "dw-3b6fd688",
3542
+ "prevValue": null,
3543
+ "newValue": 180,
3544
+ "source": "recipe",
3545
+ "actor": "recipe",
3546
+ "recipeRunId": "rr-02e1b75d",
3547
+ "id": "anc-a35dd56d",
3548
+ "at": "2026-09-04T05:12:03.728Z"
3549
+ },
3550
+ {
3551
+ "lineId": "ln-826f8518",
3552
+ "nodeId": "dw-3b6fd688",
3553
+ "prevValue": 180,
3554
+ "newValue": 182,
3555
+ "source": "manual",
3556
+ "actor": "524916e4-b875-43dc-a620-34d31dbbb162",
3557
+ "recipeRunId": null,
3558
+ "id": "anc-39d9576c",
3559
+ "at": "2026-09-04T05:12:13.886Z"
3450
3560
  }
3451
3561
  ],
3452
3562
  "records": [
@@ -3838,7 +3948,7 @@
3838
3948
  "channels": [],
3839
3949
  "degraded": true
3840
3950
  },
3841
- "evaluatedAt": "2026-09-03T17:16:59.443Z",
3951
+ "evaluatedAt": "2026-09-04T05:35:21.681Z",
3842
3952
  "windowAgg": {
3843
3953
  "at": "2026-08-31T16:25:17.398Z",
3844
3954
  "fromMs": 1788193396897,
@@ -1,94 +1,4 @@
1
1
  [
2
- {
3
- "id": "rr-7bd50f54",
4
- "recipeId": "rc-c1cc9555",
5
- "recipeName": "探针配方Q5",
6
- "productId": "pd-edf2cbf0",
7
- "lineId": "ln-a95f0e22",
8
- "startedAt": "2026-08-30T02:07:51.038Z",
9
- "endedAt": "2026-08-30T02:14:10.156Z",
10
- "results": [
11
- {
12
- "templateRef": "dcw-temp-sp",
13
- "nodeId": "dw-3cd5c7b6",
14
- "ok": true,
15
- "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
16
- "value": 180
17
- }
18
- ]
19
- },
20
- {
21
- "id": "rr-d486ce72",
22
- "recipeId": "rc-0a9abcf7",
23
- "recipeName": "探针配方Q5",
24
- "productId": "pd-dab719d8",
25
- "lineId": "ln-42c6d982",
26
- "startedAt": "2026-08-30T02:15:11.404Z",
27
- "endedAt": "2026-08-30T02:23:06.752Z",
28
- "results": [
29
- {
30
- "templateRef": "dcw-temp-sp",
31
- "nodeId": "dw-7879db6b",
32
- "ok": true,
33
- "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
34
- "value": 180
35
- }
36
- ]
37
- },
38
- {
39
- "id": "rr-a7f2b569",
40
- "recipeId": "rc-4bc5e73d",
41
- "recipeName": "探针配方Q5",
42
- "productId": "pd-ec8220db",
43
- "lineId": "ln-0958d4da",
44
- "startedAt": "2026-08-30T02:29:09.532Z",
45
- "endedAt": "2026-08-30T02:35:36.229Z",
46
- "results": [
47
- {
48
- "templateRef": "dcw-temp-sp",
49
- "nodeId": "dw-f58fda28",
50
- "ok": true,
51
- "message": "写入并回读一致:180 → raw 1200,回读 180(标定后物理值 180)",
52
- "value": 180
53
- }
54
- ]
55
- },
56
- {
57
- "id": "rr-aaf8e2c2",
58
- "recipeId": "rc-540ea9c3",
59
- "recipeName": "终审配方A",
60
- "productId": "pd-641f7dee",
61
- "lineId": "ln-eb53bc4d",
62
- "startedAt": "2026-08-30T07:41:33.834Z",
63
- "endedAt": "2026-08-30T07:41:54.080Z",
64
- "results": [
65
- {
66
- "templateRef": "dcw-temp-sp",
67
- "nodeId": "dw-b361c30f",
68
- "ok": true,
69
- "message": "写入并回读一致:182 → raw 1280,回读 182(标定后物理值 182)",
70
- "value": 182
71
- }
72
- ]
73
- },
74
- {
75
- "id": "rr-adf11ad3",
76
- "recipeId": "rc-db98ac7f",
77
- "recipeName": "控制终审X线配方",
78
- "productId": "pd-3d886f32",
79
- "lineId": "ln-9cc67fe6",
80
- "startedAt": "2026-08-30T07:41:54.376Z",
81
- "endedAt": "2026-08-30T07:42:00.234Z",
82
- "results": [
83
- {
84
- "templateRef": "dcw-temp-sp",
85
- "nodeId": "dw-058c5b13",
86
- "ok": true,
87
- "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
88
- "value": 180
89
- }
90
- ]
91
- },
92
2
  {
93
3
  "id": "rr-4c9920e7",
94
4
  "recipeId": "rc-23cbfa6b",
@@ -5516,5 +5426,140 @@
5516
5426
  "max": 200
5517
5427
  }
5518
5428
  ]
5429
+ },
5430
+ {
5431
+ "id": "rr-875be24a",
5432
+ "recipeId": "rc-59b8eca0",
5433
+ "recipeName": "配方-mtmhgrsn",
5434
+ "productId": "pd-b06ac7d7",
5435
+ "lineId": "ln-40681e03",
5436
+ "startedAt": "2026-09-04T04:58:09.920Z",
5437
+ "endedAt": "2026-09-04T04:58:51.324Z",
5438
+ "results": [
5439
+ {
5440
+ "templateRef": "dcw-temp-sp",
5441
+ "nodeId": "dw-3a3f7a4c",
5442
+ "ok": true,
5443
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
5444
+ "value": 180
5445
+ }
5446
+ ],
5447
+ "paramsSnapshot": [
5448
+ {
5449
+ "nodeId": "dw-3a3f7a4c",
5450
+ "templateRef": "dcw-temp-sp",
5451
+ "value": 180,
5452
+ "min": 176,
5453
+ "max": 188
5454
+ }
5455
+ ]
5456
+ },
5457
+ {
5458
+ "id": "rr-de10d51e",
5459
+ "recipeId": "rc-5667c3cb",
5460
+ "recipeName": "配方-mtmhnz2f",
5461
+ "productId": "pd-a7ccbe70",
5462
+ "lineId": "ln-a284d605",
5463
+ "startedAt": "2026-09-04T05:03:45.894Z",
5464
+ "endedAt": "2026-09-04T05:04:27.237Z",
5465
+ "results": [
5466
+ {
5467
+ "templateRef": "dcw-temp-sp",
5468
+ "nodeId": "dw-42fcd798",
5469
+ "ok": true,
5470
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
5471
+ "value": 180
5472
+ }
5473
+ ],
5474
+ "paramsSnapshot": [
5475
+ {
5476
+ "nodeId": "dw-42fcd798",
5477
+ "templateRef": "dcw-temp-sp",
5478
+ "value": 180,
5479
+ "min": 176,
5480
+ "max": 188
5481
+ }
5482
+ ]
5483
+ },
5484
+ {
5485
+ "id": "rr-9e70a9dc",
5486
+ "recipeId": "rc-ccee1b1b",
5487
+ "recipeName": "探针配方",
5488
+ "productId": "pd-db432902",
5489
+ "lineId": "ln-1b318320",
5490
+ "startedAt": "2026-09-04T05:08:10.103Z",
5491
+ "endedAt": null,
5492
+ "results": [
5493
+ {
5494
+ "templateRef": "dcw-temp-sp",
5495
+ "nodeId": "dw-756e3e07",
5496
+ "ok": true,
5497
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
5498
+ "value": 180
5499
+ }
5500
+ ],
5501
+ "paramsSnapshot": [
5502
+ {
5503
+ "nodeId": "dw-756e3e07",
5504
+ "templateRef": "dcw-temp-sp",
5505
+ "value": 180,
5506
+ "min": 176,
5507
+ "max": 188
5508
+ }
5509
+ ]
5510
+ },
5511
+ {
5512
+ "id": "rr-dbb44962",
5513
+ "recipeId": "rc-c73f8aed",
5514
+ "recipeName": "探针配方",
5515
+ "productId": "pd-f6296ca1",
5516
+ "lineId": "ln-c50d97f5",
5517
+ "startedAt": "2026-09-04T05:08:56.257Z",
5518
+ "endedAt": "2026-09-04T05:09:02.608Z",
5519
+ "results": [
5520
+ {
5521
+ "templateRef": "dcw-temp-sp",
5522
+ "nodeId": "dw-1ccbe1a8",
5523
+ "ok": true,
5524
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
5525
+ "value": 180
5526
+ }
5527
+ ],
5528
+ "paramsSnapshot": [
5529
+ {
5530
+ "nodeId": "dw-1ccbe1a8",
5531
+ "templateRef": "dcw-temp-sp",
5532
+ "value": 180,
5533
+ "min": 176,
5534
+ "max": 188
5535
+ }
5536
+ ]
5537
+ },
5538
+ {
5539
+ "id": "rr-02e1b75d",
5540
+ "recipeId": "rc-839041c6",
5541
+ "recipeName": "配方-mtmhyn1r",
5542
+ "productId": "pd-cfe2e059",
5543
+ "lineId": "ln-826f8518",
5544
+ "startedAt": "2026-09-04T05:12:03.638Z",
5545
+ "endedAt": "2026-09-04T05:12:13.981Z",
5546
+ "results": [
5547
+ {
5548
+ "templateRef": "dcw-temp-sp",
5549
+ "nodeId": "dw-3b6fd688",
5550
+ "ok": true,
5551
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
5552
+ "value": 180
5553
+ }
5554
+ ],
5555
+ "paramsSnapshot": [
5556
+ {
5557
+ "nodeId": "dw-3b6fd688",
5558
+ "templateRef": "dcw-temp-sp",
5559
+ "value": 180,
5560
+ "min": 176,
5561
+ "max": 188
5562
+ }
5563
+ ]
5519
5564
  }
5520
5565
  ]
@@ -11218,5 +11218,125 @@
11218
11218
  "message": "写入并回读一致:180 → raw 180,回读 180(标定后物理值 180)",
11219
11219
  "recipeRunId": null,
11220
11220
  "at": "2026-09-03T17:13:25.417Z"
11221
+ },
11222
+ {
11223
+ "id": "wh-6422a493",
11224
+ "nodeId": "dw-3a3f7a4c",
11225
+ "nodeName": "温度设定-mtmhgrsn",
11226
+ "param": "烘箱温度设定",
11227
+ "eng": 180,
11228
+ "raw": 180,
11229
+ "ok": true,
11230
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
11231
+ "recipeRunId": "rr-875be24a",
11232
+ "at": "2026-09-04T04:58:09.922Z"
11233
+ },
11234
+ {
11235
+ "id": "wh-a879d0d1",
11236
+ "nodeId": "dw-3a3f7a4c",
11237
+ "nodeName": "温度设定-mtmhgrsn",
11238
+ "param": "烘箱温度设定",
11239
+ "eng": 182,
11240
+ "raw": 182,
11241
+ "ok": true,
11242
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
11243
+ "recipeRunId": null,
11244
+ "at": "2026-09-04T04:58:20.275Z"
11245
+ },
11246
+ {
11247
+ "id": "wh-2f31edbe",
11248
+ "nodeId": "dw-42fcd798",
11249
+ "nodeName": "温度设定-mtmhnz2f",
11250
+ "param": "烘箱温度设定",
11251
+ "eng": 180,
11252
+ "raw": 180,
11253
+ "ok": true,
11254
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
11255
+ "recipeRunId": "rr-de10d51e",
11256
+ "at": "2026-09-04T05:03:45.895Z"
11257
+ },
11258
+ {
11259
+ "id": "wh-20048a5a",
11260
+ "nodeId": "dw-42fcd798",
11261
+ "nodeName": "温度设定-mtmhnz2f",
11262
+ "param": "烘箱温度设定",
11263
+ "eng": 182,
11264
+ "raw": 182,
11265
+ "ok": true,
11266
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
11267
+ "recipeRunId": null,
11268
+ "at": "2026-09-04T05:03:56.066Z"
11269
+ },
11270
+ {
11271
+ "id": "wh-57a4674b",
11272
+ "nodeId": "dw-756e3e07",
11273
+ "nodeName": "探针设定",
11274
+ "param": "烘箱温度设定",
11275
+ "eng": 180,
11276
+ "raw": 180,
11277
+ "ok": true,
11278
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
11279
+ "recipeRunId": "rr-9e70a9dc",
11280
+ "at": "2026-09-04T05:08:10.104Z"
11281
+ },
11282
+ {
11283
+ "id": "wh-9523cb8d",
11284
+ "nodeId": "dw-756e3e07",
11285
+ "nodeName": "探针设定",
11286
+ "param": "烘箱温度设定",
11287
+ "eng": 182,
11288
+ "raw": 182,
11289
+ "ok": true,
11290
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
11291
+ "recipeRunId": null,
11292
+ "at": "2026-09-04T05:08:10.216Z"
11293
+ },
11294
+ {
11295
+ "id": "wh-401d35e3",
11296
+ "nodeId": "dw-1ccbe1a8",
11297
+ "nodeName": "探针设定",
11298
+ "param": "烘箱温度设定",
11299
+ "eng": 180,
11300
+ "raw": 180,
11301
+ "ok": true,
11302
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
11303
+ "recipeRunId": "rr-dbb44962",
11304
+ "at": "2026-09-04T05:08:56.258Z"
11305
+ },
11306
+ {
11307
+ "id": "wh-47450bdc",
11308
+ "nodeId": "dw-1ccbe1a8",
11309
+ "nodeName": "探针设定",
11310
+ "param": "烘箱温度设定",
11311
+ "eng": 182,
11312
+ "raw": 182,
11313
+ "ok": true,
11314
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
11315
+ "recipeRunId": null,
11316
+ "at": "2026-09-04T05:08:56.411Z"
11317
+ },
11318
+ {
11319
+ "id": "wh-134e2b8a",
11320
+ "nodeId": "dw-3b6fd688",
11321
+ "nodeName": "温度设定-mtmhyn1r",
11322
+ "param": "烘箱温度设定",
11323
+ "eng": 180,
11324
+ "raw": 180,
11325
+ "ok": true,
11326
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
11327
+ "recipeRunId": "rr-02e1b75d",
11328
+ "at": "2026-09-04T05:12:03.639Z"
11329
+ },
11330
+ {
11331
+ "id": "wh-56b9204e",
11332
+ "nodeId": "dw-3b6fd688",
11333
+ "nodeName": "温度设定-mtmhyn1r",
11334
+ "param": "烘箱温度设定",
11335
+ "eng": 182,
11336
+ "raw": 182,
11337
+ "ok": true,
11338
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
11339
+ "recipeRunId": null,
11340
+ "at": "2026-09-04T05:12:13.804Z"
11221
11341
  }
11222
11342
  ]