@rishiqing/cli 0.1.5 → 0.1.7
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 +14 -6
- package/dist/cli.js +82 -3
- package/dist/cli.js.map +1 -1
- package/generated/command-catalog.json +1 -1
- package/package.json +1 -1
- package/rishiqing.openapi.json +18 -9
- package/skills/rsq-workflow-createFlowApplication/SKILL.md +36 -17
- package/skills/rsq-workflow-createFlowApplication/references/api-sequence.md +51 -10
- package/skills/rsq-workflow-createFlowApplication/references/field-types.md +28 -0
package/package.json
CHANGED
package/rishiqing.openapi.json
CHANGED
|
@@ -1334,6 +1334,10 @@
|
|
|
1334
1334
|
"type": "string",
|
|
1335
1335
|
"description": "流程应用id",
|
|
1336
1336
|
"example": "flow-app-001"
|
|
1337
|
+
},
|
|
1338
|
+
"flowApplicationName": {
|
|
1339
|
+
"type": "string",
|
|
1340
|
+
"description": "流程应用名称"
|
|
1337
1341
|
}
|
|
1338
1342
|
}
|
|
1339
1343
|
},
|
|
@@ -1626,11 +1630,6 @@
|
|
|
1626
1630
|
"schema": {
|
|
1627
1631
|
"type": "object",
|
|
1628
1632
|
"properties": {
|
|
1629
|
-
"flowApplicationId": {
|
|
1630
|
-
"type": "string",
|
|
1631
|
-
"description": "流程应用名称",
|
|
1632
|
-
"example": "flow-app-001"
|
|
1633
|
-
},
|
|
1634
1633
|
"stepInfoName": {
|
|
1635
1634
|
"type": "string",
|
|
1636
1635
|
"description": "步骤名称",
|
|
@@ -1640,6 +1639,13 @@
|
|
|
1640
1639
|
"type": "string",
|
|
1641
1640
|
"description": "表单id",
|
|
1642
1641
|
"example": "form-001"
|
|
1642
|
+
},
|
|
1643
|
+
"executorUsers": {
|
|
1644
|
+
"type": "array",
|
|
1645
|
+
"items": {
|
|
1646
|
+
"type": "string"
|
|
1647
|
+
},
|
|
1648
|
+
"description": "步骤执行人列表,里面包含执行人id"
|
|
1643
1649
|
}
|
|
1644
1650
|
}
|
|
1645
1651
|
},
|
|
@@ -1988,9 +1994,6 @@
|
|
|
1988
1994
|
"application/json": {
|
|
1989
1995
|
"schema": {
|
|
1990
1996
|
"type": "object",
|
|
1991
|
-
"required": [
|
|
1992
|
-
"auditInfoName"
|
|
1993
|
-
],
|
|
1994
1997
|
"properties": {
|
|
1995
1998
|
"auditInfoName": {
|
|
1996
1999
|
"type": "string",
|
|
@@ -2138,10 +2141,12 @@
|
|
|
2138
2141
|
}
|
|
2139
2142
|
},
|
|
2140
2143
|
"example": {
|
|
2144
|
+
"formId": "",
|
|
2141
2145
|
"flowApplicationId": "flowApp_019d246a38247515b5fd367f78188422",
|
|
2142
2146
|
"formName": "入职登记表",
|
|
2143
2147
|
"fields": [
|
|
2144
2148
|
{
|
|
2149
|
+
"fieldId": "",
|
|
2145
2150
|
"fieldType": "1",
|
|
2146
2151
|
"fieldName": "姓名"
|
|
2147
2152
|
}
|
|
@@ -2184,6 +2189,10 @@
|
|
|
2184
2189
|
"description": "流程表单id",
|
|
2185
2190
|
"example": "form-001"
|
|
2186
2191
|
},
|
|
2192
|
+
"formName": {
|
|
2193
|
+
"type": "string",
|
|
2194
|
+
"description": "流程表单名称"
|
|
2195
|
+
},
|
|
2187
2196
|
"fields": {
|
|
2188
2197
|
"type": "array",
|
|
2189
2198
|
"description": "流程表单字段",
|
|
@@ -7985,4 +7994,4 @@
|
|
|
7985
7994
|
},
|
|
7986
7995
|
"servers": [],
|
|
7987
7996
|
"security": []
|
|
7988
|
-
}
|
|
7997
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rsq-workflow-createFlowApplication
|
|
3
|
-
description:
|
|
3
|
+
description: 当用户要求“创建流程应用”“新建审批流程”“按场景搭一个流程”这类需求时使用。默认直接用“标准模式”创建;只有用户明确要求匹配模板时才查模板,匹配不到再回退到“标准模式”,并继续补齐步骤、表单、审核项,生成完整可用的流程应用。
|
|
4
4
|
metadata:
|
|
5
5
|
requires:
|
|
6
6
|
bins: ["rsq-cli"]
|
|
@@ -43,7 +43,17 @@ rsq-cli agent project createPlan --project-id <projectId> --body-file <request.j
|
|
|
43
43
|
|
|
44
44
|
如果用户没有说明是在某个项目下创建,则沿用下面的独立流程应用创建方式。
|
|
45
45
|
|
|
46
|
-
### 1.
|
|
46
|
+
### 1. 默认直接走“标准模式”
|
|
47
|
+
|
|
48
|
+
如果用户没有明确表达“按模板匹配”“看看有没有现成模板”“优先套用模板”这类意图:
|
|
49
|
+
|
|
50
|
+
- 不要先查模板
|
|
51
|
+
- 直接选择 `flowApplicationTemplateName == "标准模式"`
|
|
52
|
+
- 用它的 `flowApplicationTemplateId` 创建流程应用
|
|
53
|
+
|
|
54
|
+
如果当前环境里找不到“标准模式”,停止并报告缺少兜底模板,不要自行猜测。
|
|
55
|
+
|
|
56
|
+
### 2. 用户明确要求匹配模板时,再查模板
|
|
47
57
|
|
|
48
58
|
```bash
|
|
49
59
|
rsq-cli agent workflow listFlowApplicationTemplates --json
|
|
@@ -54,7 +64,7 @@ rsq-cli agent workflow listFlowApplicationTemplates --json
|
|
|
54
64
|
- `data[].flowApplicationTemplateId`
|
|
55
65
|
- `data[].flowApplicationTemplateName`
|
|
56
66
|
|
|
57
|
-
###
|
|
67
|
+
### 3. 优先按名称匹配模板
|
|
58
68
|
|
|
59
69
|
按以下优先级匹配:
|
|
60
70
|
|
|
@@ -65,9 +75,9 @@ rsq-cli agent workflow listFlowApplicationTemplates --json
|
|
|
65
75
|
|
|
66
76
|
如果只命中一个明显匹配模板,直接使用它的 `flowApplicationTemplateId`。
|
|
67
77
|
|
|
68
|
-
###
|
|
78
|
+
### 4. 匹配不到时回退到“标准模式”
|
|
69
79
|
|
|
70
|
-
|
|
80
|
+
如果用户明确要求匹配模板,但没有明显模板匹配结果,固定选择:
|
|
71
81
|
|
|
72
82
|
- `flowApplicationTemplateName == "标准模式"`
|
|
73
83
|
|
|
@@ -75,7 +85,7 @@ rsq-cli agent workflow listFlowApplicationTemplates --json
|
|
|
75
85
|
|
|
76
86
|
如果模板列表里找不到“标准模式”,停止并报告缺少兜底模板,不要自行猜测。
|
|
77
87
|
|
|
78
|
-
###
|
|
88
|
+
### 5. 创建流程应用或项目下的 workflow 模块
|
|
79
89
|
|
|
80
90
|
如果用户没有指定项目,调用独立流程应用创建接口:
|
|
81
91
|
|
|
@@ -97,36 +107,41 @@ rsq-cli agent project createPlan --project-id <projectId> --body-file <request.j
|
|
|
97
107
|
|
|
98
108
|
- `data.plan.flowApplicationId`
|
|
99
109
|
|
|
100
|
-
###
|
|
110
|
+
### 6. 非标准模式直接结束
|
|
101
111
|
|
|
102
112
|
如果最终使用的是“匹配到的现成模板”,流程应用创建成功后通常直接结束。
|
|
103
113
|
|
|
104
114
|
只有当用户明确要求继续自定义步骤、表单或审核项时,才继续往下改。
|
|
105
115
|
|
|
106
|
-
###
|
|
116
|
+
### 7. 标准模式需要继续补全流程
|
|
107
117
|
|
|
108
118
|
如果最终使用的是“标准模式”,继续执行:
|
|
109
119
|
|
|
110
120
|
1. 根据用户给的流程名称理解业务场景
|
|
111
121
|
2. 设计合理的步骤
|
|
112
|
-
3.
|
|
113
|
-
4.
|
|
114
|
-
5.
|
|
122
|
+
3. 先读取流程应用默认生成的步骤列表
|
|
123
|
+
4. 如果已经有一个默认创建的“未命名步骤”,且用户明确描述了要创建哪些步骤,则优先把这个“未命名步骤”更新为用户需要的第一个步骤,而不是再额外新建一个重复的首步骤
|
|
124
|
+
5. 从第二个业务步骤开始继续往后创建步骤
|
|
125
|
+
6. 为每个步骤创建表单
|
|
126
|
+
7. 为每个步骤创建审核项
|
|
127
|
+
8. 必要时把表单绑定回步骤
|
|
115
128
|
|
|
116
129
|
不要只创建一个空流程应用就结束。
|
|
117
130
|
|
|
118
131
|
## 标准模式下的编排顺序
|
|
119
132
|
|
|
120
133
|
详细 API 顺序见 [references/api-sequence.md](references/api-sequence.md)。
|
|
134
|
+
字段类型识别见 [references/field-types.md](references/field-types.md)。
|
|
121
135
|
|
|
122
136
|
最低要求是:
|
|
123
137
|
|
|
124
138
|
1. 确认当前已经拿到了正确的 `flowApplicationId`
|
|
125
|
-
2.
|
|
126
|
-
3.
|
|
127
|
-
4.
|
|
128
|
-
5.
|
|
129
|
-
6.
|
|
139
|
+
2. 查询当前流程步骤,识别系统默认创建的“未命名步骤”
|
|
140
|
+
3. 如果用户明确给出了步骤列表,先用 `updateStepInfo` 把这个“未命名步骤”改成第一个业务步骤,并绑定它的表单
|
|
141
|
+
4. 从第二个业务步骤开始逐个创建步骤,`frontStepInfoId` 接在上一个已落地步骤后面
|
|
142
|
+
5. 为每个步骤创建表单
|
|
143
|
+
6. 用 `updateStepInfo` 绑定 `formId`
|
|
144
|
+
7. 为每个步骤创建审核项
|
|
130
145
|
|
|
131
146
|
## 业务理解规则
|
|
132
147
|
|
|
@@ -151,6 +166,8 @@ rsq-cli agent project createPlan --project-id <projectId> --body-file <request.j
|
|
|
151
166
|
- 表单名称与步骤语义一致
|
|
152
167
|
- 字段数量足够支撑步骤动作
|
|
153
168
|
- 字段名称可读、业务上合理
|
|
169
|
+
- 创建字段前先按 [references/field-types.md](references/field-types.md) 映射 `fieldType`
|
|
170
|
+
- 字段名无法唯一推出类型时,必须依赖用户显式指定的类型,不要自行脑补
|
|
154
171
|
|
|
155
172
|
## 审核项设计规则
|
|
156
173
|
|
|
@@ -174,8 +191,10 @@ rsq-cli agent contacts resolveUser --user-name 张三 --json
|
|
|
174
191
|
|
|
175
192
|
- 如果用户明确指定了项目,必须先走 `project createPlan` 且 `type` 固定传 `"workflow"`
|
|
176
193
|
- 项目分支后续一律使用 `data.plan.flowApplicationId`,不要再额外创建一个独立流程应用
|
|
177
|
-
-
|
|
194
|
+
- 如果用户没有明确要求匹配模板,默认不要查模板,直接使用“标准模式”
|
|
195
|
+
- 只有用户明确要求匹配模板时,才去查模板;匹配不到再回退到“标准模式”
|
|
178
196
|
- “标准模式”下必须继续补步骤、表单、审核项
|
|
197
|
+
- 流程应用创建后如果系统默认生成了一个“未命名步骤”,且用户明确给了步骤定义,必须优先复用它作为第一个业务步骤,不要再额外创建一个重复的首步骤
|
|
179
198
|
- Agent 执行时优先走 `rsq-cli agent ...`
|
|
180
199
|
- 写操作优先用 `--dry-run --json` 预览
|
|
181
200
|
- 只要命令带 request body,优先用 `--body-file`,不要默认用内联 `--body`
|
|
@@ -17,7 +17,17 @@ rsq-cli agent project createPlan --project-id <projectId> --body-file <request.j
|
|
|
17
17
|
|
|
18
18
|
如果用户没有指定项目,再进入独立流程应用分支。
|
|
19
19
|
|
|
20
|
-
## 1.
|
|
20
|
+
## 1. 默认直接使用“标准模式”
|
|
21
|
+
|
|
22
|
+
如果用户没有明确要求“匹配模板”:
|
|
23
|
+
|
|
24
|
+
- 不查模板列表
|
|
25
|
+
- 直接使用 `"标准模式"` 对应的 `flowApplicationTemplateId`
|
|
26
|
+
- 然后进入创建流程应用步骤
|
|
27
|
+
|
|
28
|
+
只有在当前环境里尚未缓存“标准模式”模板 id,或者用户明确要求匹配模板时,才需要查询模板列表。
|
|
29
|
+
|
|
30
|
+
## 2. 用户明确要求匹配模板时,再做模板匹配
|
|
21
31
|
|
|
22
32
|
```bash
|
|
23
33
|
rsq-cli agent workflow listFlowApplicationTemplates --json
|
|
@@ -28,7 +38,9 @@ rsq-cli agent workflow listFlowApplicationTemplates --json
|
|
|
28
38
|
- 找到最匹配模板
|
|
29
39
|
- 或兜底找到 `"标准模式"`
|
|
30
40
|
|
|
31
|
-
|
|
41
|
+
如果用户没有明确要求匹配模板,就跳过这一节。
|
|
42
|
+
|
|
43
|
+
## 3. 创建流程应用
|
|
32
44
|
|
|
33
45
|
```bash
|
|
34
46
|
rsq-cli agent workflow createFlowApplication --body-file <request.json> --json
|
|
@@ -40,7 +52,7 @@ rsq-cli agent workflow createFlowApplication --body-file <request.json> --json
|
|
|
40
52
|
|
|
41
53
|
如果用户已指定项目,则跳过这一步,不要重复创建独立流程应用。
|
|
42
54
|
|
|
43
|
-
##
|
|
55
|
+
## 4. 如果使用标准模式,先获取现有步骤并识别默认步骤
|
|
44
56
|
|
|
45
57
|
```bash
|
|
46
58
|
rsq-cli agent workflow listStepInfosByFlowApplicationId --flowapplication-id <flowApplicationId> --json
|
|
@@ -48,10 +60,26 @@ rsq-cli agent workflow listStepInfosByFlowApplicationId --flowapplication-id <fl
|
|
|
48
60
|
|
|
49
61
|
用途:
|
|
50
62
|
|
|
51
|
-
-
|
|
63
|
+
- 识别系统默认创建的“未命名步骤”
|
|
64
|
+
- 如果用户明确给了步骤列表,优先复用这个“未命名步骤”作为第一个业务步骤
|
|
65
|
+
- 只有从第二个业务步骤开始,才继续调用 `createStepInfo`
|
|
52
66
|
- 后续每新建一个步骤,就把新步骤的 `stepInfoId` 当作下一个步骤的 `frontStepInfoId`
|
|
53
67
|
|
|
54
|
-
##
|
|
68
|
+
## 5. 先更新默认步骤为第一个业务步骤
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
rsq-cli agent workflow updateStepInfo --step-info-id <defaultUnnamedStepInfoId> --body-file <request.json> --json
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
- 适用条件:
|
|
75
|
+
|
|
76
|
+
- 当前流程里确实存在默认“未命名步骤”
|
|
77
|
+
- 用户明确描述了第一个业务步骤是什么
|
|
78
|
+
|
|
79
|
+
- 先为这个第一个业务步骤创建表单,再调用 `updateStepInfo` 同时写入 `stepInfoName` 和 `formId`
|
|
80
|
+
- `stepInfoId` 只通过接口路径传入;`request.json` 里不要再传这个字段
|
|
81
|
+
|
|
82
|
+
## 6. 从第二个业务步骤开始创建后续步骤
|
|
55
83
|
|
|
56
84
|
```bash
|
|
57
85
|
rsq-cli agent workflow createStepInfo --body-file <request.json> --json
|
|
@@ -61,7 +89,7 @@ rsq-cli agent workflow createStepInfo --body-file <request.json> --json
|
|
|
61
89
|
|
|
62
90
|
- `stepInfoId`
|
|
63
91
|
|
|
64
|
-
##
|
|
92
|
+
## 7. 创建表单
|
|
65
93
|
|
|
66
94
|
`createForm` 只需要传真实业务字段:
|
|
67
95
|
|
|
@@ -69,9 +97,9 @@ rsq-cli agent workflow createStepInfo --body-file <request.json> --json
|
|
|
69
97
|
- `formName`
|
|
70
98
|
- `fields`
|
|
71
99
|
|
|
72
|
-
不要传 `formId` 或 `fieldId
|
|
100
|
+
不要传 `formId` 或 `fieldId`。最新接口文档虽然在 example 里出现了空的 `formId` / `fieldId`,但 schema 并没有要求它们,`createForm` 的请求体里仍只保留业务字段。
|
|
73
101
|
|
|
74
|
-
##
|
|
102
|
+
## 8. 把表单绑定到步骤
|
|
75
103
|
|
|
76
104
|
创建表单后,调用:
|
|
77
105
|
|
|
@@ -79,7 +107,10 @@ rsq-cli agent workflow createStepInfo --body-file <request.json> --json
|
|
|
79
107
|
rsq-cli agent workflow updateStepInfo --step-info-id <stepInfoId> --body-file <request.json> --json
|
|
80
108
|
```
|
|
81
109
|
|
|
82
|
-
|
|
110
|
+
对第一个业务步骤,如果复用了默认“未命名步骤”,这里的 `stepInfoId` 就是那个默认步骤的 id。
|
|
111
|
+
`request.json` 里同样不要传 `stepInfoId`。
|
|
112
|
+
|
|
113
|
+
## 9. 创建审核项
|
|
83
114
|
|
|
84
115
|
```bash
|
|
85
116
|
rsq-cli agent workflow createAuditInfo --body-file <request.json> --json
|
|
@@ -90,9 +121,19 @@ rsq-cli agent workflow createAuditInfo --body-file <request.json> --json
|
|
|
90
121
|
- 保留 `auditInfoName`
|
|
91
122
|
- 不要伪造用户 id
|
|
92
123
|
|
|
124
|
+
如果后续要更新审核项,`auditInfoId` 只通过接口路径传入;请求体里不要再传这个字段。
|
|
125
|
+
|
|
93
126
|
## 建议顺序
|
|
94
127
|
|
|
95
|
-
|
|
128
|
+
如果默认走“标准模式”,并且存在默认“未命名步骤”且用户明确给了步骤列表:
|
|
129
|
+
|
|
130
|
+
1. `listStepInfosByFlowApplicationId`
|
|
131
|
+
2. 第一个业务步骤先 `createForm`
|
|
132
|
+
3. 对默认步骤执行 `updateStepInfo`,写入首步骤名称和 `formId`
|
|
133
|
+
4. 对首步骤执行 `createAuditInfo`
|
|
134
|
+
5. 从第二个业务步骤开始执行后续创建
|
|
135
|
+
|
|
136
|
+
对后续新建步骤执行:
|
|
96
137
|
|
|
97
138
|
1. `createStepInfo`
|
|
98
139
|
2. `createForm`
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Workflow Field Types
|
|
2
|
+
|
|
3
|
+
创建流程表单字段时,`fieldType` 必须以 `FieldEnum.java` 转换后的 TS 枚举为准,不要凭经验猜测。
|
|
4
|
+
|
|
5
|
+
高频字段:
|
|
6
|
+
|
|
7
|
+
- `1`: 文本框
|
|
8
|
+
- `2`: 数字
|
|
9
|
+
- `5`: 日期
|
|
10
|
+
- `6`: 附件
|
|
11
|
+
- `15`: 富文本
|
|
12
|
+
- `17`: 手机
|
|
13
|
+
- `18`: 邮箱
|
|
14
|
+
- `19`: 地址
|
|
15
|
+
- `22`: 成员
|
|
16
|
+
- `36`: 部门
|
|
17
|
+
|
|
18
|
+
本次已确认的误判修正:
|
|
19
|
+
|
|
20
|
+
- `附件` 不是文本框,必须用 `6`
|
|
21
|
+
- `富文本` 不是普通文本框,必须用 `15`
|
|
22
|
+
|
|
23
|
+
识别规则:
|
|
24
|
+
|
|
25
|
+
- 用户直接说字段类型,例如“附件字段”“富文本字段”,优先按枚举中文名精确匹配。
|
|
26
|
+
- 用户给出英文类型词,例如 `RichText`、`File`,按枚举 `valueText` 匹配。
|
|
27
|
+
- 用户给的是带业务名的字段,例如“采购明细附件”,应从字段描述中识别出“附件”并映射到 `6`。
|
|
28
|
+
- 若字段名本身无法唯一推出类型,例如“备注”“说明”“供应商对比”,必须结合用户上文指定的类型判断,不能自行猜测。
|