@qingflow-tech/qingflow-cli 1.1.43-beta.1 → 1.1.43-beta.2

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 (50) hide show
  1. package/README.md +4 -3
  2. package/package.json +1 -1
  3. package/pyproject.toml +1 -1
  4. package/skills/qingflow-app-form/SKILL.md +53 -0
  5. package/skills/qingflow-app-form/agents/openai.yaml +4 -0
  6. package/skills/qingflow-cli/SKILL.md +6 -6
  7. package/skills/qingflow-cli/manifest.yaml +1 -1
  8. package/skills/qingflow-cli/reference/QINGFLOW_CLI_BUILDER_APP_DELIVERY_WORKFLOW.md +4 -4
  9. package/skills/qingflow-cli/reference/QINGFLOW_CLI_EXPLORATION_REPORT.md +1 -1
  10. package/skills/qingflow-cli/reference/QINGFLOW_CLI_FIELD_DATA_TYPES.md +1 -1
  11. package/skills/qingflow-cli/reference/QINGFLOW_CLI_SCHEMA_APPLY_FIELD_TYPES_AND_SCENARIOS.md +4 -4
  12. package/skills/qingflow-cli/reference/builder/10-build-single-app.md +5 -5
  13. package/skills/qingflow-cli/reference/builder/20-build-complete-system.md +14 -14
  14. package/skills/qingflow-cli/reference/builder/30-schema-fields.md +98 -101
  15. package/skills/qingflow-cli/reference/builder/40-layout.md +39 -31
  16. package/skills/qingflow-cli/reference/builder/README.md +9 -9
  17. package/skills/qingflow-cli/reference/builder/code-integrations/README.md +4 -2
  18. package/skills/qingflow-cli/reference/builder/code-integrations/code-block.md +2 -0
  19. package/skills/qingflow-cli/reference/builder/code-integrations/q-linker.md +2 -0
  20. package/skills/qingflow-cli/reference/builder/reference/app-delivery-sop.md +45 -38
  21. package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_EXPLORATION_REPORT.md +1 -1
  22. package/skills/qingflow-cli/reference/core/QINGFLOW_CLI_FIELD_DATA_TYPES.md +1 -1
  23. package/skills/qingflow-cli/reference/examples/README.md +3 -3
  24. package/skills/qingflow-mcp-setup/SKILL.md +1 -1
  25. package/src/qingflow_mcp/app_form_compat.py +6 -1
  26. package/src/qingflow_mcp/builder_facade/app_form.py +547 -18
  27. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +1321 -178
  28. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +268 -7
  29. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +115 -10
  30. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +304 -7
  31. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/code_block.json +23 -4
  32. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/data_relation.json +23 -4
  33. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date.json +23 -4
  34. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/datetime.json +23 -4
  35. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/department.json +145 -4
  36. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/email.json +69 -10
  37. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/link.json +69 -10
  38. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/long_text.json +69 -10
  39. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/member.json +360 -7
  40. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/multi_select.json +71 -4
  41. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +115 -10
  42. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/phone.json +78 -10
  43. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +23 -4
  44. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +249 -4
  45. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_choice.json +71 -4
  46. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_select.json +71 -4
  47. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +1041 -20
  48. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/text.json +69 -10
  49. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +23 -0
  50. package/src/qingflow_mcp/response_trim.py +41 -1
@@ -1,21 +1,98 @@
1
1
  {
2
2
  "$defs": {
3
- "EmptyConfig": {
3
+ "DepartmentSelector": {
4
4
  "additionalProperties": false,
5
- "description": "该字段类型没有特殊配置。",
5
+ "description": "部门身份;deptId 必填,deptName 仅用于展示。",
6
+ "properties": {
7
+ "deptId": {
8
+ "minimum": 1,
9
+ "type": "integer"
10
+ },
11
+ "deptName": {
12
+ "minLength": 1,
13
+ "type": "string"
14
+ }
15
+ },
16
+ "required": [
17
+ "deptId"
18
+ ],
19
+ "type": "object"
20
+ },
21
+ "DynamicMemberSelector": {
22
+ "additionalProperties": false,
23
+ "properties": {
24
+ "queId": {
25
+ "type": "integer"
26
+ },
27
+ "queTitle": {
28
+ "type": "string"
29
+ },
30
+ "type": {
31
+ "minimum": 1,
32
+ "type": "integer"
33
+ }
34
+ },
35
+ "required": [
36
+ "type"
37
+ ],
38
+ "type": "object"
39
+ },
40
+ "ExternalDepartmentSelector": {
41
+ "additionalProperties": false,
42
+ "properties": {
43
+ "deptId": {
44
+ "minimum": 1,
45
+ "type": "integer"
46
+ },
47
+ "deptName": {
48
+ "type": "string"
49
+ }
50
+ },
51
+ "required": [
52
+ "deptId"
53
+ ],
54
+ "type": "object"
55
+ },
56
+ "ExternalMemberSelector": {
57
+ "additionalProperties": false,
58
+ "properties": {
59
+ "email": {
60
+ "type": "string"
61
+ },
62
+ "nickName": {
63
+ "type": "string"
64
+ },
65
+ "uid": {
66
+ "minimum": 1,
67
+ "type": "integer"
68
+ }
69
+ },
70
+ "required": [
71
+ "uid"
72
+ ],
6
73
  "type": "object"
7
74
  },
8
75
  "FieldCommon": {
9
76
  "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
10
77
  "properties": {
11
- "dataCover": {
12
- "description": "是否作为数据封面;仅顶层附件字段可设为 true。",
13
- "type": "boolean"
14
- },
15
78
  "dataTitle": {
16
79
  "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
17
80
  "type": "boolean"
18
81
  },
82
+ "defaultType": {
83
+ "default": 1,
84
+ "description": "默认值类型;1 表示静态值,2 表示关联/绑定值,3 表示公式值。",
85
+ "enum": [
86
+ 1,
87
+ 2,
88
+ 3
89
+ ],
90
+ "type": "integer"
91
+ },
92
+ "defaultValue": {
93
+ "$ref": "#/$defs/ScalarDefaultValue",
94
+ "description": "普通字段的标量默认值;表格、地址、附件、引用等结构化默认值必须放在具体字段 config.defaultValues。显式 null 表示清除默认值。"
95
+ },
19
96
  "description": {
20
97
  "description": "字段说明;null 或空字符串表示清空。",
21
98
  "type": [
@@ -48,6 +125,282 @@
48
125
  "name"
49
126
  ],
50
127
  "type": "object"
128
+ },
129
+ "FieldSelector": {
130
+ "additionalProperties": false,
131
+ "anyOf": [
132
+ {
133
+ "required": [
134
+ "queId"
135
+ ]
136
+ },
137
+ {
138
+ "required": [
139
+ "name"
140
+ ]
141
+ }
142
+ ],
143
+ "description": "跨字段引用选择器;至少提供 queId 或 name,两者同时提供时必须指向同一字段。",
144
+ "properties": {
145
+ "name": {
146
+ "description": "字段名称;仅在当前作用域内唯一时可用于解析。",
147
+ "minLength": 1,
148
+ "type": "string"
149
+ },
150
+ "queId": {
151
+ "description": "已有字段的后端 ID;优先用于精确解析。",
152
+ "minimum": 1,
153
+ "type": "integer"
154
+ }
155
+ },
156
+ "type": "object"
157
+ },
158
+ "MemberConfig": {
159
+ "additionalProperties": false,
160
+ "description": "成员字段的选择范围和默认成员。",
161
+ "properties": {
162
+ "canScan": {
163
+ "type": [
164
+ "boolean",
165
+ "null"
166
+ ]
167
+ },
168
+ "defaultMembers": {
169
+ "$ref": "#/$defs/MemberScope"
170
+ },
171
+ "memberScope": {
172
+ "$ref": "#/$defs/MemberScope"
173
+ },
174
+ "memberScopeRelation": {
175
+ "$ref": "#/$defs/SelectScopeRelation"
176
+ },
177
+ "noRepeat": {
178
+ "type": [
179
+ "boolean",
180
+ "null"
181
+ ]
182
+ },
183
+ "scanType": {
184
+ "minimum": 0,
185
+ "type": [
186
+ "integer",
187
+ "null"
188
+ ]
189
+ }
190
+ },
191
+ "type": "object"
192
+ },
193
+ "MemberScope": {
194
+ "description": "成员字段可选范围;all 为工作区全部成员,custom 为显式成员/部门/角色或动态成员,relation 为按字段关联。",
195
+ "oneOf": [
196
+ {
197
+ "additionalProperties": false,
198
+ "properties": {
199
+ "includeSubDeparts": {
200
+ "type": "boolean"
201
+ },
202
+ "mode": {
203
+ "const": "all"
204
+ }
205
+ },
206
+ "required": [
207
+ "mode"
208
+ ],
209
+ "type": "object"
210
+ },
211
+ {
212
+ "additionalProperties": false,
213
+ "properties": {
214
+ "departments": {
215
+ "items": {
216
+ "$ref": "#/$defs/DepartmentSelector"
217
+ },
218
+ "type": "array"
219
+ },
220
+ "dynamic": {
221
+ "items": {
222
+ "$ref": "#/$defs/DynamicMemberSelector"
223
+ },
224
+ "type": "array"
225
+ },
226
+ "externalDepartments": {
227
+ "items": {
228
+ "$ref": "#/$defs/ExternalDepartmentSelector"
229
+ },
230
+ "type": "array"
231
+ },
232
+ "externalMembers": {
233
+ "items": {
234
+ "$ref": "#/$defs/ExternalMemberSelector"
235
+ },
236
+ "type": "array"
237
+ },
238
+ "includeSubDeparts": {
239
+ "type": "boolean"
240
+ },
241
+ "members": {
242
+ "items": {
243
+ "$ref": "#/$defs/MemberSelector"
244
+ },
245
+ "type": "array"
246
+ },
247
+ "mode": {
248
+ "const": "custom"
249
+ },
250
+ "roles": {
251
+ "items": {
252
+ "$ref": "#/$defs/RoleSelector"
253
+ },
254
+ "type": "array"
255
+ }
256
+ },
257
+ "required": [
258
+ "mode"
259
+ ],
260
+ "type": "object"
261
+ },
262
+ {
263
+ "additionalProperties": false,
264
+ "properties": {
265
+ "departments": {
266
+ "items": {
267
+ "$ref": "#/$defs/DepartmentSelector"
268
+ },
269
+ "type": "array"
270
+ },
271
+ "dynamic": {
272
+ "items": {
273
+ "$ref": "#/$defs/DynamicMemberSelector"
274
+ },
275
+ "type": "array"
276
+ },
277
+ "externalDepartments": {
278
+ "items": {
279
+ "$ref": "#/$defs/ExternalDepartmentSelector"
280
+ },
281
+ "type": "array"
282
+ },
283
+ "externalMembers": {
284
+ "items": {
285
+ "$ref": "#/$defs/ExternalMemberSelector"
286
+ },
287
+ "type": "array"
288
+ },
289
+ "includeSubDeparts": {
290
+ "type": "boolean"
291
+ },
292
+ "members": {
293
+ "items": {
294
+ "$ref": "#/$defs/MemberSelector"
295
+ },
296
+ "type": "array"
297
+ },
298
+ "mode": {
299
+ "const": "relation"
300
+ },
301
+ "roles": {
302
+ "items": {
303
+ "$ref": "#/$defs/RoleSelector"
304
+ },
305
+ "type": "array"
306
+ }
307
+ },
308
+ "required": [
309
+ "mode"
310
+ ],
311
+ "type": "object"
312
+ }
313
+ ]
314
+ },
315
+ "MemberSelector": {
316
+ "additionalProperties": false,
317
+ "properties": {
318
+ "nickName": {
319
+ "minLength": 1,
320
+ "type": "string"
321
+ },
322
+ "uid": {
323
+ "minimum": 1,
324
+ "type": "integer"
325
+ }
326
+ },
327
+ "required": [
328
+ "uid"
329
+ ],
330
+ "type": "object"
331
+ },
332
+ "RoleSelector": {
333
+ "additionalProperties": false,
334
+ "properties": {
335
+ "roleId": {
336
+ "minimum": 1,
337
+ "type": "integer"
338
+ },
339
+ "roleName": {
340
+ "minLength": 1,
341
+ "type": "string"
342
+ }
343
+ },
344
+ "required": [
345
+ "roleId"
346
+ ],
347
+ "type": "object"
348
+ },
349
+ "ScalarDefaultValue": {
350
+ "description": "不包含对象或数组的普通字段默认值。",
351
+ "type": [
352
+ "null",
353
+ "boolean",
354
+ "number",
355
+ "string"
356
+ ]
357
+ },
358
+ "SelectScopeRelation": {
359
+ "additionalProperties": false,
360
+ "properties": {
361
+ "displayedField": {
362
+ "$ref": "#/$defs/FieldSelector"
363
+ },
364
+ "displayedFieldType": {
365
+ "type": [
366
+ "integer",
367
+ "null"
368
+ ]
369
+ },
370
+ "matchRuleFormula": {
371
+ "type": [
372
+ "string",
373
+ "null"
374
+ ]
375
+ },
376
+ "matchRuleType": {
377
+ "type": [
378
+ "integer",
379
+ "null"
380
+ ]
381
+ },
382
+ "matchRules": {
383
+ "type": [
384
+ "array",
385
+ "null"
386
+ ]
387
+ },
388
+ "targetAppKey": {
389
+ "minLength": 1,
390
+ "type": "string"
391
+ },
392
+ "targetAppTitle": {
393
+ "type": [
394
+ "string",
395
+ "null"
396
+ ]
397
+ }
398
+ },
399
+ "required": [
400
+ "displayedField",
401
+ "targetAppKey"
402
+ ],
403
+ "type": "object"
51
404
  }
52
405
  },
53
406
  "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/member.json",
@@ -59,7 +412,7 @@
59
412
  {
60
413
  "properties": {
61
414
  "config": {
62
- "$ref": "#/$defs/EmptyConfig"
415
+ "$ref": "#/$defs/MemberConfig"
63
416
  },
64
417
  "type": {
65
418
  "const": "member"
@@ -4,6 +4,54 @@
4
4
  "additionalProperties": false,
5
5
  "description": "选择类字段配置。",
6
6
  "properties": {
7
+ "beingShowColor": {
8
+ "description": "是否展示选项颜色。",
9
+ "type": [
10
+ "boolean",
11
+ "null"
12
+ ]
13
+ },
14
+ "defaultOptions": {
15
+ "description": "选项默认选中状态;值必须来自 options,省略表示保留现有状态。",
16
+ "items": {
17
+ "minLength": 1,
18
+ "type": "string"
19
+ },
20
+ "type": "array",
21
+ "uniqueItems": true
22
+ },
23
+ "maxOpts": {
24
+ "description": "最多选择项数;null 表示不限制。",
25
+ "minimum": 0,
26
+ "type": [
27
+ "integer",
28
+ "null"
29
+ ]
30
+ },
31
+ "minOpts": {
32
+ "description": "最少选择项数;null 表示不限制。",
33
+ "minimum": 0,
34
+ "type": [
35
+ "integer",
36
+ "null"
37
+ ]
38
+ },
39
+ "optDirection": {
40
+ "description": "选项排列方向 ID。",
41
+ "minimum": 0,
42
+ "type": [
43
+ "integer",
44
+ "null"
45
+ ]
46
+ },
47
+ "optSelectMode": {
48
+ "description": "多项选择模式 ID。",
49
+ "minimum": 0,
50
+ "type": [
51
+ "integer",
52
+ "null"
53
+ ]
54
+ },
7
55
  "options": {
8
56
  "description": "非空有序选项文案;缺失选项表示从该字段配置中删除。",
9
57
  "items": {
@@ -23,14 +71,24 @@
23
71
  "FieldCommon": {
24
72
  "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
25
73
  "properties": {
26
- "dataCover": {
27
- "description": "是否作为数据封面;仅顶层附件字段可设为 true。",
28
- "type": "boolean"
29
- },
30
74
  "dataTitle": {
31
75
  "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
32
76
  "type": "boolean"
33
77
  },
78
+ "defaultType": {
79
+ "default": 1,
80
+ "description": "默认值类型;1 表示静态值,2 表示关联/绑定值,3 表示公式值。",
81
+ "enum": [
82
+ 1,
83
+ 2,
84
+ 3
85
+ ],
86
+ "type": "integer"
87
+ },
88
+ "defaultValue": {
89
+ "$ref": "#/$defs/ScalarDefaultValue",
90
+ "description": "普通字段的标量默认值;表格、地址、附件、引用等结构化默认值必须放在具体字段 config.defaultValues。显式 null 表示清除默认值。"
91
+ },
34
92
  "description": {
35
93
  "description": "字段说明;null 或空字符串表示清空。",
36
94
  "type": [
@@ -63,6 +121,15 @@
63
121
  "name"
64
122
  ],
65
123
  "type": "object"
124
+ },
125
+ "ScalarDefaultValue": {
126
+ "description": "不包含对象或数组的普通字段默认值。",
127
+ "type": [
128
+ "null",
129
+ "boolean",
130
+ "number",
131
+ "string"
132
+ ]
66
133
  }
67
134
  },
68
135
  "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/multi_select.json",
@@ -1,21 +1,26 @@
1
1
  {
2
2
  "$defs": {
3
- "EmptyConfig": {
4
- "additionalProperties": false,
5
- "description": "该字段类型没有特殊配置。",
6
- "type": "object"
7
- },
8
3
  "FieldCommon": {
9
4
  "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
10
5
  "properties": {
11
- "dataCover": {
12
- "description": "是否作为数据封面;仅顶层附件字段可设为 true。",
13
- "type": "boolean"
14
- },
15
6
  "dataTitle": {
16
7
  "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
17
8
  "type": "boolean"
18
9
  },
10
+ "defaultType": {
11
+ "default": 1,
12
+ "description": "默认值类型;1 表示静态值,2 表示关联/绑定值,3 表示公式值。",
13
+ "enum": [
14
+ 1,
15
+ 2,
16
+ 3
17
+ ],
18
+ "type": "integer"
19
+ },
20
+ "defaultValue": {
21
+ "$ref": "#/$defs/ScalarDefaultValue",
22
+ "description": "普通字段的标量默认值;表格、地址、附件、引用等结构化默认值必须放在具体字段 config.defaultValues。显式 null 表示清除默认值。"
23
+ },
19
24
  "description": {
20
25
  "description": "字段说明;null 或空字符串表示清空。",
21
26
  "type": [
@@ -48,6 +53,106 @@
48
53
  "name"
49
54
  ],
50
55
  "type": "object"
56
+ },
57
+ "NumberConfig": {
58
+ "additionalProperties": false,
59
+ "description": "数字和金额字段的数值、精度及显示格式。",
60
+ "properties": {
61
+ "canDecimal": {
62
+ "description": "是否允许小数;普通数字字段可显式设置。",
63
+ "type": [
64
+ "boolean",
65
+ "null"
66
+ ]
67
+ },
68
+ "canScan": {
69
+ "description": "是否允许扫码输入。",
70
+ "type": [
71
+ "boolean",
72
+ "null"
73
+ ]
74
+ },
75
+ "currencyStatus": {
76
+ "description": "金额字段是否显示货币符号。",
77
+ "type": [
78
+ "boolean",
79
+ "null"
80
+ ]
81
+ },
82
+ "currencyType": {
83
+ "description": "货币类型 ID。",
84
+ "minimum": 1,
85
+ "type": [
86
+ "integer",
87
+ "null"
88
+ ]
89
+ },
90
+ "decimalDigit": {
91
+ "description": "小数位数。",
92
+ "maximum": 10,
93
+ "minimum": 0,
94
+ "type": [
95
+ "integer",
96
+ "null"
97
+ ]
98
+ },
99
+ "maxValue": {
100
+ "description": "允许的最大值;后端按字符串保存。",
101
+ "type": [
102
+ "string",
103
+ "number",
104
+ "null"
105
+ ]
106
+ },
107
+ "minValue": {
108
+ "description": "允许的最小值;后端按字符串保存。",
109
+ "type": [
110
+ "string",
111
+ "number",
112
+ "null"
113
+ ]
114
+ },
115
+ "noRepeat": {
116
+ "description": "是否禁止重复值。",
117
+ "type": [
118
+ "boolean",
119
+ "null"
120
+ ]
121
+ },
122
+ "numberFormat": {
123
+ "description": "数字展示格式 ID。",
124
+ "minimum": 1,
125
+ "type": [
126
+ "integer",
127
+ "null"
128
+ ]
129
+ },
130
+ "numberLimitStatus": {
131
+ "description": "是否启用最小值和最大值限制。",
132
+ "type": [
133
+ "boolean",
134
+ "null"
135
+ ]
136
+ },
137
+ "scanType": {
138
+ "description": "扫码类型 ID。",
139
+ "minimum": 0,
140
+ "type": [
141
+ "integer",
142
+ "null"
143
+ ]
144
+ }
145
+ },
146
+ "type": "object"
147
+ },
148
+ "ScalarDefaultValue": {
149
+ "description": "不包含对象或数组的普通字段默认值。",
150
+ "type": [
151
+ "null",
152
+ "boolean",
153
+ "number",
154
+ "string"
155
+ ]
51
156
  }
52
157
  },
53
158
  "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/number.json",
@@ -59,7 +164,7 @@
59
164
  {
60
165
  "properties": {
61
166
  "config": {
62
- "$ref": "#/$defs/EmptyConfig"
167
+ "$ref": "#/$defs/NumberConfig"
63
168
  },
64
169
  "type": {
65
170
  "const": "number"