@qingflow-tech/qingflow-cli 1.1.42 → 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 (63) hide show
  1. package/README.md +5 -4
  2. package/package.json +2 -1
  3. package/pyproject.toml +3 -2
  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 +120 -0
  26. package/src/qingflow_mcp/app_form_validator.py +199 -0
  27. package/src/qingflow_mcp/builder_facade/app_form.py +3365 -0
  28. package/src/qingflow_mcp/builder_facade/app_form_schema.py +269 -0
  29. package/src/qingflow_mcp/builder_facade/schemas/app_form/manifest.json +37 -0
  30. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +2909 -0
  31. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +337 -0
  32. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +181 -0
  33. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +373 -0
  34. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/code_block.json +242 -0
  35. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/data_relation.json +557 -0
  36. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date.json +95 -0
  37. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/datetime.json +95 -0
  38. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/department.json +290 -0
  39. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/email.json +135 -0
  40. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/link.json +135 -0
  41. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/long_text.json +135 -0
  42. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/member.json +429 -0
  43. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/multi_select.json +159 -0
  44. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +181 -0
  45. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/phone.json +144 -0
  46. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +357 -0
  47. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +382 -0
  48. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_choice.json +159 -0
  49. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_select.json +159 -0
  50. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +1831 -0
  51. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/text.json +135 -0
  52. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +736 -0
  53. package/src/qingflow_mcp/builder_facade/service.py +5 -2
  54. package/src/qingflow_mcp/cli/commands/builder.py +91 -28
  55. package/src/qingflow_mcp/cli/json_io.py +21 -2
  56. package/src/qingflow_mcp/cli/main.py +3 -39
  57. package/src/qingflow_mcp/cloud_oauth_proxy.py +96 -3
  58. package/src/qingflow_mcp/public_surface.py +5 -2
  59. package/src/qingflow_mcp/response_trim.py +48 -0
  60. package/src/qingflow_mcp/server_app_builder.py +38 -86
  61. package/src/qingflow_mcp/server_cloud.py +66 -1
  62. package/src/qingflow_mcp/tools/ai_builder_tools.py +93 -100
  63. package/src/qingflow_mcp/tools/app_tools.py +46 -65
@@ -0,0 +1,382 @@
1
+ {
2
+ "$defs": {
3
+ "AnswerValue": {
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "dataValue": {
7
+ "type": [
8
+ "string",
9
+ "null"
10
+ ]
11
+ },
12
+ "email": {
13
+ "type": [
14
+ "string",
15
+ "null"
16
+ ]
17
+ },
18
+ "id": {
19
+ "type": [
20
+ "integer",
21
+ "null"
22
+ ]
23
+ },
24
+ "optionId": {
25
+ "type": [
26
+ "string",
27
+ "null"
28
+ ]
29
+ },
30
+ "ordinal": {
31
+ "type": [
32
+ "integer",
33
+ "null"
34
+ ]
35
+ },
36
+ "otherInfo": {
37
+ "type": [
38
+ "string",
39
+ "null"
40
+ ]
41
+ },
42
+ "pluginValue": {
43
+ "type": [
44
+ "string",
45
+ "null"
46
+ ]
47
+ },
48
+ "queId": {
49
+ "type": [
50
+ "integer",
51
+ "null"
52
+ ]
53
+ },
54
+ "value": {
55
+ "type": [
56
+ "string",
57
+ "null"
58
+ ]
59
+ },
60
+ "valueStr": {
61
+ "type": [
62
+ "string",
63
+ "null"
64
+ ]
65
+ }
66
+ },
67
+ "type": "object"
68
+ },
69
+ "DefaultValues": {
70
+ "additionalProperties": false,
71
+ "properties": {
72
+ "associatedQueType": {
73
+ "type": [
74
+ "integer",
75
+ "null"
76
+ ]
77
+ },
78
+ "beingCanDecrypted": {
79
+ "type": [
80
+ "boolean",
81
+ "null"
82
+ ]
83
+ },
84
+ "beingDesensitized": {
85
+ "type": [
86
+ "boolean",
87
+ "null"
88
+ ]
89
+ },
90
+ "canDecimal": {
91
+ "type": [
92
+ "boolean",
93
+ "null"
94
+ ]
95
+ },
96
+ "currencyStatus": {
97
+ "type": [
98
+ "boolean",
99
+ "null"
100
+ ]
101
+ },
102
+ "currencyType": {
103
+ "type": [
104
+ "integer",
105
+ "null"
106
+ ]
107
+ },
108
+ "dateType": {
109
+ "type": [
110
+ "integer",
111
+ "null"
112
+ ]
113
+ },
114
+ "decimalDigit": {
115
+ "type": [
116
+ "integer",
117
+ "null"
118
+ ]
119
+ },
120
+ "numberFormat": {
121
+ "type": [
122
+ "integer",
123
+ "null"
124
+ ]
125
+ },
126
+ "queId": {
127
+ "type": [
128
+ "integer",
129
+ "null"
130
+ ]
131
+ },
132
+ "queTitle": {
133
+ "type": [
134
+ "string",
135
+ "null"
136
+ ]
137
+ },
138
+ "queType": {
139
+ "type": [
140
+ "integer",
141
+ "null"
142
+ ]
143
+ },
144
+ "referValues": {
145
+ "items": {
146
+ "$ref": "#/$defs/ReferenceDefaultValue"
147
+ },
148
+ "type": "array"
149
+ },
150
+ "rowId": {
151
+ "type": [
152
+ "integer",
153
+ "null"
154
+ ]
155
+ },
156
+ "sourceValue": {
157
+ "type": [
158
+ "string",
159
+ "null"
160
+ ]
161
+ },
162
+ "tableValues": {
163
+ "items": {
164
+ "items": {
165
+ "$ref": "#/$defs/DefaultValues"
166
+ },
167
+ "type": "array"
168
+ },
169
+ "type": "array"
170
+ },
171
+ "values": {
172
+ "items": {
173
+ "$ref": "#/$defs/AnswerValue"
174
+ },
175
+ "type": "array"
176
+ }
177
+ },
178
+ "required": [
179
+ "values"
180
+ ],
181
+ "type": "object"
182
+ },
183
+ "FieldCommon": {
184
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
185
+ "properties": {
186
+ "dataTitle": {
187
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
188
+ "type": "boolean"
189
+ },
190
+ "defaultType": {
191
+ "default": 1,
192
+ "description": "默认值类型;1 表示静态值,2 表示关联/绑定值,3 表示公式值。",
193
+ "enum": [
194
+ 1,
195
+ 2,
196
+ 3
197
+ ],
198
+ "type": "integer"
199
+ },
200
+ "defaultValue": {
201
+ "$ref": "#/$defs/ScalarDefaultValue",
202
+ "description": "普通字段的标量默认值;表格、地址、附件、引用等结构化默认值必须放在具体字段 config.defaultValues。显式 null 表示清除默认值。"
203
+ },
204
+ "description": {
205
+ "description": "字段说明;null 或空字符串表示清空。",
206
+ "type": [
207
+ "string",
208
+ "null"
209
+ ]
210
+ },
211
+ "name": {
212
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
213
+ "minLength": 1,
214
+ "type": "string"
215
+ },
216
+ "queId": {
217
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
218
+ "minimum": 1,
219
+ "type": "integer"
220
+ },
221
+ "required": {
222
+ "description": "是否必填;缺失时保留已有字段当前值。",
223
+ "type": "boolean"
224
+ },
225
+ "width": {
226
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
227
+ "maximum": 100,
228
+ "minimum": 1,
229
+ "type": "integer"
230
+ }
231
+ },
232
+ "required": [
233
+ "name"
234
+ ],
235
+ "type": "object"
236
+ },
237
+ "FieldSelector": {
238
+ "additionalProperties": false,
239
+ "anyOf": [
240
+ {
241
+ "required": [
242
+ "queId"
243
+ ]
244
+ },
245
+ {
246
+ "required": [
247
+ "name"
248
+ ]
249
+ }
250
+ ],
251
+ "description": "跨字段引用选择器;至少提供 queId 或 name,两者同时提供时必须指向同一字段。",
252
+ "properties": {
253
+ "name": {
254
+ "description": "字段名称;仅在当前作用域内唯一时可用于解析。",
255
+ "minLength": 1,
256
+ "type": "string"
257
+ },
258
+ "queId": {
259
+ "description": "已有字段的后端 ID;优先用于精确解析。",
260
+ "minimum": 1,
261
+ "type": "integer"
262
+ }
263
+ },
264
+ "type": "object"
265
+ },
266
+ "ReferenceDefaultValue": {
267
+ "additionalProperties": false,
268
+ "properties": {
269
+ "applyId": {
270
+ "type": [
271
+ "integer",
272
+ "null"
273
+ ]
274
+ },
275
+ "dataTitle": {
276
+ "type": [
277
+ "string",
278
+ "null"
279
+ ]
280
+ },
281
+ "values": {
282
+ "items": {
283
+ "$ref": "#/$defs/DefaultValues"
284
+ },
285
+ "type": "array"
286
+ }
287
+ },
288
+ "type": "object"
289
+ },
290
+ "RelationConfig": {
291
+ "additionalProperties": false,
292
+ "description": "引用字段配置;引用其他应用中的数据。",
293
+ "properties": {
294
+ "beingDefaultFormulaAutoFillEnabled": {
295
+ "type": [
296
+ "boolean",
297
+ "null"
298
+ ]
299
+ },
300
+ "defaultValueMatchRules": {
301
+ "type": [
302
+ "array",
303
+ "null"
304
+ ]
305
+ },
306
+ "defaultValues": {
307
+ "oneOf": [
308
+ {
309
+ "type": "null"
310
+ },
311
+ {
312
+ "$ref": "#/$defs/DefaultValues"
313
+ }
314
+ ]
315
+ },
316
+ "displayField": {
317
+ "$ref": "#/$defs/FieldSelector",
318
+ "description": "引用值的主展示字段。"
319
+ },
320
+ "relationMode": {
321
+ "default": "single",
322
+ "description": "单条引用或多条引用;缺失时按 single 处理。",
323
+ "enum": [
324
+ "single",
325
+ "multiple"
326
+ ]
327
+ },
328
+ "targetAppKey": {
329
+ "description": "被引用应用的 appKey。",
330
+ "minLength": 1,
331
+ "type": "string"
332
+ },
333
+ "visibleFields": {
334
+ "description": "引用选择界面额外展示的字段。",
335
+ "items": {
336
+ "$ref": "#/$defs/FieldSelector"
337
+ },
338
+ "type": "array",
339
+ "uniqueItems": true
340
+ }
341
+ },
342
+ "required": [
343
+ "targetAppKey",
344
+ "displayField"
345
+ ],
346
+ "type": "object"
347
+ },
348
+ "ScalarDefaultValue": {
349
+ "description": "不包含对象或数组的普通字段默认值。",
350
+ "type": [
351
+ "null",
352
+ "boolean",
353
+ "number",
354
+ "string"
355
+ ]
356
+ }
357
+ },
358
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/relation.json",
359
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
360
+ "allOf": [
361
+ {
362
+ "$ref": "#/$defs/FieldCommon"
363
+ },
364
+ {
365
+ "properties": {
366
+ "config": {
367
+ "$ref": "#/$defs/RelationConfig"
368
+ },
369
+ "type": {
370
+ "const": "relation"
371
+ }
372
+ },
373
+ "required": [
374
+ "type",
375
+ "config"
376
+ ]
377
+ }
378
+ ],
379
+ "title": "Qingflow AppForm v1alpha1 relation field",
380
+ "type": "object",
381
+ "unevaluatedProperties": false
382
+ }
@@ -0,0 +1,159 @@
1
+ {
2
+ "$defs": {
3
+ "ChoiceConfig": {
4
+ "additionalProperties": false,
5
+ "description": "选择类字段配置。",
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
+ },
55
+ "options": {
56
+ "description": "非空有序选项文案;缺失选项表示从该字段配置中删除。",
57
+ "items": {
58
+ "minLength": 1,
59
+ "type": "string"
60
+ },
61
+ "minItems": 1,
62
+ "type": "array",
63
+ "uniqueItems": true
64
+ }
65
+ },
66
+ "required": [
67
+ "options"
68
+ ],
69
+ "type": "object"
70
+ },
71
+ "FieldCommon": {
72
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
73
+ "properties": {
74
+ "dataTitle": {
75
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
76
+ "type": "boolean"
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
+ },
92
+ "description": {
93
+ "description": "字段说明;null 或空字符串表示清空。",
94
+ "type": [
95
+ "string",
96
+ "null"
97
+ ]
98
+ },
99
+ "name": {
100
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
101
+ "minLength": 1,
102
+ "type": "string"
103
+ },
104
+ "queId": {
105
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
106
+ "minimum": 1,
107
+ "type": "integer"
108
+ },
109
+ "required": {
110
+ "description": "是否必填;缺失时保留已有字段当前值。",
111
+ "type": "boolean"
112
+ },
113
+ "width": {
114
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
115
+ "maximum": 100,
116
+ "minimum": 1,
117
+ "type": "integer"
118
+ }
119
+ },
120
+ "required": [
121
+ "name"
122
+ ],
123
+ "type": "object"
124
+ },
125
+ "ScalarDefaultValue": {
126
+ "description": "不包含对象或数组的普通字段默认值。",
127
+ "type": [
128
+ "null",
129
+ "boolean",
130
+ "number",
131
+ "string"
132
+ ]
133
+ }
134
+ },
135
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/single_choice.json",
136
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
137
+ "allOf": [
138
+ {
139
+ "$ref": "#/$defs/FieldCommon"
140
+ },
141
+ {
142
+ "properties": {
143
+ "config": {
144
+ "$ref": "#/$defs/ChoiceConfig"
145
+ },
146
+ "type": {
147
+ "const": "single_choice"
148
+ }
149
+ },
150
+ "required": [
151
+ "type",
152
+ "config"
153
+ ]
154
+ }
155
+ ],
156
+ "title": "Qingflow AppForm v1alpha1 single_choice field",
157
+ "type": "object",
158
+ "unevaluatedProperties": false
159
+ }
@@ -0,0 +1,159 @@
1
+ {
2
+ "$defs": {
3
+ "ChoiceConfig": {
4
+ "additionalProperties": false,
5
+ "description": "选择类字段配置。",
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
+ },
55
+ "options": {
56
+ "description": "非空有序选项文案;缺失选项表示从该字段配置中删除。",
57
+ "items": {
58
+ "minLength": 1,
59
+ "type": "string"
60
+ },
61
+ "minItems": 1,
62
+ "type": "array",
63
+ "uniqueItems": true
64
+ }
65
+ },
66
+ "required": [
67
+ "options"
68
+ ],
69
+ "type": "object"
70
+ },
71
+ "FieldCommon": {
72
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
73
+ "properties": {
74
+ "dataTitle": {
75
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
76
+ "type": "boolean"
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
+ },
92
+ "description": {
93
+ "description": "字段说明;null 或空字符串表示清空。",
94
+ "type": [
95
+ "string",
96
+ "null"
97
+ ]
98
+ },
99
+ "name": {
100
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
101
+ "minLength": 1,
102
+ "type": "string"
103
+ },
104
+ "queId": {
105
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
106
+ "minimum": 1,
107
+ "type": "integer"
108
+ },
109
+ "required": {
110
+ "description": "是否必填;缺失时保留已有字段当前值。",
111
+ "type": "boolean"
112
+ },
113
+ "width": {
114
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
115
+ "maximum": 100,
116
+ "minimum": 1,
117
+ "type": "integer"
118
+ }
119
+ },
120
+ "required": [
121
+ "name"
122
+ ],
123
+ "type": "object"
124
+ },
125
+ "ScalarDefaultValue": {
126
+ "description": "不包含对象或数组的普通字段默认值。",
127
+ "type": [
128
+ "null",
129
+ "boolean",
130
+ "number",
131
+ "string"
132
+ ]
133
+ }
134
+ },
135
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/single_select.json",
136
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
137
+ "allOf": [
138
+ {
139
+ "$ref": "#/$defs/FieldCommon"
140
+ },
141
+ {
142
+ "properties": {
143
+ "config": {
144
+ "$ref": "#/$defs/ChoiceConfig"
145
+ },
146
+ "type": {
147
+ "const": "single_select"
148
+ }
149
+ },
150
+ "required": [
151
+ "type",
152
+ "config"
153
+ ]
154
+ }
155
+ ],
156
+ "title": "Qingflow AppForm v1alpha1 single_select field",
157
+ "type": "object",
158
+ "unevaluatedProperties": false
159
+ }