@xtalpi/agentic-lab-skills 0.0.10 → 0.0.11

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 (68) hide show
  1. package/README.md +1 -1
  2. package/package.json +14 -14
  3. package/skills/lab-flow-designer/SKILL.md +612 -612
  4. package/skills/lab-flow-designer/embedded-template/SKILL.md +103 -103
  5. package/skills/lab-flow-designer/embedded-template/pools//345/205/245/345/217/243/346/261/240.md +21 -21
  6. package/skills/lab-flow-designer/embedded-template/pools//345/207/272/345/217/243/346/261/240.md +21 -21
  7. package/skills/lab-flow-designer/embedded-template/scripts//347/244/272/344/276/213/346/225/260/346/215/256/344/270/216/346/240/241/351/252/214/351/227/250/346/216/247.js +142 -142
  8. package/skills/lab-flow-designer/embedded-template/valves//347/244/272/344/276/213/346/225/260/346/215/256/344/270/216/346/240/241/351/252/214/351/227/250/346/216/247.md +114 -114
  9. package/skills/lab-flow-designer/references/agentic-lab-processer.md +122 -122
  10. package/skills/lab-flow-designer/references/agentic-lab-sdk.md +534 -361
  11. package/skills/lab-flow-designer/references/rhea-api/README.md +7 -7
  12. package/skills/lab-flow-designer/references/rhea-api/execute_process_batch.md +58 -58
  13. package/skills/lab-flow-designer/references/skill-package-layout.md +268 -268
  14. package/skills/lab-flow-designer/references//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/346/240/207/345/207/206.md +216 -216
  15. package/skills/lab-flow-designer/templates//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/346/250/241/346/235/277.md +192 -192
  16. package/skills/lab-flow-designer/templates//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/347/244/272/344/276/213.md +207 -207
  17. package/skills/lab-flow-designer/testing/test-processer.mjs +1240 -1240
  18. package/skills/lab-nocobase-flow-generator/SKILL.md +164 -164
  19. package/skills/lab-nocobase-flow-generator/examples/setting/350/241/250/350/216/267/345/217/226/345/244/226/351/203/250/346/234/215/345/212/241.js +70 -70
  20. package/skills/lab-nocobase-flow-generator/examples//346/237/245/350/257/242/345/214/226/345/255/246/345/223/201/344/277/241/346/201/257.js +30 -30
  21. package/skills/lab-nocobase-flow-generator/references/doc-standard.md +84 -84
  22. package/skills/lab-nocobase-flow-generator/references/runtime-api.md +224 -224
  23. package/skills/lab-nocobase-flow-generator/templates//350/204/232/346/234/254/351/200/273/350/276/221/346/226/207/346/241/243/346/250/241/346/235/277.md +121 -121
  24. package/skills/lab-nocobase-flow-generator/templates//350/204/232/346/234/254/351/200/273/350/276/221/346/226/207/346/241/243/347/244/272/344/276/213.md +67 -67
  25. package/skills/lab-orbit-component-builder/SKILL.md +353 -353
  26. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.env.local.example +27 -27
  27. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintignore +7 -7
  28. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintrc.cjs +88 -88
  29. package/skills/lab-orbit-component-builder/examples/xnb-component-template/.nvmrc +1 -1
  30. package/skills/lab-orbit-component-builder/examples/xnb-component-template/AgenticAppAPI.md +268 -268
  31. package/skills/lab-orbit-component-builder/examples/xnb-component-template/Jenkinsfile +106 -106
  32. package/skills/lab-orbit-component-builder/examples/xnb-component-template/OrbitAPI.md +453 -453
  33. package/skills/lab-orbit-component-builder/examples/xnb-component-template/README.md +176 -176
  34. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/public/index.html +12 -12
  35. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/App.vue +151 -151
  36. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/components/DevOpenerLauncher.vue +143 -143
  37. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/global.d.ts +77 -77
  38. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/main.ts +308 -308
  39. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/mockXNBBitable.ts +119 -119
  40. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/shims-vue.d.ts +6 -6
  41. package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/utils/devOpenerHost.ts +75 -75
  42. package/skills/lab-orbit-component-builder/examples/xnb-component-template/index.html +13 -13
  43. package/skills/lab-orbit-component-builder/examples/xnb-component-template/package.json +60 -60
  44. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/api/agenticlabTickets.ts +110 -110
  45. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/bitable.ts +4 -4
  46. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/custom-page.ts +4 -4
  47. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/index.ts +1 -1
  48. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/styles/orbit-quasar-host.scss +19 -19
  49. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/context.ts +15 -15
  50. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/xnb-context.ts +70 -70
  51. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useBitablePage.ts +189 -189
  52. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperCellDemo.ts +257 -257
  53. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperTableBitableLifecycle.ts +555 -555
  54. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerInitParams.ts +158 -158
  55. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerTicketIds.ts +32 -32
  56. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/orbitHttpClient.ts +110 -110
  57. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/request.ts +92 -92
  58. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/bitable.vue +67 -67
  59. package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/custom-page.vue +140 -140
  60. package/skills/lab-orbit-component-builder/examples/xnb-component-template/tsconfig.json +45 -45
  61. package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.config.ts +170 -170
  62. package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.dev.config.ts +58 -58
  63. package/skills/lab-orbit-component-builder/references/flow-document-human-ui.md +65 -65
  64. package/skills/lab-orbit-component-builder/references/orbit-vue-conventions.md +133 -133
  65. package/skills/lab-orbit-component-builder/references/pool-schema-to-columns.md +67 -67
  66. package/skills/lab-orbit-component-builder/references/vue-template-checklist.md +179 -179
  67. package/skills/lab-orbit-component-builder/references/xnb-context-vue-props.md +49 -49
  68. package/skills/lab-orbit-component-builder/references/xnbitable-vue-parity.md +32 -32
@@ -1,207 +1,207 @@
1
- # 业务执行手册描述
2
-
3
- # Fragment 分装流程
4
-
5
- ***
6
-
7
- ## 1. 流程元信息
8
-
9
- | 属性 | 值 |
10
- | ---- | --- |
11
- | 流程标识 | `fragment` |
12
- | 流程名称 | Fragment 分装 |
13
- | 版本 | 1.0.0 |
14
- | 业务摘要 | 将化合物从源瓶按目标量分装到 1~3 个目标瓶;同一记录可走自动化或人工路径,最终在「已分装」状态结束。 |
15
-
16
- ***
17
-
18
- ## 2. 记录(Record)
19
-
20
- **记录**是沿数据池与门控流转的最小业务单元:一条记录对应一个化合物的分装任务。字段分两类:
21
-
22
- * **入口字段**:进入流程时即应具备(或由上游写入)。
23
- * **富化字段**:在特定门控的检查或回填过程中逐步写入;下文按门控分组列出。
24
-
25
- ### 2.1 入口字段(必填与选填)
26
-
27
- | 字段名 | 类型 | 必填 | 说明 |
28
- | ----- | ---- | -- | --- |
29
- | Ticket ID | text | Y | 系统分配,单个池子里唯一 |
30
- | ALO Order ID | text | Y | 上层订单号 |
31
- | Compound ID | text | Y | 化合物编号,用于查询知识库 |
32
- | CAS | text | N | CAS 号 |
33
- | MW | number | Y | 分子量 (g/mol),须大于 0 |
34
- | Salt Form | text | Y | 盐型,如 Free Base、HCl、Na |
35
- | Target Amount 1 (mg) | number | Y | 目标瓶 1 目标量 |
36
- | Tolerance 1 (mg) | number | Y | 目标瓶 1 允许误差,默认 0.5 mg |
37
- | Target Amount 2 (mg) | number | N | 目标瓶 2 目标量 |
38
- | Target Amount 3 (mg) | number | N | 目标瓶 3 目标量 |
39
-
40
- ### 2.2 门控「数据完整性与需求量门控」可能写入的字段
41
-
42
- | 字段名 | 类型 | 说明 |
43
- | ----- | ---- | --- |
44
- | Requested Amount | number | 需求总量 (mg),为 Target Amount 1 + 2 + 3 的和 |
45
- | Available Amount | number | 从化合物管理系统查询相同 CAS 号且 Status = 可用的 Latest Amount 总和 |
46
- | Source Barcode | text | 源瓶条码;来自化合物库查询 |
47
- | 是否缺料 | 枚举 | 缺料 / 充足 |
48
- | 性状 (Chemist) | 枚举 | 粉末 / 液体 / 固体等,默认从化合物库查询 |
49
- | 可舀粉判断 (Feasibility of Dispensing) | text | 是否可以舀粉 |
50
-
51
- ### 2.3 门控「查看结果与复核更新」可能写入的字段
52
-
53
- | 字段名 | 类型 | 说明 |
54
- | ----- | ---- | --- |
55
- | Actual Amount 1 | number | 第一个目标瓶自动化称量量 |
56
- | Actual Amount 2 | number | 第二个目标瓶自动化称量量 |
57
- | Actual Amount 3 | number | 第三个目标瓶自动化称量量 |
58
- | 执行状态 | 枚举 | 执行完成 / 执行失败 |
59
- | 执行方式 | 枚举 | Automated / Manual,该门控默认为 Automated |
60
- | 人工确认状态 | 枚举 | 成功 / 失败,由人工最终确认 |
61
- | 执行失败原因 | text | 人工填写的备注 |
62
-
63
- ***
64
-
65
- ## 3. 数据池(Stash)
66
-
67
- | 显示名称 | 逻辑 ID | 角色 | 池中记录的业务含义 |
68
- | ------- | ------- | --- | ------------- |
69
- | 待分装化合物池 | `stash_input` | 入口池 | 上层下发、尚未经首道门控处理 |
70
- | 已领取·可自动化的化合物池 | `stash_auto` | 中间池 | 可走自动称粉路径且非缺料 |
71
- | 已领取·不可自动称量的化合物池 | `stash_manual` | 中间池 | 不可自动称粉,但非缺料 |
72
- | 上机实验池 | `stash_on_machine` | 中间池 | 已提交设备执行或等待结果 |
73
- | 完成实验池 | `stash_success` | 中间池 | 自动化路径下称量结果在容差内通过 |
74
- | 失败实验池 | `stash_failure` | 中间池 | 自动化失败或终检未通过 |
75
- | 人工完成物料池 | `stash_manual_done` | 中间池 | 人工路径完成称量与回填 |
76
- | 缺料化合物池 | `stash_missing` | 异常池 | 无可用源瓶或库存不足 |
77
- | 已分装化合物池 | `stash_done` | 终点池 | 交货确认完成,流程结束 |
78
-
79
- > **提示**:本流程数据池未关联 3D 模型,故省略模型引用。
80
-
81
- ***
82
-
83
- ## 4. 池间流转(拓扑)
84
-
85
- ```mermaid
86
- graph LR
87
- stash_input["待分装化合物池"]
88
- gate_1{{"数据完整性与需求量门控"}}
89
- stash_auto["已领取·可自动化的化合物池"]
90
- stash_manual["已领取·不可自动称量的化合物池"]
91
- stash_missing["缺料化合物池"]
92
- gate_3{{"查看结果与复核更新"}}
93
- stash_on_machine["上机实验池"]
94
- stash_success["完成实验池"]
95
- stash_failure["失败实验池"]
96
-
97
- stash_input --> gate_1
98
- gate_1 --> stash_auto
99
- gate_1 --> stash_manual
100
- gate_1 --> stash_missing
101
-
102
- stash_on_machine --> gate_3
103
- gate_3 --> stash_success
104
- gate_3 --> stash_failure
105
- ```
106
-
107
- **文字补充**
108
-
109
- * **数据完整性与需求量门控**:唯一入口为「待分装化合物池」;出口为三选一(可自动化 / 不可自动称量 / 缺料)。
110
- * **查看结果与复核更新**:仅从「上机实验池」进入;出口为「完成实验池」或「失败实验池」(按各目标瓶实际量与容差比较)。
111
-
112
- ***
113
-
114
- ## 5. 门控(Valve)
115
-
116
- 每个门控是**检查—路由**节点:对输入池中待处理的记录执行业务规则,并依据结果将记录路由到**唯一匹配的输出池**。
117
-
118
- 查询约定:
119
- - 默认最大查询条数 3000,即(limit: 3000)
120
-
121
- ### 5.1 数据完整性与需求量门控
122
-
123
- ```yaml
124
- valve_id: valve_1
125
- name: 数据完整性与需求量门控
126
- order: 1
127
- input:
128
- primary: 待分装化合物池
129
- output:
130
- - Stash: 已领取·可自动化的化合物池
131
- condition: 可舀粉判断为 true,且 Source Barcode 非空
132
- - Stash: 已领取·不可自动称量的化合物池
133
- condition: 可舀粉判断为 false,且 Source Barcode 非空
134
- - Stash: 缺料化合物池
135
- condition: 是否缺料 = 缺料
136
- ```
137
-
138
- #### 触发方式
139
-
140
- 人工触发
141
-
142
- **化合物数据查询方式**
143
-
144
- 查询化合物库存的可用量:使用输入池 Compound ID 作为索引,通过 XFC 上海系统接口查询化合物库存(`compound.getStockFromXfcSh`),查找 status = 可用的记录,返回可用量字段的值并汇总加和。
145
-
146
- 查询化合物属性:使用输入池 Compound ID 通过 XFC 上海系统接口查询化合物相关属性。
147
-
148
- **字段映射表**
149
-
150
- | 门控加工数据 | chemical_record 表字段 |
151
- | --------- | -------------------- |
152
- | 性状 (Chemist) | chemistProperty |
153
- | 可舀粉判断 (Feasibility of Dispensing) | feasibilityOfDipensing |
154
- | 固体颗粒过大 (Large Particle) | largeParticle |
155
- | 流动性差 (Poor Flowability) | poorFlowability |
156
-
157
- **数据处理规则**
158
-
159
- | 序号 | 规则摘要 | 条件要点 | 业务动作或结果 |
160
- | --- | ------- | ------- | ----------- |
161
- | 1.1 | 汇总需求量 | 始终 | Requested Amount = Target Amount 1 + 2 + 3 |
162
- | 1.2 | 是否缺料判定 | Requested Amount > Available Amount | 是否缺料 = 缺料 |
163
- | 1.3 | 容差默认 | Target Amount N > 0 且 Tolerance N 为空 | Tolerance 默认 0.5 mg |
164
- | 1.4 | 缺料标记 | Source Barcode 为空 | 是否缺料 = 缺料 |
165
-
166
- ***
167
-
168
- ### 5.2 查看结果与复核更新
169
-
170
- ```yaml
171
- valve_id: valve_3
172
- name: 查看结果与复核更新
173
- order: 3
174
- input:
175
- primary: 上机实验池
176
- output:
177
- - Stash: 完成实验池
178
- condition: 对每个 Target Amount > 0 的档位,均有 Actual,且 |Actual - Target| ≤ 对应 Tolerance
179
- - Stash: 失败实验池
180
- condition: 任一档位偏差超出容差或其它执行失败情形
181
- ```
182
-
183
- #### 触发方式
184
-
185
- 人工触发
186
-
187
- **数据处理规则**
188
-
189
- | 序号 | 规则摘要 | 条件要点 | 业务动作或结果 |
190
- | --- | ------- | ------- | ----------- |
191
- | 3.1 | 执行方式 | 本门控处理自动化回传 | 执行方式 = Automated |
192
- | 3.2 | 实际量 | Target Amount N > 0 | 写入 Actual Amount N(来自设备或复核) |
193
- | 3.3 | 偏差 | 某档实际量与目标量之差大于该档 Tolerance | 计入失败分支 |
194
- | 3.4 | 执行状态 | 全部档位满足容差 | 执行状态 = 执行完成 |
195
- | 3.5 | 执行失败 | 存在超差或设备失败 | 执行状态 = 执行失败,填写执行失败原因 |
196
-
197
- ***
198
-
199
- ## 6. 知识库 / 外部主数据
200
-
201
- | 逻辑键 | 字段含义 | 类型/取值说明 |
202
- | ----- | ------- | ----------- |
203
- | Compound ID | 与记录中化合物编号对应 | text |
204
- | latest_amount_mg | 最新可用库存 (mg) | number |
205
- | 性状 | 物理性状 | 粉末 / 液体 / 固体 等 |
206
- | 可分装判断 | 是否可分装 | bool |
207
- | Source Barcode | 推荐源瓶条码;空表示无可分装源瓶 | text |
1
+ # 业务执行手册描述
2
+
3
+ # Fragment 分装流程
4
+
5
+ ***
6
+
7
+ ## 1. 流程元信息
8
+
9
+ | 属性 | 值 |
10
+ | ---- | --- |
11
+ | 流程标识 | `fragment` |
12
+ | 流程名称 | Fragment 分装 |
13
+ | 版本 | 1.0.0 |
14
+ | 业务摘要 | 将化合物从源瓶按目标量分装到 1~3 个目标瓶;同一记录可走自动化或人工路径,最终在「已分装」状态结束。 |
15
+
16
+ ***
17
+
18
+ ## 2. 记录(Record)
19
+
20
+ **记录**是沿数据池与门控流转的最小业务单元:一条记录对应一个化合物的分装任务。字段分两类:
21
+
22
+ * **入口字段**:进入流程时即应具备(或由上游写入)。
23
+ * **富化字段**:在特定门控的检查或回填过程中逐步写入;下文按门控分组列出。
24
+
25
+ ### 2.1 入口字段(必填与选填)
26
+
27
+ | 字段名 | 类型 | 必填 | 说明 |
28
+ | ----- | ---- | -- | --- |
29
+ | Ticket ID | text | Y | 系统分配,单个池子里唯一 |
30
+ | ALO Order ID | text | Y | 上层订单号 |
31
+ | Compound ID | text | Y | 化合物编号,用于查询知识库 |
32
+ | CAS | text | N | CAS 号 |
33
+ | MW | number | Y | 分子量 (g/mol),须大于 0 |
34
+ | Salt Form | text | Y | 盐型,如 Free Base、HCl、Na |
35
+ | Target Amount 1 (mg) | number | Y | 目标瓶 1 目标量 |
36
+ | Tolerance 1 (mg) | number | Y | 目标瓶 1 允许误差,默认 0.5 mg |
37
+ | Target Amount 2 (mg) | number | N | 目标瓶 2 目标量 |
38
+ | Target Amount 3 (mg) | number | N | 目标瓶 3 目标量 |
39
+
40
+ ### 2.2 门控「数据完整性与需求量门控」可能写入的字段
41
+
42
+ | 字段名 | 类型 | 说明 |
43
+ | ----- | ---- | --- |
44
+ | Requested Amount | number | 需求总量 (mg),为 Target Amount 1 + 2 + 3 的和 |
45
+ | Available Amount | number | 从化合物管理系统查询相同 CAS 号且 Status = 可用的 Latest Amount 总和 |
46
+ | Source Barcode | text | 源瓶条码;来自化合物库查询 |
47
+ | 是否缺料 | 枚举 | 缺料 / 充足 |
48
+ | 性状 (Chemist) | 枚举 | 粉末 / 液体 / 固体等,默认从化合物库查询 |
49
+ | 可舀粉判断 (Feasibility of Dispensing) | text | 是否可以舀粉 |
50
+
51
+ ### 2.3 门控「查看结果与复核更新」可能写入的字段
52
+
53
+ | 字段名 | 类型 | 说明 |
54
+ | ----- | ---- | --- |
55
+ | Actual Amount 1 | number | 第一个目标瓶自动化称量量 |
56
+ | Actual Amount 2 | number | 第二个目标瓶自动化称量量 |
57
+ | Actual Amount 3 | number | 第三个目标瓶自动化称量量 |
58
+ | 执行状态 | 枚举 | 执行完成 / 执行失败 |
59
+ | 执行方式 | 枚举 | Automated / Manual,该门控默认为 Automated |
60
+ | 人工确认状态 | 枚举 | 成功 / 失败,由人工最终确认 |
61
+ | 执行失败原因 | text | 人工填写的备注 |
62
+
63
+ ***
64
+
65
+ ## 3. 数据池(Stash)
66
+
67
+ | 显示名称 | 逻辑 ID | 角色 | 池中记录的业务含义 |
68
+ | ------- | ------- | --- | ------------- |
69
+ | 待分装化合物池 | `stash_input` | 入口池 | 上层下发、尚未经首道门控处理 |
70
+ | 已领取·可自动化的化合物池 | `stash_auto` | 中间池 | 可走自动称粉路径且非缺料 |
71
+ | 已领取·不可自动称量的化合物池 | `stash_manual` | 中间池 | 不可自动称粉,但非缺料 |
72
+ | 上机实验池 | `stash_on_machine` | 中间池 | 已提交设备执行或等待结果 |
73
+ | 完成实验池 | `stash_success` | 中间池 | 自动化路径下称量结果在容差内通过 |
74
+ | 失败实验池 | `stash_failure` | 中间池 | 自动化失败或终检未通过 |
75
+ | 人工完成物料池 | `stash_manual_done` | 中间池 | 人工路径完成称量与回填 |
76
+ | 缺料化合物池 | `stash_missing` | 异常池 | 无可用源瓶或库存不足 |
77
+ | 已分装化合物池 | `stash_done` | 终点池 | 交货确认完成,流程结束 |
78
+
79
+ > **提示**:本流程数据池未关联 3D 模型,故省略模型引用。
80
+
81
+ ***
82
+
83
+ ## 4. 池间流转(拓扑)
84
+
85
+ ```mermaid
86
+ graph LR
87
+ stash_input["待分装化合物池"]
88
+ gate_1{{"数据完整性与需求量门控"}}
89
+ stash_auto["已领取·可自动化的化合物池"]
90
+ stash_manual["已领取·不可自动称量的化合物池"]
91
+ stash_missing["缺料化合物池"]
92
+ gate_3{{"查看结果与复核更新"}}
93
+ stash_on_machine["上机实验池"]
94
+ stash_success["完成实验池"]
95
+ stash_failure["失败实验池"]
96
+
97
+ stash_input --> gate_1
98
+ gate_1 --> stash_auto
99
+ gate_1 --> stash_manual
100
+ gate_1 --> stash_missing
101
+
102
+ stash_on_machine --> gate_3
103
+ gate_3 --> stash_success
104
+ gate_3 --> stash_failure
105
+ ```
106
+
107
+ **文字补充**
108
+
109
+ * **数据完整性与需求量门控**:唯一入口为「待分装化合物池」;出口为三选一(可自动化 / 不可自动称量 / 缺料)。
110
+ * **查看结果与复核更新**:仅从「上机实验池」进入;出口为「完成实验池」或「失败实验池」(按各目标瓶实际量与容差比较)。
111
+
112
+ ***
113
+
114
+ ## 5. 门控(Valve)
115
+
116
+ 每个门控是**检查—路由**节点:对输入池中待处理的记录执行业务规则,并依据结果将记录路由到**唯一匹配的输出池**。
117
+
118
+ 查询约定:
119
+ - 默认最大查询条数 3000,即(limit: 3000)
120
+
121
+ ### 5.1 数据完整性与需求量门控
122
+
123
+ ```yaml
124
+ valve_id: valve_1
125
+ name: 数据完整性与需求量门控
126
+ order: 1
127
+ input:
128
+ primary: 待分装化合物池
129
+ output:
130
+ - Stash: 已领取·可自动化的化合物池
131
+ condition: 可舀粉判断为 true,且 Source Barcode 非空
132
+ - Stash: 已领取·不可自动称量的化合物池
133
+ condition: 可舀粉判断为 false,且 Source Barcode 非空
134
+ - Stash: 缺料化合物池
135
+ condition: 是否缺料 = 缺料
136
+ ```
137
+
138
+ #### 触发方式
139
+
140
+ 人工触发
141
+
142
+ **化合物数据查询方式**
143
+
144
+ 查询化合物库存的可用量:使用输入池 Compound ID 作为索引,通过 XFC 上海系统接口查询化合物库存(`compound.getStockFromXfcSh`),查找 status = 可用的记录,返回可用量字段的值并汇总加和。
145
+
146
+ 查询化合物属性:使用输入池 Compound ID 通过 XFC 上海系统接口查询化合物相关属性。
147
+
148
+ **字段映射表**
149
+
150
+ | 门控加工数据 | chemical_record 表字段 |
151
+ | --------- | -------------------- |
152
+ | 性状 (Chemist) | chemistProperty |
153
+ | 可舀粉判断 (Feasibility of Dispensing) | feasibilityOfDipensing |
154
+ | 固体颗粒过大 (Large Particle) | largeParticle |
155
+ | 流动性差 (Poor Flowability) | poorFlowability |
156
+
157
+ **数据处理规则**
158
+
159
+ | 序号 | 规则摘要 | 条件要点 | 业务动作或结果 |
160
+ | --- | ------- | ------- | ----------- |
161
+ | 1.1 | 汇总需求量 | 始终 | Requested Amount = Target Amount 1 + 2 + 3 |
162
+ | 1.2 | 是否缺料判定 | Requested Amount > Available Amount | 是否缺料 = 缺料 |
163
+ | 1.3 | 容差默认 | Target Amount N > 0 且 Tolerance N 为空 | Tolerance 默认 0.5 mg |
164
+ | 1.4 | 缺料标记 | Source Barcode 为空 | 是否缺料 = 缺料 |
165
+
166
+ ***
167
+
168
+ ### 5.2 查看结果与复核更新
169
+
170
+ ```yaml
171
+ valve_id: valve_3
172
+ name: 查看结果与复核更新
173
+ order: 3
174
+ input:
175
+ primary: 上机实验池
176
+ output:
177
+ - Stash: 完成实验池
178
+ condition: 对每个 Target Amount > 0 的档位,均有 Actual,且 |Actual - Target| ≤ 对应 Tolerance
179
+ - Stash: 失败实验池
180
+ condition: 任一档位偏差超出容差或其它执行失败情形
181
+ ```
182
+
183
+ #### 触发方式
184
+
185
+ 人工触发
186
+
187
+ **数据处理规则**
188
+
189
+ | 序号 | 规则摘要 | 条件要点 | 业务动作或结果 |
190
+ | --- | ------- | ------- | ----------- |
191
+ | 3.1 | 执行方式 | 本门控处理自动化回传 | 执行方式 = Automated |
192
+ | 3.2 | 实际量 | Target Amount N > 0 | 写入 Actual Amount N(来自设备或复核) |
193
+ | 3.3 | 偏差 | 某档实际量与目标量之差大于该档 Tolerance | 计入失败分支 |
194
+ | 3.4 | 执行状态 | 全部档位满足容差 | 执行状态 = 执行完成 |
195
+ | 3.5 | 执行失败 | 存在超差或设备失败 | 执行状态 = 执行失败,填写执行失败原因 |
196
+
197
+ ***
198
+
199
+ ## 6. 知识库 / 外部主数据
200
+
201
+ | 逻辑键 | 字段含义 | 类型/取值说明 |
202
+ | ----- | ------- | ----------- |
203
+ | Compound ID | 与记录中化合物编号对应 | text |
204
+ | latest_amount_mg | 最新可用库存 (mg) | number |
205
+ | 性状 | 物理性状 | 粉末 / 液体 / 固体 等 |
206
+ | 可分装判断 | 是否可分装 | bool |
207
+ | Source Barcode | 推荐源瓶条码;空表示无可分装源瓶 | text |