@qingflow-tech/qingflow-cli 1.1.61-beta.4 → 1.1.61-beta.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.
Files changed (61) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/pyproject.toml +2 -1
  4. package/skills/qingflow-cli/reference/QINGFLOW_CLI_BUILDER_CHARTS_WORKFLOW.md +1 -1
  5. package/skills/qingflow-cli/reference/QINGFLOW_CLI_BUILDER_PORTAL_WORKFLOW.md +6 -258
  6. package/skills/qingflow-cli/reference/builder/30-schema-fields.md +13 -0
  7. package/skills/qingflow-cli/reference/builder/70-portal.md +38 -17
  8. package/skills/qingflow-cli/reference/examples/portal/portal_apply_v1alpha1.example.json +100 -0
  9. package/skills/qingflow-cli/reference/examples/portal/portal_sections_all_types.example.json +6 -7
  10. package/src/qingflow_mcp/app_form_validator.py +20 -3
  11. package/src/qingflow_mcp/builder_facade/app_form.py +137 -17
  12. package/src/qingflow_mcp/builder_facade/models.py +177 -15
  13. package/src/qingflow_mcp/builder_facade/portals_schema.py +397 -0
  14. package/src/qingflow_mcp/builder_facade/schemas/app_form/manifest.json +14 -1
  15. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +49 -9
  16. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +27 -0
  17. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ai_content_classification.json +146 -0
  18. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ai_content_extraction.json +146 -0
  19. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ai_content_generation.json +146 -0
  20. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ai_document_parsing.json +146 -0
  21. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ai_image_generation.json +146 -0
  22. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ai_image_recognition.json +146 -0
  23. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ai_machine_translation.json +146 -0
  24. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ai_text_summary.json +146 -0
  25. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +2 -2
  26. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +27 -0
  27. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date_duration.json +146 -0
  28. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/embed_field.json +146 -0
  29. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/image_select.json +146 -0
  30. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/location.json +146 -0
  31. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +2 -2
  32. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/ocr.json +146 -0
  33. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +2 -2
  34. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +27 -0
  35. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +29 -2
  36. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +20 -7
  37. package/src/qingflow_mcp/builder_facade/schemas/portals/manifest.json +59 -0
  38. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/complete.json +1397 -0
  39. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/carousel.json +193 -0
  40. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/chart.json +643 -0
  41. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/favourite.json +203 -0
  42. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/filter.json +268 -0
  43. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/grid.json +265 -0
  44. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/link.json +131 -0
  45. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/task.json +199 -0
  46. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/text.json +123 -0
  47. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/components/view.json +196 -0
  48. package/src/qingflow_mcp/builder_facade/schemas/portals/v1alpha1/summary.json +800 -0
  49. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/complete.json +1 -1
  50. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/display.json +1 -1
  51. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/summary.json +1 -1
  52. package/src/qingflow_mcp/builder_facade/service.py +1251 -88
  53. package/src/qingflow_mcp/cli/commands/builder.py +132 -5
  54. package/src/qingflow_mcp/public_surface.py +2 -0
  55. package/src/qingflow_mcp/server_app_builder.py +34 -3
  56. package/src/qingflow_mcp/solution/compiler/icon_utils.py +73 -0
  57. package/src/qingflow_mcp/solution/executor.py +5 -2
  58. package/src/qingflow_mcp/tools/ai_builder_tools.py +118 -12
  59. package/src/qingflow_mcp/tools/portal_tools.py +4 -54
  60. package/src/qingflow_mcp/tools/portal_writer.py +59 -0
  61. package/src/qingflow_mcp/tools/solution_tools.py +2 -0
@@ -0,0 +1,123 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://qingflow.com/schemas/builder/portals/v1alpha1/components/text.json",
4
+ "title": "Qingflow Builder Portals Section · text (v1alpha1)",
5
+ "portalTextSectionDescription": "门户文本组件(text)的详细配置专项 Schema。获取命令:qingflow builder portal schema --schema-kind text(MCP: portal_schema(schema_kind=\"text\"))。本 Schema 校验 sections[] 中单个 text 区块(自包含,可直接交给 JSON Schema 校验器);后端 DashComponentInfo.type=5。整门户声明走 summary/complete 档。",
6
+ "$defs": {
7
+ "Position": {
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "positionShapeDescription": "网格位置。PC 是 24 列网格(cols≤24),mobile 是 6 列网格(cols≤6);同行组件共享同一 y 与 rows,一行 cols 合计 24。mobile 可省略(缺省与 pc 同布局)。平铺别名 pc_x/pc_y/pc_w/pc_h、mobile_* 也接受(x/y 与 w/h/cols/rows 混写均认),归一为本结构。标准行高:指标卡 rows=5、BI 图表 rows=7、数据视图 rows=11、业务入口 rows=4。",
11
+ "properties": {
12
+ "pc": {
13
+ "$ref": "#/$defs/PositionDetail"
14
+ },
15
+ "mobile": {
16
+ "$ref": "#/$defs/PositionDetail"
17
+ }
18
+ }
19
+ },
20
+ "PositionDetail": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "positionDetailShapeDescription": "单端位置:x=列偏移、y=行偏移、cols=占宽、rows=占高。",
24
+ "properties": {
25
+ "x": {
26
+ "type": [
27
+ "integer",
28
+ "null"
29
+ ],
30
+ "minimum": 0
31
+ },
32
+ "y": {
33
+ "type": [
34
+ "integer",
35
+ "null"
36
+ ],
37
+ "minimum": 0
38
+ },
39
+ "cols": {
40
+ "type": [
41
+ "integer",
42
+ "null"
43
+ ],
44
+ "minimum": 1
45
+ },
46
+ "rows": {
47
+ "type": [
48
+ "integer",
49
+ "null"
50
+ ],
51
+ "minimum": 1
52
+ }
53
+ },
54
+ "x-backend": "DashPosition.pc / DashPosition.mobile"
55
+ },
56
+ "Section": {
57
+ "type": "object",
58
+ "additionalProperties": false,
59
+ "required": [
60
+ "title",
61
+ "source_type",
62
+ "text"
63
+ ],
64
+ "properties": {
65
+ "title": {
66
+ "type": "string",
67
+ "minLength": 1,
68
+ "sectionTitleShapeDescription": "组件标题(渲染在组件头部)。",
69
+ "x-backend": "组件标题(DashChartInfo.title / gridConfig.gridTitle 等)"
70
+ },
71
+ "source_type": {
72
+ "const": "text",
73
+ "sourceTypeConstDescription": "组件类型固定为 text(文本);后端 type 整数见 x-backend。",
74
+ "x-backend": "DashComponentInfo.type(text)"
75
+ },
76
+ "role": {
77
+ "type": "string",
78
+ "roleShapeDescription": "组件角色标注(编排辅助,如 metric=指标卡;影响布局预设的排布与行高)。别名 zone/section_role。"
79
+ },
80
+ "position": {
81
+ "$ref": "#/$defs/Position"
82
+ },
83
+ "style_config": {
84
+ "type": "object",
85
+ "styleConfigSectionDescription": "组件级样式(受控键集;键白名单以 ws40013 dataset 实测形态校准,未经校准的键会被拒绝)。别名 dash_style_config/dashStyleConfigBO。",
86
+ "x-backend": "DashComponentInfo.dashStyleConfigBO(DashStyleConfigBO)"
87
+ },
88
+ "text": {
89
+ "type": "string",
90
+ "textPropShapeDescription": "文本内容(支持富文本 HTML 片段,dataset 校准后开放结构化键)。",
91
+ "x-backend": "ComponentTextConfig.content"
92
+ }
93
+ }
94
+ }
95
+ },
96
+ "$ref": "#/$defs/Section",
97
+ "x-qingflow-detail-query": {
98
+ "currentKind": "text",
99
+ "tool": "portal_schema",
100
+ "cli": "qingflow builder portal schema --schema-kind text",
101
+ "argument": "schema_kind",
102
+ "detailQueryDescription": "本文件是 文本组件的自包含专项 Schema(内联全部引用定义,可独立交给 JSON Schema 校验器)。chart/view/grid/filter/text/link/carousel/task/favourite 各组件专项 Schema分别经 qingflow builder portal schema --schema-kind <类型> 获取。整门户声明用 qingflow builder portal schema --schema-kind summary|complete 获取;回读既有门户用 qingflow builder portal get --dash-key K --schema-kind complete。",
103
+ "readSources": {
104
+ "chartIds": "已有图表 id 用 chart 面读取;内联创建直接在 chart 键声明。",
105
+ "viewKeys": "视图唯一键用 qingflow builder views get --app-key APP 回读。"
106
+ }
107
+ },
108
+ "examples": [
109
+ {
110
+ "title": "使用说明",
111
+ "source_type": "text",
112
+ "position": {
113
+ "pc": {
114
+ "x": 0,
115
+ "y": 0,
116
+ "cols": 24,
117
+ "rows": 3
118
+ }
119
+ },
120
+ "text": "<p>本门户展示设备运维核心指标;数据每日 0 点刷新。</p>"
121
+ }
122
+ ]
123
+ }
@@ -0,0 +1,196 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://qingflow.com/schemas/builder/portals/v1alpha1/components/view.json",
4
+ "title": "Qingflow Builder Portals Section · view (v1alpha1)",
5
+ "portalViewSectionDescription": "门户数据视图组件(view)的详细配置专项 Schema。获取命令:qingflow builder portal schema --schema-kind view(MCP: portal_schema(schema_kind=\"view\"))。本 Schema 校验 sections[] 中单个 view 区块(自包含,可直接交给 JSON Schema 校验器);后端 DashComponentInfo.type=10。整门户声明走 summary/complete 档。",
6
+ "$defs": {
7
+ "Position": {
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "positionShapeDescription": "网格位置。PC 是 24 列网格(cols≤24),mobile 是 6 列网格(cols≤6);同行组件共享同一 y 与 rows,一行 cols 合计 24。mobile 可省略(缺省与 pc 同布局)。平铺别名 pc_x/pc_y/pc_w/pc_h、mobile_* 也接受(x/y 与 w/h/cols/rows 混写均认),归一为本结构。标准行高:指标卡 rows=5、BI 图表 rows=7、数据视图 rows=11、业务入口 rows=4。",
11
+ "properties": {
12
+ "pc": {
13
+ "$ref": "#/$defs/PositionDetail"
14
+ },
15
+ "mobile": {
16
+ "$ref": "#/$defs/PositionDetail"
17
+ }
18
+ }
19
+ },
20
+ "PositionDetail": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "positionDetailShapeDescription": "单端位置:x=列偏移、y=行偏移、cols=占宽、rows=占高。",
24
+ "properties": {
25
+ "x": {
26
+ "type": [
27
+ "integer",
28
+ "null"
29
+ ],
30
+ "minimum": 0
31
+ },
32
+ "y": {
33
+ "type": [
34
+ "integer",
35
+ "null"
36
+ ],
37
+ "minimum": 0
38
+ },
39
+ "cols": {
40
+ "type": [
41
+ "integer",
42
+ "null"
43
+ ],
44
+ "minimum": 1
45
+ },
46
+ "rows": {
47
+ "type": [
48
+ "integer",
49
+ "null"
50
+ ],
51
+ "minimum": 1
52
+ }
53
+ },
54
+ "x-backend": "DashPosition.pc / DashPosition.mobile"
55
+ },
56
+ "ViewRef": {
57
+ "type": "object",
58
+ "additionalProperties": false,
59
+ "required": [
60
+ "app_key"
61
+ ],
62
+ "viewRefShapeDescription": "业务视图引用。view_key 或 view_name 至少一个;view_key 为后端唯一键,优先使用;不要用「全部数据/我的数据」系统视图。",
63
+ "anyOf": [
64
+ {
65
+ "required": [
66
+ "view_key"
67
+ ]
68
+ },
69
+ {
70
+ "required": [
71
+ "view_name"
72
+ ]
73
+ }
74
+ ],
75
+ "properties": {
76
+ "app_key": {
77
+ "type": "string",
78
+ "viewRefAppKeyShapeDescription": "视图所属应用 key。别名 appKey。",
79
+ "x-backend": "ComponentViewConfig.appKey"
80
+ },
81
+ "view_key": {
82
+ "type": "string",
83
+ "viewRefKeyShapeDescription": "视图唯一键(viewgraphKey)。获取:qingflow builder views get --app-key APP。别名 viewKey。",
84
+ "x-backend": "ComponentViewConfig.viewgraphKey"
85
+ },
86
+ "view_name": {
87
+ "type": "string",
88
+ "viewRefNameShapeDescription": "视图名称(按名解析,重名有歧义风险)。别名 viewName。"
89
+ }
90
+ }
91
+ },
92
+ "ViewDisplayConfig": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "viewDisplayShapeDescription": "视图组件展示配置。",
96
+ "properties": {
97
+ "show_title": {
98
+ "type": "boolean",
99
+ "default": true,
100
+ "viewShowTitleShapeDescription": "是否显示组件标题。别名 beingShowTitle。",
101
+ "x-backend": "ComponentViewConfig.beingShowTitle"
102
+ },
103
+ "component_title": {
104
+ "type": "string",
105
+ "viewComponentTitleShapeDescription": "组件内标题(缺省用 section.title)。",
106
+ "x-backend": "ComponentViewConfig.componentTitle"
107
+ }
108
+ }
109
+ },
110
+ "Section": {
111
+ "type": "object",
112
+ "additionalProperties": false,
113
+ "required": [
114
+ "source_type",
115
+ "view_ref"
116
+ ],
117
+ "properties": {
118
+ "title": {
119
+ "anyOf": [
120
+ {
121
+ "type": "string"
122
+ },
123
+ {
124
+ "type": "null"
125
+ }
126
+ ],
127
+ "sectionTitleDescription": "组件显示标题。空标题(null)是合法存量形态(显示标题开但标题空,读链渲染时回退图表名/视图名);创建语义缺省建议显式命名。",
128
+ "x-backend": "组件标题(DashChartInfo.title / DashChartInfo.chartComponentTitle / gridConfig.gridTitle / componentTaskTitle 等;null 落库 NULL)"
129
+ },
130
+ "source_type": {
131
+ "const": "view",
132
+ "sourceTypeConstDescription": "组件类型固定为 view(数据视图);后端 type 整数见 x-backend。",
133
+ "x-backend": "DashComponentInfo.type(view)"
134
+ },
135
+ "role": {
136
+ "type": "string",
137
+ "roleShapeDescription": "组件角色标注(编排辅助,如 metric=指标卡;影响布局预设的排布与行高)。别名 zone/section_role。"
138
+ },
139
+ "position": {
140
+ "$ref": "#/$defs/Position"
141
+ },
142
+ "style_config": {
143
+ "type": "object",
144
+ "styleConfigSectionDescription": "组件级样式(受控键集;键白名单以 ws40013 dataset 实测形态校准,未经校准的键会被拒绝)。别名 dash_style_config/dashStyleConfigBO。",
145
+ "x-backend": "DashComponentInfo.dashStyleConfigBO(DashStyleConfigBO)"
146
+ },
147
+ "view_ref": {
148
+ "$ref": "#/$defs/ViewRef",
149
+ "viewRefPropDescription": "业务视图引用(必填)。"
150
+ },
151
+ "view_display": {
152
+ "$ref": "#/$defs/ViewDisplayConfig",
153
+ "viewDisplayPropDescription": "视图组件展示配置(可选)。"
154
+ },
155
+ "show_title": {
156
+ "type": "boolean",
157
+ "showTitleShapeDescription": "显示标题开关(draft_dash_chart.being_show_title 落库列)。提取侧读面必有值;存量 false 必须保真(渲染语义依赖)。声明缺省时编译回落产品默认 true。",
158
+ "x-backend": "DashChart.beingShowTitle(chart/view 组件)"
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "$ref": "#/$defs/Section",
164
+ "x-qingflow-detail-query": {
165
+ "currentKind": "view",
166
+ "tool": "portal_schema",
167
+ "cli": "qingflow builder portal schema --schema-kind view",
168
+ "argument": "schema_kind",
169
+ "detailQueryDescription": "本文件是 数据视图组件的自包含专项 Schema(内联全部引用定义,可独立交给 JSON Schema 校验器)。chart/view/grid/filter/text/link/carousel/task/favourite 各组件专项 Schema分别经 qingflow builder portal schema --schema-kind <类型> 获取。整门户声明用 qingflow builder portal schema --schema-kind summary|complete 获取;回读既有门户用 qingflow builder portal get --dash-key K --schema-kind complete。",
170
+ "readSources": {
171
+ "chartIds": "已有图表 id 用 chart 面读取;内联创建直接在 chart 键声明。",
172
+ "viewKeys": "视图唯一键用 qingflow builder views get --app-key APP 回读。"
173
+ }
174
+ },
175
+ "examples": [
176
+ {
177
+ "title": "异常设备",
178
+ "source_type": "view",
179
+ "position": {
180
+ "pc": {
181
+ "x": 0,
182
+ "y": 16,
183
+ "cols": 24,
184
+ "rows": 11
185
+ }
186
+ },
187
+ "view_ref": {
188
+ "app_key": "APP_KEY_DEVICE",
189
+ "view_key": "VIEW_KEY_ABNORMAL"
190
+ },
191
+ "view_display": {
192
+ "show_title": true
193
+ }
194
+ }
195
+ ]
196
+ }