agentworkshop 0.7.7 → 0.7.8
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.
- package/.AgentWorkShop/prompts/host-tools.json +1 -1
- package/.output/.AgentWorkShop/prompts/host-tools.json +1 -1
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{CQiKcuoG.js → Dc46i75T.js} +3 -3
- package/.output/public/_nuxt/R_Wv_Nd9.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/e5bb1803-86d9-43b3-85be-dc787dc9a978.json +1 -0
- package/.output/public/_nuxt/{entry.DvlXlPwx.css → entry.5qf6EqfN.css} +1 -1
- package/.output/public/_nuxt/workshop.3kAcLB_M.css +1 -0
- package/.output/server/chunks/_/nitro.mjs +2468 -2407
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/TownView-B5KifIaT.mjs +1 -1
- package/.output/server/chunks/build/_id_-C-ewLgfl.mjs +1 -1
- package/.output/server/chunks/build/_id_-Ct4Jhvl1.mjs +1 -1
- package/.output/server/chunks/build/daq-D9RA_uze.mjs +1 -1
- package/.output/server/chunks/build/dcw-BTM5YU-B.mjs +1 -1
- package/.output/server/chunks/build/useDaqStream-hwkhJHFU.mjs +1 -1
- package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs +1 -1
- package/.output/server/chunks/build/{workshop-iCzNRifn.mjs → workshop-D5CQj2A8.mjs} +45 -39
- package/.output/server/chunks/build/workshop-D5CQj2A8.mjs.map +1 -0
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs +25 -0
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +10 -2
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +27 -7
- package/README.md +455 -435
- package/app/pages/workshop/index.vue +25 -6
- package/config.yml +11 -1
- package/i18n/dicts/settings.json +4 -0
- package/i18n/locales/en.ts +4 -0
- package/i18n/locales/zh-CN.ts +4 -0
- package/package.json +1 -1
- package/scripts/_dbg-codex-handshake.ts +30 -0
- package/scripts/_dbg-codex-sandbox.ts +58 -0
- package/scripts/_dbg-codex-turn.ts +65 -0
- package/scripts/_dbg-interval-config.mjs +145 -0
- package/scripts/_dbg-setup-e2e.mjs +88 -0
- package/scripts/e2e-harness-provider-task.mjs +126 -0
- package/server/api/users/setup-status.get.ts +8 -0
- package/server/api/workshop/daq/[id]/samples.get.ts +4 -2
- package/server/data/daqs.json +97 -45
- package/server/data/dcw-lines.json +7 -0
- package/server/data/dcw-products.json +21 -0
- package/server/data/dcw-recipes.json +84 -0
- package/server/data/dcw-rollback.json +39 -6
- package/server/data/dcw-runs.json +81 -75
- package/server/data/dcw-writes.json +36 -0
- package/server/data/dcws.json +374 -299
- package/server/data/line-runs.json +6 -6
- package/server/plugins/security.ts +46 -50
- package/server/repositories/user.repository.ts +384 -414
- package/server/services/system-config.ts +2 -0
- package/server/services/user.service.ts +8 -3
- package/server/services/workshop/agents/adapters/line-spawn.ts +6 -3
- package/server/services/workshop/agents/host-tool-bridge.ts +21 -1
- package/server/services/workshop/agents/industrial-tools.ts +5 -3
- package/server/services/workshop/daq/daq-controller.ts +34 -6
- package/server/services/workshop/daq/daq-node.ts +3 -3
- package/server/services/workshop/daq/daq-runtime.ts +4 -3
- package/server/services/workshop/dcw/dcw-controller.ts +4 -2
- package/server/services/workshop/settings.ts +23 -0
- package/shared/config/schema.json +4 -0
- package/.output/public/_nuxt/C-GarxYC.js +0 -1
- package/.output/public/_nuxt/builds/meta/14df171d-89cb-43ec-ad6f-9df72d6da7f5.json +0 -1
- package/.output/public/_nuxt/workshop.B98sHiJq.css +0 -1
- package/.output/server/chunks/build/workshop-iCzNRifn.mjs.map +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多 Harness + 自定义 LLM provider 简单任务 E2E(一个 Channel,四种引擎)。
|
|
3
|
+
* NO_PROXY='127.0.0.1,localhost' node scripts/e2e-harness-provider-task.mjs [--base http://127.0.0.1:3001]
|
|
4
|
+
*
|
|
5
|
+
* P1 provider 目录:四引擎目录均含 glm-5.3-flash(可选)
|
|
6
|
+
* P2 同 Channel 四 harness worker(omp=zhipu-coding-plan / codex=cc-switch /
|
|
7
|
+
* opencode=zhipuai-coding-plan / dsh=ustc;模型均 glm-5.3-flash)
|
|
8
|
+
* P3 简单任务×4:真实 LLM 回合执行并 complete_task → 全部 COMPLETED(可用)
|
|
9
|
+
*/
|
|
10
|
+
const BASE = (() => {
|
|
11
|
+
const i = process.argv.indexOf('--base')
|
|
12
|
+
return i > 0 ? process.argv[i + 1] : 'http://127.0.0.1:3001'
|
|
13
|
+
})()
|
|
14
|
+
const TAG = Date.now().toString(36)
|
|
15
|
+
let failures = 0
|
|
16
|
+
let passed = 0
|
|
17
|
+
const results = []
|
|
18
|
+
const check = (id, name, ok, detail = '') => {
|
|
19
|
+
console.log(` ${ok ? 'PASS' : 'FAIL'} ${id} ${name}${detail ? ` — ${detail}` : ''}`)
|
|
20
|
+
results.push({ id, name, ok, detail })
|
|
21
|
+
ok ? passed++ : failures++
|
|
22
|
+
}
|
|
23
|
+
const sleep = ms => new Promise(r => setTimeout(r, ms))
|
|
24
|
+
const api = async (method, path, { body, token } = {}, attempt = 0) => {
|
|
25
|
+
try {
|
|
26
|
+
const res = await fetch(`${BASE}${path}`, {
|
|
27
|
+
method,
|
|
28
|
+
headers: { 'content-type': 'application/json', ...(token ? { authorization: `Bearer ${token}` } : {}) },
|
|
29
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
30
|
+
})
|
|
31
|
+
return { status: res.status, ...(await res.json().catch(() => ({}))) }
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if (attempt < 10) {
|
|
35
|
+
await sleep(3000)
|
|
36
|
+
return api(method, path, { body, token }, attempt + 1)
|
|
37
|
+
}
|
|
38
|
+
throw err
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const ENGINES = [
|
|
43
|
+
{ key: 'omp', harness: 'omp', cfg: { provider: 'zhipu-coding-plan', model: 'glm-5.3-flash' } },
|
|
44
|
+
{ key: 'codex', harness: 'codex', cfg: { model: 'glm-5.3-flash', approvalPolicy: 'never' } },
|
|
45
|
+
{ key: 'dsh', harness: 'dsh', cfg: { provider: 'ustc', model: 'glm-5.3-flash' } },
|
|
46
|
+
{ key: 'opencode', harness: 'opencode', cfg: { model: 'zhipuai-coding-plan/glm-5.3-flash' } },
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
async function main() {
|
|
50
|
+
console.log(`\n━━━ 多 Harness + provider 简单任务 E2E @ ${BASE} (tag=${TAG}) ━━━`)
|
|
51
|
+
const reg = await api('POST', '/api/users/register', { body: { email: `hp-${TAG}@test.local`, password: 'Passw0rd!123', name: `hp-${TAG}` } })
|
|
52
|
+
const token = reg.data?.token
|
|
53
|
+
if (!token) throw new Error('注册失败')
|
|
54
|
+
const auth = { token }
|
|
55
|
+
|
|
56
|
+
// ── P1 provider 目录(可选性) ──
|
|
57
|
+
for (const e of ENGINES) {
|
|
58
|
+
const r = await api('GET', `/api/workshop/harnesses/${e.harness}/providers`, auth)
|
|
59
|
+
const provs = r.data?.catalog?.providers ?? []
|
|
60
|
+
const has = provs.some(p => p.models.some(m => m.id === 'glm-5.3-flash'))
|
|
61
|
+
check(`P1.${e.key}`, `${e.harness} 目录含 glm-5.3-flash(可选)`, has, provs.map(p => p.id).join(',').slice(0, 60))
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ── P2 同 Channel 组建(不同 harness worker + 自定义 provider/model) ──
|
|
65
|
+
const ch = (await api('POST', '/api/workshop/channels', {
|
|
66
|
+
body: {
|
|
67
|
+
name: `harness-mix-${TAG}`,
|
|
68
|
+
leadAgent: { name: `lead-${TAG}`, harness: 'mock', config: { delayMs: 60 } },
|
|
69
|
+
}, ...auth,
|
|
70
|
+
})).data
|
|
71
|
+
const channelId = ch?.channelId
|
|
72
|
+
check('P2.1', 'Channel 创建(mock lead)', Boolean(channelId))
|
|
73
|
+
const workers = {}
|
|
74
|
+
for (const e of ENGINES) {
|
|
75
|
+
const c = await api('POST', '/api/workshop/agents', {
|
|
76
|
+
body: { name: `${e.key}-${TAG}`, harness: e.harness, config: { ...e.cfg, systemPromptPrefix: '你是测试执行员:严格按任务完成,完成后立即调用 complete_task。' } }, ...auth,
|
|
77
|
+
})
|
|
78
|
+
workers[e.key] = c.data
|
|
79
|
+
check(`P2.${e.key}-tpl`, `${e.harness} 模板(provider=${e.cfg.provider ?? 'default'},model=${e.cfg.model})`, Boolean(c.data?.id))
|
|
80
|
+
const join = await api('POST', `/api/workshop/channels/${channelId}/agents`, { body: { agentId: c.data.id, role: 'worker' }, ...auth })
|
|
81
|
+
if (join.code !== 0) check(`P2.${e.key}-join`, `${e.key} 入队`, false, join.message ?? '')
|
|
82
|
+
}
|
|
83
|
+
const members = (await api('GET', `/api/workshop/channels/${channelId}/agents`, auth)).data ?? []
|
|
84
|
+
check('P2.join', '四引擎 worker 全部入队(5 成员)', members.length >= 5, `members=${members.length}`)
|
|
85
|
+
|
|
86
|
+
// ── P3 简单任务×4(真实 LLM 回合) ──
|
|
87
|
+
const tasks = {}
|
|
88
|
+
for (const e of ENGINES) {
|
|
89
|
+
const t = await api('POST', `/api/workshop/channels/${channelId}/tasks`, {
|
|
90
|
+
body: {
|
|
91
|
+
title: `smoke-${e.key}-${TAG}`,
|
|
92
|
+
parts: [{ text: '请直接汇报「 Harness 冒烟测试完成」六个字所在的环境时间,然后立即调用 complete_task。不要执行任何其它操作。' }],
|
|
93
|
+
assigneeId: workers[e.key].id,
|
|
94
|
+
}, ...auth,
|
|
95
|
+
})
|
|
96
|
+
tasks[e.key] = t.data?.task?.id ?? t.data?.id
|
|
97
|
+
}
|
|
98
|
+
check('P3.1', '四路简单任务下发', Object.values(tasks).every(Boolean))
|
|
99
|
+
|
|
100
|
+
const states = {}
|
|
101
|
+
const deadline = Date.now() + 16 * 60_000
|
|
102
|
+
while (Date.now() < deadline && Object.keys(states).length < 4) {
|
|
103
|
+
const list = await api('GET', `/api/workshop/channels/${channelId}/tasks`, auth)
|
|
104
|
+
for (const [k, id] of Object.entries(tasks)) {
|
|
105
|
+
if (states[k]) continue
|
|
106
|
+
const me = (list.data ?? []).find(x => x.id === id)
|
|
107
|
+
if (me && ['COMPLETED', 'FAILED', 'CANCELED'].includes(me.state)) states[k] = me.state
|
|
108
|
+
}
|
|
109
|
+
await sleep(6000)
|
|
110
|
+
}
|
|
111
|
+
for (const e of ENGINES) {
|
|
112
|
+
check(`P3.${e.key}`, `${e.harness}(glm-5.3-flash) 简单任务 COMPLETED`, states[e.key] === 'COMPLETED', `state=${states[e.key] ?? 'RUNNING'}`)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// ── 清理 ──
|
|
116
|
+
await api('DELETE', `/api/workshop/channels/${channelId}?purge=1`, auth).catch(() => {})
|
|
117
|
+
|
|
118
|
+
console.log(`\n━━━ 多 Harness provider E2E: ${passed} passed / ${failures} failed ━━━`)
|
|
119
|
+
if (failures) for (const r of results.filter(x => !x.ok)) console.log(` ${r.id} ${r.name} — ${r.detail}`)
|
|
120
|
+
process.exit(failures === 0 ? 0 : 1)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
main().catch((err) => {
|
|
124
|
+
console.error('FATAL', err)
|
|
125
|
+
process.exit(1)
|
|
126
|
+
})
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { userRepository } from '../../repositories/user.repository'
|
|
2
|
+
import { defineApiHandler } from '../../utils/response'
|
|
3
|
+
|
|
4
|
+
/** GET /api/users/setup-status —— 公开:系统是否处于初始化状态。
|
|
5
|
+
* true = 无活跃管理员 → 登录门呈现"注册管理员"表单,首个注册账号自动成为 admin */
|
|
6
|
+
export default defineApiHandler(async () => {
|
|
7
|
+
return { needsSetup: !userRepository.hasActiveAdmin() }
|
|
8
|
+
})
|
|
@@ -6,15 +6,17 @@ import { getQuery, getRouterParam } from 'h3'
|
|
|
6
6
|
import { resolveUser } from '@/server/api/workshop/caller'
|
|
7
7
|
import { defineApiHandler } from '@/server/utils/response'
|
|
8
8
|
import { getDaqController } from '@/server/services/workshop/daq/daq-controller'
|
|
9
|
+
import { daqRuntimeSettings } from '@/server/services/workshop/settings'
|
|
9
10
|
|
|
10
11
|
export default defineApiHandler(async (event) => {
|
|
11
12
|
resolveUser(event)
|
|
12
13
|
const id = getRouterParam(event, 'id') ?? ''
|
|
13
14
|
const q = getQuery(event)
|
|
14
15
|
const num = (k: string): number | undefined => (q[k] != null && !Number.isNaN(Number(q[k])) ? Number(q[k]) : undefined)
|
|
15
|
-
// 时间间隔参数(bucketMs)
|
|
16
|
+
// 时间间隔参数(bucketMs):缺省与下限来自 daq.query.*(live 配置,热重载)
|
|
17
|
+
const { defaultBucketMs, minBucketMs } = daqRuntimeSettings().query
|
|
16
18
|
const rawBucket = num('bucketMs')
|
|
17
|
-
const bucketMs = rawBucket == null ?
|
|
19
|
+
const bucketMs = rawBucket == null ? defaultBucketMs : Math.max(minBucketMs, Math.min(3_600_000, Math.round(rawBucket)))
|
|
18
20
|
const points = await getDaqController().samples(id, {
|
|
19
21
|
fromMs: num('from'),
|
|
20
22
|
toMs: num('to'),
|
package/server/data/daqs.json
CHANGED
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"posX": 1695,
|
|
65
65
|
"posZ": 1135,
|
|
66
66
|
"lineId": "ln-af002514",
|
|
67
|
-
"value":
|
|
67
|
+
"value": 169.5,
|
|
68
68
|
"state": "ok",
|
|
69
|
-
"lastAt": "2026-09-
|
|
69
|
+
"lastAt": "2026-09-05T20:09:01.412+08:00",
|
|
70
70
|
"createdAt": "2026-08-27T12:39:08.110Z"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
@@ -308,9 +308,9 @@
|
|
|
308
308
|
"deviceBindingId": null,
|
|
309
309
|
"driverConfig": {},
|
|
310
310
|
"lineId": "ln-af002514",
|
|
311
|
-
"value":
|
|
311
|
+
"value": 317,
|
|
312
312
|
"state": "ok",
|
|
313
|
-
"lastAt": "2026-09-
|
|
313
|
+
"lastAt": "2026-09-05T20:09:01.412+08:00",
|
|
314
314
|
"createdAt": "2026-08-28T09:37:38.518Z"
|
|
315
315
|
},
|
|
316
316
|
{
|
|
@@ -330,9 +330,9 @@
|
|
|
330
330
|
"deviceBindingId": null,
|
|
331
331
|
"driverConfig": {},
|
|
332
332
|
"lineId": "ln-af002514",
|
|
333
|
-
"value": 169.
|
|
333
|
+
"value": 169.4,
|
|
334
334
|
"state": "ok",
|
|
335
|
-
"lastAt": "2026-09-
|
|
335
|
+
"lastAt": "2026-09-05T20:09:01.412+08:00",
|
|
336
336
|
"createdAt": "2026-08-29T03:30:57.463Z"
|
|
337
337
|
},
|
|
338
338
|
{
|
|
@@ -1012,9 +1012,9 @@
|
|
|
1012
1012
|
"posX": 2395,
|
|
1013
1013
|
"posZ": 1135,
|
|
1014
1014
|
"lineId": "ln-af002514",
|
|
1015
|
-
"value": 172.
|
|
1015
|
+
"value": 172.7,
|
|
1016
1016
|
"state": "ok",
|
|
1017
|
-
"lastAt": "2026-09-
|
|
1017
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
1018
1018
|
"createdAt": "2026-08-31T04:07:19.038Z"
|
|
1019
1019
|
},
|
|
1020
1020
|
{
|
|
@@ -3026,9 +3026,9 @@
|
|
|
3026
3026
|
"posX": 120,
|
|
3027
3027
|
"posZ": 120,
|
|
3028
3028
|
"lineId": "ln-af002514",
|
|
3029
|
-
"value":
|
|
3030
|
-
"state": "
|
|
3031
|
-
"lastAt": "2026-09-
|
|
3029
|
+
"value": 1.0214,
|
|
3030
|
+
"state": "alarm",
|
|
3031
|
+
"lastAt": "2026-09-05T20:09:01.412+08:00",
|
|
3032
3032
|
"createdAt": "2026-09-03T10:17:59.182Z"
|
|
3033
3033
|
},
|
|
3034
3034
|
{
|
|
@@ -3050,9 +3050,9 @@
|
|
|
3050
3050
|
"posX": 120,
|
|
3051
3051
|
"posZ": 120,
|
|
3052
3052
|
"lineId": "ln-af002514",
|
|
3053
|
-
"value": 0.
|
|
3054
|
-
"state": "
|
|
3055
|
-
"lastAt": "2026-09-
|
|
3053
|
+
"value": 0.9829,
|
|
3054
|
+
"state": "alarm",
|
|
3055
|
+
"lastAt": "2026-09-05T20:09:01.412+08:00",
|
|
3056
3056
|
"createdAt": "2026-09-03T11:18:01.401Z"
|
|
3057
3057
|
},
|
|
3058
3058
|
{
|
|
@@ -3072,9 +3072,9 @@
|
|
|
3072
3072
|
"deviceBindingId": "dev-mthzr991-ujuad",
|
|
3073
3073
|
"driverConfig": {},
|
|
3074
3074
|
"lineId": "ln-af002514",
|
|
3075
|
-
"value":
|
|
3076
|
-
"state": "
|
|
3077
|
-
"lastAt": "2026-09-
|
|
3075
|
+
"value": 1.0231,
|
|
3076
|
+
"state": "alarm",
|
|
3077
|
+
"lastAt": "2026-09-05T20:09:01.412+08:00",
|
|
3078
3078
|
"createdAt": "2026-09-03T11:34:59.332Z"
|
|
3079
3079
|
},
|
|
3080
3080
|
{
|
|
@@ -3214,9 +3214,9 @@
|
|
|
3214
3214
|
"deviceBindingId": null,
|
|
3215
3215
|
"driverConfig": {},
|
|
3216
3216
|
"lineId": "ln-1b318320",
|
|
3217
|
-
"value":
|
|
3217
|
+
"value": 167,
|
|
3218
3218
|
"state": "ok",
|
|
3219
|
-
"lastAt": "2026-09-
|
|
3219
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
3220
3220
|
"createdAt": "2026-09-04T05:08:10.069Z"
|
|
3221
3221
|
},
|
|
3222
3222
|
{
|
|
@@ -3749,9 +3749,9 @@
|
|
|
3749
3749
|
"jsonPath": "data.temp"
|
|
3750
3750
|
},
|
|
3751
3751
|
"lineId": "ln-6a34fbc7",
|
|
3752
|
-
"value":
|
|
3752
|
+
"value": 58.9,
|
|
3753
3753
|
"state": "alarm",
|
|
3754
|
-
"lastAt": "2026-09-
|
|
3754
|
+
"lastAt": "2026-09-05T20:09:03.477+08:00",
|
|
3755
3755
|
"createdAt": "2026-09-05T05:47:00.640Z"
|
|
3756
3756
|
},
|
|
3757
3757
|
{
|
|
@@ -3774,9 +3774,9 @@
|
|
|
3774
3774
|
"jsonPath": "data.value"
|
|
3775
3775
|
},
|
|
3776
3776
|
"lineId": "ln-6a34fbc7",
|
|
3777
|
-
"value": 42.
|
|
3777
|
+
"value": 42.4,
|
|
3778
3778
|
"state": "alarm",
|
|
3779
|
-
"lastAt": "2026-09-
|
|
3779
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
3780
3780
|
"createdAt": "2026-09-05T05:47:00.697Z"
|
|
3781
3781
|
},
|
|
3782
3782
|
{
|
|
@@ -3804,9 +3804,9 @@
|
|
|
3804
3804
|
"byteOrder": "big"
|
|
3805
3805
|
},
|
|
3806
3806
|
"lineId": "ln-6a34fbc7",
|
|
3807
|
-
"value": 0.
|
|
3807
|
+
"value": 0.8,
|
|
3808
3808
|
"state": "ok",
|
|
3809
|
-
"lastAt": "2026-09-
|
|
3809
|
+
"lastAt": "2026-09-05T20:09:02.706+08:00",
|
|
3810
3810
|
"createdAt": "2026-09-05T05:47:00.821Z"
|
|
3811
3811
|
},
|
|
3812
3812
|
{
|
|
@@ -3835,7 +3835,7 @@
|
|
|
3835
3835
|
"lineId": "ln-6a34fbc7",
|
|
3836
3836
|
"value": 66,
|
|
3837
3837
|
"state": "alarm",
|
|
3838
|
-
"lastAt": "2026-09-
|
|
3838
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
3839
3839
|
"createdAt": "2026-09-05T05:47:00.864Z"
|
|
3840
3840
|
},
|
|
3841
3841
|
{
|
|
@@ -3858,9 +3858,9 @@
|
|
|
3858
3858
|
"nodeId": "ns=2;s=AW.Temp"
|
|
3859
3859
|
},
|
|
3860
3860
|
"lineId": "ln-6a34fbc7",
|
|
3861
|
-
"value":
|
|
3861
|
+
"value": 183.5,
|
|
3862
3862
|
"state": "warn",
|
|
3863
|
-
"lastAt": "2026-09-
|
|
3863
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
3864
3864
|
"createdAt": "2026-09-05T05:47:03.624Z"
|
|
3865
3865
|
},
|
|
3866
3866
|
{
|
|
@@ -3888,9 +3888,9 @@
|
|
|
3888
3888
|
"byteOrder": "big"
|
|
3889
3889
|
},
|
|
3890
3890
|
"lineId": "ln-6a34fbc7",
|
|
3891
|
-
"value": -0.
|
|
3891
|
+
"value": -0.4,
|
|
3892
3892
|
"state": "alarm",
|
|
3893
|
-
"lastAt": "2026-09-
|
|
3893
|
+
"lastAt": "2026-09-05T20:09:02.188+08:00",
|
|
3894
3894
|
"createdAt": "2026-09-05T05:47:03.680Z"
|
|
3895
3895
|
},
|
|
3896
3896
|
{
|
|
@@ -3959,9 +3959,9 @@
|
|
|
3959
3959
|
"jsonPath": "data.temp"
|
|
3960
3960
|
},
|
|
3961
3961
|
"lineId": "ln-419463e0",
|
|
3962
|
-
"value":
|
|
3962
|
+
"value": 58.9,
|
|
3963
3963
|
"state": "alarm",
|
|
3964
|
-
"lastAt": "2026-09-
|
|
3964
|
+
"lastAt": "2026-09-05T20:09:03.477+08:00",
|
|
3965
3965
|
"createdAt": "2026-09-05T06:09:13.444Z"
|
|
3966
3966
|
},
|
|
3967
3967
|
{
|
|
@@ -3984,9 +3984,9 @@
|
|
|
3984
3984
|
"jsonPath": "data.value"
|
|
3985
3985
|
},
|
|
3986
3986
|
"lineId": "ln-419463e0",
|
|
3987
|
-
"value": 42.
|
|
3987
|
+
"value": 42.1,
|
|
3988
3988
|
"state": "alarm",
|
|
3989
|
-
"lastAt": "2026-09-
|
|
3989
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
3990
3990
|
"createdAt": "2026-09-05T06:09:13.490Z"
|
|
3991
3991
|
},
|
|
3992
3992
|
{
|
|
@@ -4014,9 +4014,9 @@
|
|
|
4014
4014
|
"byteOrder": "big"
|
|
4015
4015
|
},
|
|
4016
4016
|
"lineId": "ln-419463e0",
|
|
4017
|
-
"value": 0.
|
|
4017
|
+
"value": 0.8,
|
|
4018
4018
|
"state": "ok",
|
|
4019
|
-
"lastAt": "2026-09-
|
|
4019
|
+
"lastAt": "2026-09-05T20:09:02.965+08:00",
|
|
4020
4020
|
"createdAt": "2026-09-05T06:09:13.540Z"
|
|
4021
4021
|
},
|
|
4022
4022
|
{
|
|
@@ -4045,7 +4045,7 @@
|
|
|
4045
4045
|
"lineId": "ln-419463e0",
|
|
4046
4046
|
"value": 66,
|
|
4047
4047
|
"state": "alarm",
|
|
4048
|
-
"lastAt": "2026-09-
|
|
4048
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
4049
4049
|
"createdAt": "2026-09-05T06:09:13.567Z"
|
|
4050
4050
|
},
|
|
4051
4051
|
{
|
|
@@ -4068,9 +4068,9 @@
|
|
|
4068
4068
|
"nodeId": "ns=2;s=AW.Temp"
|
|
4069
4069
|
},
|
|
4070
4070
|
"lineId": "ln-419463e0",
|
|
4071
|
-
"value":
|
|
4071
|
+
"value": 183.5,
|
|
4072
4072
|
"state": "warn",
|
|
4073
|
-
"lastAt": "2026-09-
|
|
4073
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
4074
4074
|
"createdAt": "2026-09-05T06:09:14.128Z"
|
|
4075
4075
|
},
|
|
4076
4076
|
{
|
|
@@ -4098,9 +4098,9 @@
|
|
|
4098
4098
|
"byteOrder": "big"
|
|
4099
4099
|
},
|
|
4100
4100
|
"lineId": "ln-419463e0",
|
|
4101
|
-
"value":
|
|
4101
|
+
"value": 0,
|
|
4102
4102
|
"state": "alarm",
|
|
4103
|
-
"lastAt": "2026-09-
|
|
4103
|
+
"lastAt": "2026-09-05T20:09:03.477+08:00",
|
|
4104
4104
|
"createdAt": "2026-09-05T06:09:14.173Z"
|
|
4105
4105
|
},
|
|
4106
4106
|
{
|
|
@@ -4350,9 +4350,9 @@
|
|
|
4350
4350
|
"byteOrder": "big"
|
|
4351
4351
|
},
|
|
4352
4352
|
"lineId": "ln-3548f325",
|
|
4353
|
-
"value": -0.
|
|
4353
|
+
"value": -0.1,
|
|
4354
4354
|
"state": "alarm",
|
|
4355
|
-
"lastAt": "2026-09-
|
|
4355
|
+
"lastAt": "2026-09-05T20:09:02.452+08:00",
|
|
4356
4356
|
"createdAt": "2026-09-05T07:23:51.869Z"
|
|
4357
4357
|
},
|
|
4358
4358
|
{
|
|
@@ -4564,9 +4564,61 @@
|
|
|
4564
4564
|
"deviceBindingId": null,
|
|
4565
4565
|
"driverConfig": {},
|
|
4566
4566
|
"lineId": "ln-871ac52d",
|
|
4567
|
-
"value": 43.
|
|
4567
|
+
"value": 43.8,
|
|
4568
4568
|
"state": "ok",
|
|
4569
|
-
"lastAt": "2026-09-
|
|
4569
|
+
"lastAt": "2026-09-05T20:09:03.215+08:00",
|
|
4570
4570
|
"createdAt": "2026-09-05T09:47:55.620Z"
|
|
4571
|
+
},
|
|
4572
|
+
{
|
|
4573
|
+
"id": "dn-12f70c3b",
|
|
4574
|
+
"templateRef": "daq-temp-tc",
|
|
4575
|
+
"name": "MQTT温度-mtokh78a",
|
|
4576
|
+
"driver": "mqtt",
|
|
4577
|
+
"enabled": true,
|
|
4578
|
+
"intervalMs": 1000,
|
|
4579
|
+
"publishIntervalMs": 0,
|
|
4580
|
+
"unit": "℃",
|
|
4581
|
+
"decimals": 1,
|
|
4582
|
+
"min": 150,
|
|
4583
|
+
"max": 185,
|
|
4584
|
+
"warnLow": 152.8,
|
|
4585
|
+
"warnHigh": 182.2,
|
|
4586
|
+
"deviceBindingId": null,
|
|
4587
|
+
"driverConfig": {
|
|
4588
|
+
"host": "127.0.0.1",
|
|
4589
|
+
"port": 18830,
|
|
4590
|
+
"topic": "aw/sim/temp",
|
|
4591
|
+
"jsonPath": "data.temp"
|
|
4592
|
+
},
|
|
4593
|
+
"lineId": "ln-23810e78",
|
|
4594
|
+
"value": null,
|
|
4595
|
+
"state": "offline",
|
|
4596
|
+
"lastAt": null,
|
|
4597
|
+
"createdAt": "2026-09-05T23:58:31.357+08:00"
|
|
4598
|
+
},
|
|
4599
|
+
{
|
|
4600
|
+
"id": "dn-e0cd4d25",
|
|
4601
|
+
"templateRef": "daq-temp-tc",
|
|
4602
|
+
"name": "HTTP流量-mtokh78a",
|
|
4603
|
+
"driver": "http",
|
|
4604
|
+
"enabled": true,
|
|
4605
|
+
"intervalMs": 1000,
|
|
4606
|
+
"publishIntervalMs": 0,
|
|
4607
|
+
"unit": "℃",
|
|
4608
|
+
"decimals": 1,
|
|
4609
|
+
"min": 150,
|
|
4610
|
+
"max": 185,
|
|
4611
|
+
"warnLow": 152.8,
|
|
4612
|
+
"warnHigh": 182.2,
|
|
4613
|
+
"deviceBindingId": null,
|
|
4614
|
+
"driverConfig": {
|
|
4615
|
+
"url": "http://127.0.0.1:1889/api/value",
|
|
4616
|
+
"jsonPath": "data.value"
|
|
4617
|
+
},
|
|
4618
|
+
"lineId": "ln-23810e78",
|
|
4619
|
+
"value": null,
|
|
4620
|
+
"state": "offline",
|
|
4621
|
+
"lastAt": null,
|
|
4622
|
+
"createdAt": "2026-09-05T23:58:31.450+08:00"
|
|
4571
4623
|
}
|
|
4572
4624
|
]
|
|
@@ -1363,5 +1363,12 @@
|
|
|
1363
1363
|
"color": "#35e0a0",
|
|
1364
1364
|
"description": "",
|
|
1365
1365
|
"createdAt": "2026-09-05T18:55:51.023+08:00"
|
|
1366
|
+
},
|
|
1367
|
+
{
|
|
1368
|
+
"id": "ln-23810e78",
|
|
1369
|
+
"name": "全协议产线-mtokh78a",
|
|
1370
|
+
"color": "#41c8f4",
|
|
1371
|
+
"description": "",
|
|
1372
|
+
"createdAt": "2026-09-05T23:58:29.513+08:00"
|
|
1366
1373
|
}
|
|
1367
1374
|
]
|
|
@@ -1223,5 +1223,26 @@
|
|
|
1223
1223
|
"name": "tzc-prod",
|
|
1224
1224
|
"description": "",
|
|
1225
1225
|
"createdAt": "2026-09-05T19:05:14.617+08:00"
|
|
1226
|
+
},
|
|
1227
|
+
{
|
|
1228
|
+
"id": "pd-3ffc5e11",
|
|
1229
|
+
"lineId": "",
|
|
1230
|
+
"name": "cfg-prod",
|
|
1231
|
+
"description": "",
|
|
1232
|
+
"createdAt": "2026-09-05T19:59:44.387+08:00"
|
|
1233
|
+
},
|
|
1234
|
+
{
|
|
1235
|
+
"id": "pd-36b00ed3",
|
|
1236
|
+
"lineId": "",
|
|
1237
|
+
"name": "cfg-prod",
|
|
1238
|
+
"description": "",
|
|
1239
|
+
"createdAt": "2026-09-05T20:04:40.500+08:00"
|
|
1240
|
+
},
|
|
1241
|
+
{
|
|
1242
|
+
"id": "pd-28fc247a",
|
|
1243
|
+
"lineId": "",
|
|
1244
|
+
"name": "cfg-prod",
|
|
1245
|
+
"description": "",
|
|
1246
|
+
"createdAt": "2026-09-05T20:08:42.255+08:00"
|
|
1226
1247
|
}
|
|
1227
1248
|
]
|
|
@@ -2950,5 +2950,89 @@
|
|
|
2950
2950
|
"lastGoodRunId": null,
|
|
2951
2951
|
"createdAt": "2026-09-05T19:05:14.638+08:00",
|
|
2952
2952
|
"updatedAt": "2026-09-05T19:05:14.638+08:00"
|
|
2953
|
+
},
|
|
2954
|
+
{
|
|
2955
|
+
"id": "rc-3799921d",
|
|
2956
|
+
"productId": "pd-3ffc5e11",
|
|
2957
|
+
"lineId": "",
|
|
2958
|
+
"name": "cfg-recipe",
|
|
2959
|
+
"description": "",
|
|
2960
|
+
"params": [
|
|
2961
|
+
{
|
|
2962
|
+
"nodeId": "dw-204b00c4",
|
|
2963
|
+
"templateRef": "dcw-temp-sp",
|
|
2964
|
+
"value": 180,
|
|
2965
|
+
"min": 150,
|
|
2966
|
+
"max": 200
|
|
2967
|
+
}
|
|
2968
|
+
],
|
|
2969
|
+
"daqWindows": [
|
|
2970
|
+
{
|
|
2971
|
+
"nodeId": "dn-30031a86",
|
|
2972
|
+
"min": 0,
|
|
2973
|
+
"max": 260
|
|
2974
|
+
}
|
|
2975
|
+
],
|
|
2976
|
+
"version": 1,
|
|
2977
|
+
"paramsHistory": [],
|
|
2978
|
+
"lastGoodRunId": null,
|
|
2979
|
+
"createdAt": "2026-09-05T19:59:44.404+08:00",
|
|
2980
|
+
"updatedAt": "2026-09-05T19:59:44.404+08:00"
|
|
2981
|
+
},
|
|
2982
|
+
{
|
|
2983
|
+
"id": "rc-7756484b",
|
|
2984
|
+
"productId": "pd-36b00ed3",
|
|
2985
|
+
"lineId": "",
|
|
2986
|
+
"name": "cfg-recipe",
|
|
2987
|
+
"description": "",
|
|
2988
|
+
"params": [
|
|
2989
|
+
{
|
|
2990
|
+
"nodeId": "dw-2dcce3c7",
|
|
2991
|
+
"templateRef": "dcw-temp-sp",
|
|
2992
|
+
"value": 180,
|
|
2993
|
+
"min": 150,
|
|
2994
|
+
"max": 200
|
|
2995
|
+
}
|
|
2996
|
+
],
|
|
2997
|
+
"daqWindows": [
|
|
2998
|
+
{
|
|
2999
|
+
"nodeId": "dn-2f6aad9f",
|
|
3000
|
+
"min": 0,
|
|
3001
|
+
"max": 260
|
|
3002
|
+
}
|
|
3003
|
+
],
|
|
3004
|
+
"version": 1,
|
|
3005
|
+
"paramsHistory": [],
|
|
3006
|
+
"lastGoodRunId": null,
|
|
3007
|
+
"createdAt": "2026-09-05T20:04:40.516+08:00",
|
|
3008
|
+
"updatedAt": "2026-09-05T20:04:40.516+08:00"
|
|
3009
|
+
},
|
|
3010
|
+
{
|
|
3011
|
+
"id": "rc-69bd3ed5",
|
|
3012
|
+
"productId": "pd-28fc247a",
|
|
3013
|
+
"lineId": "",
|
|
3014
|
+
"name": "cfg-recipe",
|
|
3015
|
+
"description": "",
|
|
3016
|
+
"params": [
|
|
3017
|
+
{
|
|
3018
|
+
"nodeId": "dw-07cca4c7",
|
|
3019
|
+
"templateRef": "dcw-temp-sp",
|
|
3020
|
+
"value": 180,
|
|
3021
|
+
"min": 150,
|
|
3022
|
+
"max": 200
|
|
3023
|
+
}
|
|
3024
|
+
],
|
|
3025
|
+
"daqWindows": [
|
|
3026
|
+
{
|
|
3027
|
+
"nodeId": "dn-fe806ab9",
|
|
3028
|
+
"min": 0,
|
|
3029
|
+
"max": 260
|
|
3030
|
+
}
|
|
3031
|
+
],
|
|
3032
|
+
"version": 1,
|
|
3033
|
+
"paramsHistory": [],
|
|
3034
|
+
"lastGoodRunId": null,
|
|
3035
|
+
"createdAt": "2026-09-05T20:08:42.270+08:00",
|
|
3036
|
+
"updatedAt": "2026-09-05T20:08:42.270+08:00"
|
|
2953
3037
|
}
|
|
2954
3038
|
]
|