@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,95 @@
1
+ {
2
+ "$defs": {
3
+ "EmptyConfig": {
4
+ "additionalProperties": false,
5
+ "description": "该字段类型没有特殊配置。",
6
+ "type": "object"
7
+ },
8
+ "FieldCommon": {
9
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
10
+ "properties": {
11
+ "dataTitle": {
12
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
13
+ "type": "boolean"
14
+ },
15
+ "defaultType": {
16
+ "default": 1,
17
+ "description": "默认值类型;1 表示静态值,2 表示关联/绑定值,3 表示公式值。",
18
+ "enum": [
19
+ 1,
20
+ 2,
21
+ 3
22
+ ],
23
+ "type": "integer"
24
+ },
25
+ "defaultValue": {
26
+ "$ref": "#/$defs/ScalarDefaultValue",
27
+ "description": "普通字段的标量默认值;表格、地址、附件、引用等结构化默认值必须放在具体字段 config.defaultValues。显式 null 表示清除默认值。"
28
+ },
29
+ "description": {
30
+ "description": "字段说明;null 或空字符串表示清空。",
31
+ "type": [
32
+ "string",
33
+ "null"
34
+ ]
35
+ },
36
+ "name": {
37
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
38
+ "minLength": 1,
39
+ "type": "string"
40
+ },
41
+ "queId": {
42
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
43
+ "minimum": 1,
44
+ "type": "integer"
45
+ },
46
+ "required": {
47
+ "description": "是否必填;缺失时保留已有字段当前值。",
48
+ "type": "boolean"
49
+ },
50
+ "width": {
51
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
52
+ "maximum": 100,
53
+ "minimum": 1,
54
+ "type": "integer"
55
+ }
56
+ },
57
+ "required": [
58
+ "name"
59
+ ],
60
+ "type": "object"
61
+ },
62
+ "ScalarDefaultValue": {
63
+ "description": "不包含对象或数组的普通字段默认值。",
64
+ "type": [
65
+ "null",
66
+ "boolean",
67
+ "number",
68
+ "string"
69
+ ]
70
+ }
71
+ },
72
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/datetime.json",
73
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
74
+ "allOf": [
75
+ {
76
+ "$ref": "#/$defs/FieldCommon"
77
+ },
78
+ {
79
+ "properties": {
80
+ "config": {
81
+ "$ref": "#/$defs/EmptyConfig"
82
+ },
83
+ "type": {
84
+ "const": "datetime"
85
+ }
86
+ },
87
+ "required": [
88
+ "type"
89
+ ]
90
+ }
91
+ ],
92
+ "title": "Qingflow AppForm v1alpha1 datetime field",
93
+ "type": "object",
94
+ "unevaluatedProperties": false
95
+ }
@@ -0,0 +1,290 @@
1
+ {
2
+ "$defs": {
3
+ "DepartmentConfig": {
4
+ "additionalProperties": false,
5
+ "description": "部门字段的可选范围配置。",
6
+ "properties": {
7
+ "beingShowParentPath": {
8
+ "type": [
9
+ "boolean",
10
+ "null"
11
+ ]
12
+ },
13
+ "canScan": {
14
+ "type": [
15
+ "boolean",
16
+ "null"
17
+ ]
18
+ },
19
+ "defaultDepartments": {
20
+ "$ref": "#/$defs/DepartmentScope"
21
+ },
22
+ "departmentScope": {
23
+ "$ref": "#/$defs/DepartmentScope"
24
+ },
25
+ "departmentScopeRelation": {
26
+ "$ref": "#/$defs/SelectScopeRelation"
27
+ },
28
+ "noRepeat": {
29
+ "type": [
30
+ "boolean",
31
+ "null"
32
+ ]
33
+ },
34
+ "scanType": {
35
+ "minimum": 0,
36
+ "type": [
37
+ "integer",
38
+ "null"
39
+ ]
40
+ }
41
+ },
42
+ "required": [
43
+ "departmentScope"
44
+ ],
45
+ "type": "object"
46
+ },
47
+ "DepartmentScope": {
48
+ "description": "all 表示全部部门;custom 表示仅允许指定部门。",
49
+ "oneOf": [
50
+ {
51
+ "additionalProperties": false,
52
+ "properties": {
53
+ "includeSubDeparts": {
54
+ "description": "是否包含所选部门的下级部门。",
55
+ "type": "boolean"
56
+ },
57
+ "mode": {
58
+ "const": "all"
59
+ }
60
+ },
61
+ "required": [
62
+ "mode"
63
+ ],
64
+ "type": "object"
65
+ },
66
+ {
67
+ "additionalProperties": false,
68
+ "properties": {
69
+ "departments": {
70
+ "description": "custom 模式允许选择的部门列表。",
71
+ "items": {
72
+ "$ref": "#/$defs/DepartmentSelector"
73
+ },
74
+ "minItems": 1,
75
+ "type": "array"
76
+ },
77
+ "includeSubDeparts": {
78
+ "description": "是否包含指定部门的下级部门。",
79
+ "type": "boolean"
80
+ },
81
+ "mode": {
82
+ "const": "custom"
83
+ }
84
+ },
85
+ "required": [
86
+ "mode",
87
+ "departments"
88
+ ],
89
+ "type": "object"
90
+ },
91
+ {
92
+ "additionalProperties": false,
93
+ "properties": {
94
+ "includeSubDeparts": {
95
+ "type": "boolean"
96
+ },
97
+ "mode": {
98
+ "const": "relation"
99
+ }
100
+ },
101
+ "required": [
102
+ "mode"
103
+ ],
104
+ "type": "object"
105
+ }
106
+ ]
107
+ },
108
+ "DepartmentSelector": {
109
+ "additionalProperties": false,
110
+ "description": "部门身份;deptId 必填,deptName 仅用于展示。",
111
+ "properties": {
112
+ "deptId": {
113
+ "minimum": 1,
114
+ "type": "integer"
115
+ },
116
+ "deptName": {
117
+ "minLength": 1,
118
+ "type": "string"
119
+ }
120
+ },
121
+ "required": [
122
+ "deptId"
123
+ ],
124
+ "type": "object"
125
+ },
126
+ "FieldCommon": {
127
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
128
+ "properties": {
129
+ "dataTitle": {
130
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
131
+ "type": "boolean"
132
+ },
133
+ "defaultType": {
134
+ "default": 1,
135
+ "description": "默认值类型;1 表示静态值,2 表示关联/绑定值,3 表示公式值。",
136
+ "enum": [
137
+ 1,
138
+ 2,
139
+ 3
140
+ ],
141
+ "type": "integer"
142
+ },
143
+ "defaultValue": {
144
+ "$ref": "#/$defs/ScalarDefaultValue",
145
+ "description": "普通字段的标量默认值;表格、地址、附件、引用等结构化默认值必须放在具体字段 config.defaultValues。显式 null 表示清除默认值。"
146
+ },
147
+ "description": {
148
+ "description": "字段说明;null 或空字符串表示清空。",
149
+ "type": [
150
+ "string",
151
+ "null"
152
+ ]
153
+ },
154
+ "name": {
155
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
156
+ "minLength": 1,
157
+ "type": "string"
158
+ },
159
+ "queId": {
160
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
161
+ "minimum": 1,
162
+ "type": "integer"
163
+ },
164
+ "required": {
165
+ "description": "是否必填;缺失时保留已有字段当前值。",
166
+ "type": "boolean"
167
+ },
168
+ "width": {
169
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
170
+ "maximum": 100,
171
+ "minimum": 1,
172
+ "type": "integer"
173
+ }
174
+ },
175
+ "required": [
176
+ "name"
177
+ ],
178
+ "type": "object"
179
+ },
180
+ "FieldSelector": {
181
+ "additionalProperties": false,
182
+ "anyOf": [
183
+ {
184
+ "required": [
185
+ "queId"
186
+ ]
187
+ },
188
+ {
189
+ "required": [
190
+ "name"
191
+ ]
192
+ }
193
+ ],
194
+ "description": "跨字段引用选择器;至少提供 queId 或 name,两者同时提供时必须指向同一字段。",
195
+ "properties": {
196
+ "name": {
197
+ "description": "字段名称;仅在当前作用域内唯一时可用于解析。",
198
+ "minLength": 1,
199
+ "type": "string"
200
+ },
201
+ "queId": {
202
+ "description": "已有字段的后端 ID;优先用于精确解析。",
203
+ "minimum": 1,
204
+ "type": "integer"
205
+ }
206
+ },
207
+ "type": "object"
208
+ },
209
+ "ScalarDefaultValue": {
210
+ "description": "不包含对象或数组的普通字段默认值。",
211
+ "type": [
212
+ "null",
213
+ "boolean",
214
+ "number",
215
+ "string"
216
+ ]
217
+ },
218
+ "SelectScopeRelation": {
219
+ "additionalProperties": false,
220
+ "properties": {
221
+ "displayedField": {
222
+ "$ref": "#/$defs/FieldSelector"
223
+ },
224
+ "displayedFieldType": {
225
+ "type": [
226
+ "integer",
227
+ "null"
228
+ ]
229
+ },
230
+ "matchRuleFormula": {
231
+ "type": [
232
+ "string",
233
+ "null"
234
+ ]
235
+ },
236
+ "matchRuleType": {
237
+ "type": [
238
+ "integer",
239
+ "null"
240
+ ]
241
+ },
242
+ "matchRules": {
243
+ "type": [
244
+ "array",
245
+ "null"
246
+ ]
247
+ },
248
+ "targetAppKey": {
249
+ "minLength": 1,
250
+ "type": "string"
251
+ },
252
+ "targetAppTitle": {
253
+ "type": [
254
+ "string",
255
+ "null"
256
+ ]
257
+ }
258
+ },
259
+ "required": [
260
+ "displayedField",
261
+ "targetAppKey"
262
+ ],
263
+ "type": "object"
264
+ }
265
+ },
266
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/department.json",
267
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
268
+ "allOf": [
269
+ {
270
+ "$ref": "#/$defs/FieldCommon"
271
+ },
272
+ {
273
+ "properties": {
274
+ "config": {
275
+ "$ref": "#/$defs/DepartmentConfig"
276
+ },
277
+ "type": {
278
+ "const": "department"
279
+ }
280
+ },
281
+ "required": [
282
+ "type",
283
+ "config"
284
+ ]
285
+ }
286
+ ],
287
+ "title": "Qingflow AppForm v1alpha1 department field",
288
+ "type": "object",
289
+ "unevaluatedProperties": false
290
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "$defs": {
3
+ "FieldCommon": {
4
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
5
+ "properties": {
6
+ "dataTitle": {
7
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
8
+ "type": "boolean"
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
+ },
24
+ "description": {
25
+ "description": "字段说明;null 或空字符串表示清空。",
26
+ "type": [
27
+ "string",
28
+ "null"
29
+ ]
30
+ },
31
+ "name": {
32
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
33
+ "minLength": 1,
34
+ "type": "string"
35
+ },
36
+ "queId": {
37
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
38
+ "minimum": 1,
39
+ "type": "integer"
40
+ },
41
+ "required": {
42
+ "description": "是否必填;缺失时保留已有字段当前值。",
43
+ "type": "boolean"
44
+ },
45
+ "width": {
46
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
47
+ "maximum": 100,
48
+ "minimum": 1,
49
+ "type": "integer"
50
+ }
51
+ },
52
+ "required": [
53
+ "name"
54
+ ],
55
+ "type": "object"
56
+ },
57
+ "ScalarDefaultValue": {
58
+ "description": "不包含对象或数组的普通字段默认值。",
59
+ "type": [
60
+ "null",
61
+ "boolean",
62
+ "number",
63
+ "string"
64
+ ]
65
+ },
66
+ "TextConfig": {
67
+ "additionalProperties": false,
68
+ "description": "文字类字段的长度限制;省略表示保留当前值。",
69
+ "properties": {
70
+ "canScan": {
71
+ "description": "是否允许扫码输入。",
72
+ "type": [
73
+ "boolean",
74
+ "null"
75
+ ]
76
+ },
77
+ "maxWordCount": {
78
+ "description": "最多字数;null 表示清除限制。",
79
+ "minimum": 0,
80
+ "type": [
81
+ "integer",
82
+ "null"
83
+ ]
84
+ },
85
+ "minWordCount": {
86
+ "description": "最少字数;null 表示清除限制。",
87
+ "minimum": 0,
88
+ "type": [
89
+ "integer",
90
+ "null"
91
+ ]
92
+ },
93
+ "noRepeat": {
94
+ "description": "是否禁止重复值。",
95
+ "type": [
96
+ "boolean",
97
+ "null"
98
+ ]
99
+ },
100
+ "scanType": {
101
+ "description": "扫码类型 ID。",
102
+ "minimum": 0,
103
+ "type": [
104
+ "integer",
105
+ "null"
106
+ ]
107
+ }
108
+ },
109
+ "type": "object"
110
+ }
111
+ },
112
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/email.json",
113
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
114
+ "allOf": [
115
+ {
116
+ "$ref": "#/$defs/FieldCommon"
117
+ },
118
+ {
119
+ "properties": {
120
+ "config": {
121
+ "$ref": "#/$defs/TextConfig"
122
+ },
123
+ "type": {
124
+ "const": "email"
125
+ }
126
+ },
127
+ "required": [
128
+ "type"
129
+ ]
130
+ }
131
+ ],
132
+ "title": "Qingflow AppForm v1alpha1 email field",
133
+ "type": "object",
134
+ "unevaluatedProperties": false
135
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "$defs": {
3
+ "FieldCommon": {
4
+ "description": "顶层业务字段的公共属性;字段类型由 TopField 的判别分支定义。",
5
+ "properties": {
6
+ "dataTitle": {
7
+ "description": "是否作为数据标题;整个 body 最多且必须按规则存在一个。",
8
+ "type": "boolean"
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
+ },
24
+ "description": {
25
+ "description": "字段说明;null 或空字符串表示清空。",
26
+ "type": [
27
+ "string",
28
+ "null"
29
+ ]
30
+ },
31
+ "name": {
32
+ "description": "字段展示名称;同一父级内唯一,不单独作为字段身份。",
33
+ "minLength": 1,
34
+ "type": "string"
35
+ },
36
+ "queId": {
37
+ "description": "已有字段的后端 ID;get 返回,新增字段省略。",
38
+ "minimum": 1,
39
+ "type": "integer"
40
+ },
41
+ "required": {
42
+ "description": "是否必填;缺失时保留已有字段当前值。",
43
+ "type": "boolean"
44
+ },
45
+ "width": {
46
+ "description": "字段在所在行的宽度百分比;同一行要么全部提供且合计 100,要么全部省略。",
47
+ "maximum": 100,
48
+ "minimum": 1,
49
+ "type": "integer"
50
+ }
51
+ },
52
+ "required": [
53
+ "name"
54
+ ],
55
+ "type": "object"
56
+ },
57
+ "ScalarDefaultValue": {
58
+ "description": "不包含对象或数组的普通字段默认值。",
59
+ "type": [
60
+ "null",
61
+ "boolean",
62
+ "number",
63
+ "string"
64
+ ]
65
+ },
66
+ "TextConfig": {
67
+ "additionalProperties": false,
68
+ "description": "文字类字段的长度限制;省略表示保留当前值。",
69
+ "properties": {
70
+ "canScan": {
71
+ "description": "是否允许扫码输入。",
72
+ "type": [
73
+ "boolean",
74
+ "null"
75
+ ]
76
+ },
77
+ "maxWordCount": {
78
+ "description": "最多字数;null 表示清除限制。",
79
+ "minimum": 0,
80
+ "type": [
81
+ "integer",
82
+ "null"
83
+ ]
84
+ },
85
+ "minWordCount": {
86
+ "description": "最少字数;null 表示清除限制。",
87
+ "minimum": 0,
88
+ "type": [
89
+ "integer",
90
+ "null"
91
+ ]
92
+ },
93
+ "noRepeat": {
94
+ "description": "是否禁止重复值。",
95
+ "type": [
96
+ "boolean",
97
+ "null"
98
+ ]
99
+ },
100
+ "scanType": {
101
+ "description": "扫码类型 ID。",
102
+ "minimum": 0,
103
+ "type": [
104
+ "integer",
105
+ "null"
106
+ ]
107
+ }
108
+ },
109
+ "type": "object"
110
+ }
111
+ },
112
+ "$id": "https://builder.qingflow.com/schemas/app-form-apply/v1alpha1/fields/link.json",
113
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
114
+ "allOf": [
115
+ {
116
+ "$ref": "#/$defs/FieldCommon"
117
+ },
118
+ {
119
+ "properties": {
120
+ "config": {
121
+ "$ref": "#/$defs/TextConfig"
122
+ },
123
+ "type": {
124
+ "const": "link"
125
+ }
126
+ },
127
+ "required": [
128
+ "type"
129
+ ]
130
+ }
131
+ ],
132
+ "title": "Qingflow AppForm v1alpha1 link field",
133
+ "type": "object",
134
+ "unevaluatedProperties": false
135
+ }