@rishiqing/cli 0.1.4 → 0.1.6
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 +65 -22
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/rishiqing.openapi.json +2 -18
- package/skills/rsq-workflow-createFlowApplication/SKILL.md +36 -17
- package/skills/rsq-workflow-createFlowApplication/references/api-sequence.md +47 -10
- package/skills/rsq-workflow-createFlowApplication/references/field-types.md +28 -0
package/package.json
CHANGED
package/rishiqing.openapi.json
CHANGED
|
@@ -2099,17 +2099,10 @@
|
|
|
2099
2099
|
"schema": {
|
|
2100
2100
|
"type": "object",
|
|
2101
2101
|
"required": [
|
|
2102
|
-
"formId",
|
|
2103
2102
|
"flowApplicationId",
|
|
2104
|
-
"formName"
|
|
2105
|
-
"fields"
|
|
2103
|
+
"formName"
|
|
2106
2104
|
],
|
|
2107
2105
|
"properties": {
|
|
2108
|
-
"formId": {
|
|
2109
|
-
"type": "string",
|
|
2110
|
-
"description": "表单id",
|
|
2111
|
-
"example": "form-001"
|
|
2112
|
-
},
|
|
2113
2106
|
"flowApplicationId": {
|
|
2114
2107
|
"type": "string",
|
|
2115
2108
|
"description": "流程应用id",
|
|
@@ -2126,16 +2119,9 @@
|
|
|
2126
2119
|
"items": {
|
|
2127
2120
|
"type": "object",
|
|
2128
2121
|
"required": [
|
|
2129
|
-
"fieldId",
|
|
2130
|
-
"fieldType",
|
|
2131
2122
|
"fieldName"
|
|
2132
2123
|
],
|
|
2133
2124
|
"properties": {
|
|
2134
|
-
"fieldId": {
|
|
2135
|
-
"type": "string",
|
|
2136
|
-
"description": "表单字段id",
|
|
2137
|
-
"example": "field-001"
|
|
2138
|
-
},
|
|
2139
2125
|
"fieldType": {
|
|
2140
2126
|
"type": "string",
|
|
2141
2127
|
"description": "表单字段类型",
|
|
@@ -2152,12 +2138,10 @@
|
|
|
2152
2138
|
}
|
|
2153
2139
|
},
|
|
2154
2140
|
"example": {
|
|
2155
|
-
"formId": "",
|
|
2156
2141
|
"flowApplicationId": "flowApp_019d246a38247515b5fd367f78188422",
|
|
2157
2142
|
"formName": "入职登记表",
|
|
2158
2143
|
"fields": [
|
|
2159
2144
|
{
|
|
2160
|
-
"fieldId": "",
|
|
2161
2145
|
"fieldType": "1",
|
|
2162
2146
|
"fieldName": "姓名"
|
|
2163
2147
|
}
|
|
@@ -8001,4 +7985,4 @@
|
|
|
8001
7985
|
},
|
|
8002
7986
|
"servers": [],
|
|
8003
7987
|
"security": []
|
|
8004
|
-
}
|
|
7988
|
+
}
|
|
@@ -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,25 @@ 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
|
+
|
|
81
|
+
## 6. 从第二个业务步骤开始创建后续步骤
|
|
55
82
|
|
|
56
83
|
```bash
|
|
57
84
|
rsq-cli agent workflow createStepInfo --body-file <request.json> --json
|
|
@@ -61,7 +88,7 @@ rsq-cli agent workflow createStepInfo --body-file <request.json> --json
|
|
|
61
88
|
|
|
62
89
|
- `stepInfoId`
|
|
63
90
|
|
|
64
|
-
##
|
|
91
|
+
## 7. 创建表单
|
|
65
92
|
|
|
66
93
|
`createForm` 只需要传真实业务字段:
|
|
67
94
|
|
|
@@ -69,9 +96,9 @@ rsq-cli agent workflow createStepInfo --body-file <request.json> --json
|
|
|
69
96
|
- `formName`
|
|
70
97
|
- `fields`
|
|
71
98
|
|
|
72
|
-
|
|
99
|
+
不要传 `formId` 或 `fieldId`。`createForm` 的请求体里只保留业务字段。
|
|
73
100
|
|
|
74
|
-
##
|
|
101
|
+
## 8. 把表单绑定到步骤
|
|
75
102
|
|
|
76
103
|
创建表单后,调用:
|
|
77
104
|
|
|
@@ -79,7 +106,9 @@ rsq-cli agent workflow createStepInfo --body-file <request.json> --json
|
|
|
79
106
|
rsq-cli agent workflow updateStepInfo --step-info-id <stepInfoId> --body-file <request.json> --json
|
|
80
107
|
```
|
|
81
108
|
|
|
82
|
-
|
|
109
|
+
对第一个业务步骤,如果复用了默认“未命名步骤”,这里的 `stepInfoId` 就是那个默认步骤的 id。
|
|
110
|
+
|
|
111
|
+
## 9. 创建审核项
|
|
83
112
|
|
|
84
113
|
```bash
|
|
85
114
|
rsq-cli agent workflow createAuditInfo --body-file <request.json> --json
|
|
@@ -92,7 +121,15 @@ rsq-cli agent workflow createAuditInfo --body-file <request.json> --json
|
|
|
92
121
|
|
|
93
122
|
## 建议顺序
|
|
94
123
|
|
|
95
|
-
|
|
124
|
+
如果默认走“标准模式”,并且存在默认“未命名步骤”且用户明确给了步骤列表:
|
|
125
|
+
|
|
126
|
+
1. `listStepInfosByFlowApplicationId`
|
|
127
|
+
2. 第一个业务步骤先 `createForm`
|
|
128
|
+
3. 对默认步骤执行 `updateStepInfo`,写入首步骤名称和 `formId`
|
|
129
|
+
4. 对首步骤执行 `createAuditInfo`
|
|
130
|
+
5. 从第二个业务步骤开始执行后续创建
|
|
131
|
+
|
|
132
|
+
对后续新建步骤执行:
|
|
96
133
|
|
|
97
134
|
1. `createStepInfo`
|
|
98
135
|
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
|
+
- 若字段名本身无法唯一推出类型,例如“备注”“说明”“供应商对比”,必须结合用户上文指定的类型判断,不能自行猜测。
|