openyida 2026.5.21 → 2026.5.25
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/README.md +5 -1
- package/bin/yida.js +7 -1
- package/lib/app/app-list.js +20 -1
- package/lib/app/check-page.js +2 -2
- package/lib/app/compile.js +3 -2
- package/lib/app/externalize-form.js +642 -0
- package/lib/app/import-app.js +39 -11
- package/lib/app/page-compat.js +258 -2
- package/lib/app/page-compiler.js +4 -1
- package/lib/app/page-linter.js +271 -0
- package/lib/app/publish.js +3 -2
- package/lib/auth/cdp-browser-login.js +7 -3
- package/lib/auth/login.js +2 -3
- package/lib/core/command-manifest.js +3 -0
- package/lib/core/copy.js +50 -8
- package/lib/core/env-manager.js +24 -16
- package/lib/core/locales/ar.js +7 -0
- package/lib/core/locales/de.js +7 -0
- package/lib/core/locales/en.js +7 -0
- package/lib/core/locales/es.js +7 -0
- package/lib/core/locales/fr.js +7 -0
- package/lib/core/locales/hi.js +7 -0
- package/lib/core/locales/ja.js +7 -0
- package/lib/core/locales/ko.js +7 -0
- package/lib/core/locales/pt.js +7 -0
- package/lib/core/locales/vi.js +7 -0
- package/lib/core/locales/zh-HK.js +7 -0
- package/lib/core/locales/zh.js +7 -0
- package/lib/core/utils.js +2 -2
- package/lib/process/configure-process.js +552 -20
- package/package.json +1 -1
- package/project/pages/src/demo-agent-chatbox.oyd.jsx +78 -3
- package/scripts/e2e-real/full-runner.js +257 -8
- package/scripts/e2e-real/skill-coverage.js +2 -2
- package/yida-skills/SKILL.md +1 -1
- package/yida-skills/skills/yida-chart/SKILL.md +1 -1
- package/yida-skills/skills/yida-create-process/SKILL.md +3 -2
- package/yida-skills/skills/yida-custom-page/SKILL.md +7 -2
- package/yida-skills/skills/yida-custom-page/examples/attachment-upload.js +14 -12
- package/yida-skills/skills/yida-custom-page/references/attachment-upload-guide.md +3 -1
- package/yida-skills/skills/yida-custom-page/references/coding-guide.md +4 -0
- package/yida-skills/skills/yida-custom-page/references/component-jsx-guide.md +31 -22
- package/yida-skills/skills/yida-dashboard/SKILL.md +10 -9
- package/yida-skills/skills/yida-dashboard/references/interaction-patterns.md +2 -0
- package/yida-skills/skills/yida-dashboard/references/pitfalls.md +13 -4
- package/yida-skills/skills/yida-dashboard/references/structure-and-layout.md +1 -1
- package/yida-skills/skills/yida-ppt-slider/SKILL.md +47 -37
- package/yida-skills/skills/yida-ppt-slider/references/examples.md +5 -4
- package/yida-skills/skills/yida-process-rule/SKILL.md +93 -3
- package/yida-skills/skills/yida-process-rule/references/official-component-nodes.md +93 -0
- package/yida-skills/skills/yida-publish-page/SKILL.md +6 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yida-process-rule
|
|
3
|
-
description: 宜搭流程规则配置技能,通过调用流程设计器 API
|
|
3
|
+
description: 宜搭流程规则配置技能,通过调用流程设计器 API 实现流程的创建、配置(审批/办理/抄送、条件分支、并行分支、字段权限、跳转规则,以及连接器、数据、消息、邮件、代码、子流程、卡片、循环、AI 等官方组件节点配置透传和 processJson 适配)、保存和发布。不适用于:从零创建流程表单(应使用 yida-create-process),或从零设计集成自动化逻辑流(应使用 yida-integration)。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 宜搭流程规则配置技能
|
|
@@ -43,7 +43,7 @@ description: 宜搭流程规则配置技能,通过调用流程设计器 API
|
|
|
43
43
|
|
|
44
44
|
## 概述
|
|
45
45
|
|
|
46
|
-
本技能描述如何通过流程设计器 API
|
|
46
|
+
本技能描述如何通过流程设计器 API 为宜搭流程表单配置审批流程。支持审批节点、办理节点、条件分支、并行分支、嵌套分支、字段权限、抄送节点、跳转规则;同时支持宜搭 `yida-simple-flow` 官方组件节点的配置透传和 `processJson` 适配,用于连接器、数据、消息、邮件、Groovy/JavaScript、子流程、卡片、循环、AI 等高级节点。
|
|
47
47
|
|
|
48
48
|
## 何时使用
|
|
49
49
|
|
|
@@ -105,8 +105,24 @@ openyida configure-process "APP_XXX" "FORM-YYY" .cache/openyida/order/process-de
|
|
|
105
105
|
| 类型 | 说明 | 必填属性 |
|
|
106
106
|
| --- | --- | --- |
|
|
107
107
|
| `approval` | 审批节点 | `name`, `approver` |
|
|
108
|
+
| `operator` | 办理 / 填写节点,审批人 DSL 相同,可用 `executor` 代替 `approver` | `name`, `executor` 或 `approver` |
|
|
108
109
|
| `route` | 条件分支路由 | `conditions` |
|
|
110
|
+
| `parallel` | 并行分支,满足条件的分支都会执行 | `branches` |
|
|
109
111
|
| `carbon` | 抄送节点 | `name`, `approver` |
|
|
112
|
+
| 官方组件节点 | 连接器、数据、消息、邮件、代码、子流程、卡片、循环、AI 等 | `type` 或 `componentName`,以及对应真实 props |
|
|
113
|
+
|
|
114
|
+
### 节点别名
|
|
115
|
+
|
|
116
|
+
OpenYida 会自动兼容常见别名:
|
|
117
|
+
|
|
118
|
+
| 写法 | 归一化类型 |
|
|
119
|
+
| --- | --- |
|
|
120
|
+
| `approval`, `ApprovalNode` | `approval` |
|
|
121
|
+
| `operator`, `executor`, `OperatorNode` | `operator` |
|
|
122
|
+
| `multiApproval`, `MultiApprovalNode` | `approval` 类型的多人审批组件 |
|
|
123
|
+
| `carbon`, `cc`, `CarbonNode` | `carbon` |
|
|
124
|
+
| `route`, `branch`, `ConditionContainer` | `route` |
|
|
125
|
+
| `parallel`, `parallelBranch` | `parallel` |
|
|
110
126
|
|
|
111
127
|
### 审批节点属性
|
|
112
128
|
|
|
@@ -119,6 +135,29 @@ openyida configure-process "APP_XXX" "FORM-YYY" .cache/openyida/order/process-de
|
|
|
119
135
|
| `formConfig` | Object | 否 | 字段权限配置 |
|
|
120
136
|
| `routeRules` | Array | 否 | 跳转规则 |
|
|
121
137
|
|
|
138
|
+
### 办理 / 填写节点(operator)
|
|
139
|
+
|
|
140
|
+
办理节点底层仍是宜搭流程的 `approval` 类型,但 `viewJson` 使用 `OperatorNode`,适合“资料补充”“填写处理结果”“业务办理”等非审批动作。
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"type": "operator",
|
|
145
|
+
"name": "资料补充",
|
|
146
|
+
"executor": {
|
|
147
|
+
"type": "user",
|
|
148
|
+
"users": [
|
|
149
|
+
{ "id": "operator001", "name": "运营同学" }
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
"formConfig": {
|
|
153
|
+
"behaviorList": [
|
|
154
|
+
{ "fieldId": "textareaField_material", "fieldBehavior": "NORMAL" },
|
|
155
|
+
{ "fieldId": "numberField_amount", "fieldBehavior": "READONLY" }
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
122
161
|
### 条件分支属性
|
|
123
162
|
|
|
124
163
|
| 属性 | 类型 | 必填 | 说明 |
|
|
@@ -126,6 +165,46 @@ openyida configure-process "APP_XXX" "FORM-YYY" .cache/openyida/order/process-de
|
|
|
126
165
|
| `type` | String | 是 | 固定 `"route"` |
|
|
127
166
|
| `conditions` | Array | 是 | 条件列表 |
|
|
128
167
|
|
|
168
|
+
### 并行分支属性
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"type": "parallel",
|
|
173
|
+
"name": "并行会审",
|
|
174
|
+
"branches": [
|
|
175
|
+
{
|
|
176
|
+
"name": "法务会审",
|
|
177
|
+
"childNodes": [
|
|
178
|
+
{ "type": "approval", "name": "法务审批", "approver": "originator" }
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"name": "财务会审",
|
|
183
|
+
"rules": [
|
|
184
|
+
{
|
|
185
|
+
"fieldId": "numberField_amount",
|
|
186
|
+
"fieldName": "金额",
|
|
187
|
+
"componentType": "NumberField",
|
|
188
|
+
"op": "GreaterThan",
|
|
189
|
+
"value": 10000
|
|
190
|
+
}
|
|
191
|
+
],
|
|
192
|
+
"childNodes": [
|
|
193
|
+
{ "type": "approval", "name": "财务审批", "approver": "originator" }
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
| 属性 | 类型 | 必填 | 说明 |
|
|
201
|
+
| --- | --- | --- | --- |
|
|
202
|
+
| `branches` | Array | 是 | 并行分支列表,也兼容 `conditions` / `parallelBranches` |
|
|
203
|
+
| `branches[].name` | String | 否 | 分支名称 |
|
|
204
|
+
| `branches[].rules` | Array | 否 | 分支条件;不配置时表示所有数据进入该分支 |
|
|
205
|
+
| `branches[].logic` | String | 否 | `"AND"`(默认)或 `"OR"` |
|
|
206
|
+
| `branches[].childNodes` | Array | 否 | 分支内节点 |
|
|
207
|
+
|
|
129
208
|
### 条件定义
|
|
130
209
|
|
|
131
210
|
| 属性 | 类型 | 必填 | 说明 |
|
|
@@ -284,6 +363,17 @@ openyida configure-process "APP_XXX" "FORM-YYY" .cache/openyida/order/process-de
|
|
|
284
363
|
|
|
285
364
|
说明:不同租户/版本下某些高级规则(接口人、第三方服务、连接器、权限矩阵等)的 `approverRules` 结构可能不同。遇到 DSL 暂未覆盖的类型时,先在宜搭流程设计器中配置一个样例并导出/抓取对应结构,再用该对象固化到流程定义中。
|
|
286
365
|
|
|
366
|
+
## 官方组件节点(高级透传)
|
|
367
|
+
|
|
368
|
+
完整支持清单、连接器示例、数据 / 消息 / 代码节点示例和透传规则详见 [references/official-component-nodes.md](references/official-component-nodes.md)。
|
|
369
|
+
|
|
370
|
+
关键边界:
|
|
371
|
+
|
|
372
|
+
- 常规审批/办理/抄送、条件/并行分支优先用本文件中的简化 DSL。
|
|
373
|
+
- 连接器、数据、消息、邮件、Groovy/JavaScript、子流程、卡片、循环、AI 等节点使用真实组件 props 透传,并按线上设计器规则转换 `processJson.props`。
|
|
374
|
+
- 不认识的节点类型会直接报错,不会静默跳过,避免生成断链流程。
|
|
375
|
+
- 从零创建复杂集成自动化时优先使用 `yida-integration`;本技能用于流程表单规则里需要高级组件节点、或已有真实节点配置需要固化的场景。
|
|
376
|
+
|
|
287
377
|
## AI 自动生成流程特性(必须遵守)
|
|
288
378
|
|
|
289
379
|
> 📖 AI 生成流程定义的完整规范(字段权限自动生成、回退规则识别、检查清单)详见 [references/process-ai-rules.md](references/process-ai-rules.md)。
|
|
@@ -313,7 +403,7 @@ openyida configure-process "APP_XXX" "FORM-YYY" .cache/openyida/order/process-de
|
|
|
313
403
|
## 注意事项
|
|
314
404
|
|
|
315
405
|
- 所有 `fieldId` 必须通过 `openyida get-schema` 获取,不能手写猜测
|
|
316
|
-
-
|
|
406
|
+
- 条件分支会自动补一个“其他情况”默认分支;不要手写猜测低层 `conditionNode` 结构
|
|
317
407
|
- 嵌套分支不超过 3 层
|
|
318
408
|
- 流程发布前必须先保存
|
|
319
409
|
- **本技能不读写 memory**:流程定义通过 CLI 命令写入宜搭平台,processCode 等信息输出到 stdout,不依赖跨会话的 memory 状态
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# 官方组件节点高级透传
|
|
2
|
+
|
|
3
|
+
宜搭真实流程设计器还支持自动动作节点。OpenYida 对这些节点采用“真实组件 props 透传 + processJson 适配”模式:节点顺序、连线和 `processJson.type` 自动生成,`viewJson.props` 保留真实组件配置,`processJson.props` 按线上 `yida-simple-flow` 的转换规则生成。每个节点的业务配置必须来自真实配置(例如在设计器中配置一次后复制 props,或从已有流程版本中读取)。
|
|
4
|
+
|
|
5
|
+
## 支持清单
|
|
6
|
+
|
|
7
|
+
| `componentName` / `type` | `processJson.type` | 典型配置字段 |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| `ConnectorNode` / `connector` | `innerConnector` / `thirdConnector` / `httpConnector` / `faasConnector` | `connectorRules` |
|
|
10
|
+
| `GroovyNode` / `groovy` | `CodeExecutor` | `groovy` |
|
|
11
|
+
| `JavaScriptNode` / `javascript` | `CodeExecutor` | `JavaScript` |
|
|
12
|
+
| `GetSingleDataNode` / `getSingleData` | `dataRetrieve` | `getData` |
|
|
13
|
+
| `GetBatchDataNode` / `getBatchData` | `dataRetrieve` | `getData` |
|
|
14
|
+
| `AddDataNode` / `addData` | `dataCreate` | `addDataRules` |
|
|
15
|
+
| `UpdateDataNode` / `updateData` | `dataUpdate` | `updateDataRules` |
|
|
16
|
+
| `DeleteDataNode` / `deleteData` | `dataDelete` | `deleteData` |
|
|
17
|
+
| `SendMessageNode` / `sendMessage` | `sendMessage` | `sendMessageRules` |
|
|
18
|
+
| `SendEmailNode` / `sendEmail` | `sendEmail` | `sendEmailRules` |
|
|
19
|
+
| `InitiateApprovalNode` / `subProcess` | `initiateApproval` | `initiateApprovalRules` |
|
|
20
|
+
| `SendCardNode` / `CardNode` | `sendCard` | `sendCardRules` / `cardRules` |
|
|
21
|
+
| `UpdateCardNode` / `CardUpdateNode` | `updateCard` | `updateCardRules` / `cardUpdateRules` |
|
|
22
|
+
| `CycleContainer` / `foreach` | `foreach` | `cycleContainerRules`,也兼容 `cycleRules` / `foreachRules` 别名;`children` |
|
|
23
|
+
| `AINode` / `ai` | `AIExecutor` | `workFlowRules` |
|
|
24
|
+
|
|
25
|
+
## 连接器节点示例
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"type": "connector",
|
|
30
|
+
"name": "创建钉钉待办",
|
|
31
|
+
"connectorRules": {
|
|
32
|
+
"connectorId": "G-CONN-xxx",
|
|
33
|
+
"actionId": "G-ACT-xxx",
|
|
34
|
+
"connector": { "mode": 1 },
|
|
35
|
+
"inputs": {
|
|
36
|
+
"assignments": [
|
|
37
|
+
{ "column": "subject", "valueType": "literal", "value": "审批待办", "assignments": [] },
|
|
38
|
+
{ "column": "creatorId", "valueType": "processVar", "value": "form_inst_modifier", "assignments": [] }
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`connector.mode` 映射:`1 -> innerConnector`,`3 -> thirdConnector`,`5 -> httpConnector`,`9 -> faasConnector`。保存时 `connectorRules` 会按真实设计器规则转换为 `processJson.props.inputs`;如果租户返回了不同类型,可显式传入 `processType` 覆盖。
|
|
46
|
+
|
|
47
|
+
## 数据 / 消息 / 代码节点示例
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"nodes": [
|
|
52
|
+
{
|
|
53
|
+
"componentName": "GetSingleDataNode",
|
|
54
|
+
"name": "查询客户",
|
|
55
|
+
"getData": {
|
|
56
|
+
"sourceId": "FORM-CUSTOMER",
|
|
57
|
+
"assignments": []
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"componentName": "JavaScriptNode",
|
|
62
|
+
"name": "计算评级",
|
|
63
|
+
"JavaScript": {
|
|
64
|
+
"action": { "code": "return inputs;" },
|
|
65
|
+
"outputs": []
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"componentName": "SendMessageNode",
|
|
70
|
+
"name": "通知负责人",
|
|
71
|
+
"sendMessageRules": {
|
|
72
|
+
"messageType": "workNotice",
|
|
73
|
+
"messageInfo": {
|
|
74
|
+
"title": "流程通知",
|
|
75
|
+
"content": "请及时处理"
|
|
76
|
+
},
|
|
77
|
+
"toUsers": [
|
|
78
|
+
{ "userId": "manager001", "userName": "负责人" }
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 透传规则
|
|
87
|
+
|
|
88
|
+
- `props` 会进入 `viewJson`,其中 `name` / `nodeName` / `description` 自动补齐。
|
|
89
|
+
- `processJson.props` 会移除 `name` / `nodeName` / `description` / `title` 等视图字段,并按真实设计器规则转换连接器、代码、取数、新增数据、AI 等节点;如需覆盖可传 `processProps`。
|
|
90
|
+
- 官方组件节点可用 `children` / `childNodes` 嵌套子节点,常用于 `CycleContainer`。
|
|
91
|
+
- 线上设计器里的“分支节点”不是独立的 `BranchNode` 序列化组件,实际由 `ConditionContainer` + `ConditionNode` / `ParallelNode` 表达;普通条件/并行优先使用主文档中的 `route` / `parallel` DSL。
|
|
92
|
+
- 不认识的节点类型会直接报错,不会静默跳过,避免生成断链流程。
|
|
93
|
+
- 从零创建复杂集成自动化时优先使用 `yida-integration`;本参考用于流程表单规则里需要高级组件节点、或已有真实节点配置需要固化的场景。
|
|
@@ -78,10 +78,12 @@ openyida list-forms <appType> --keyword <页面名>
|
|
|
78
78
|
发布脚本在 `publish` 前会按以下顺序处理源码:
|
|
79
79
|
|
|
80
80
|
1. `.oyd.jsx` / `.openyida.jsx` 或显式 `--compat`:先运行 OpenYida compatibility compiler。
|
|
81
|
-
2.
|
|
82
|
-
3.
|
|
83
|
-
4.
|
|
84
|
-
5.
|
|
81
|
+
2. 如果普通 `.jsx` 源码没有 `export function renderJsx()` 但存在 `export default function Page()`:自动尝试有限 authoring 降级,不再要求 Agent 手动补 `--compat`。
|
|
82
|
+
3. 如果源码已有 `export function renderJsx()`:视为宜搭原生源码,机械修复事件绑定、数组回调,并补齐缺失的基础运行时导出。
|
|
83
|
+
4. 如果源码是 `export default function Page()`:支持有限 authoring 模式,当前可降级 `useState` 和 `useEffect(..., [])`;`useEffect` 内引用组件局部 helper/state 会被阻塞,避免发布后 `didMount` 运行时报 `undefined`。
|
|
84
|
+
5. 兼容构建会自动补齐 `renderJsx` return 分支中的隐藏 timestamp 节点,并将直接事件绑定 / `.bind(this)` 机械改成箭头函数包裹。
|
|
85
|
+
6. `check-page` 会硬拦截生命周期大小写错误、小写 `onclick`、渲染时执行事件函数、箭头函数只引用不调用方法、可见 `<button>` 没有事件等按钮不可点击问题。
|
|
86
|
+
7. 对构建后的 `.yida.jsx` 执行 `check-page` 规则、Babel 转 ES5、UglifyJS 压缩,再构建 Schema 发布。
|
|
85
87
|
|
|
86
88
|
这一步是脚本级确定性处理,优先让 lint/fix/build 解决语法和运行时兼容问题,不应把简单机械修改交给 AI 反复重写。
|
|
87
89
|
|