@qingflow-tech/qingflow-cli 1.1.50-beta.1 → 1.1.50-beta.3

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 (65) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/pyproject.toml +8 -2
  4. package/skills/qingflow-cli/SKILL.md +74 -0
  5. package/skills/qingflow-cli/reference/QINGFLOW_CLI_BUILDER_VIEWS_WORKFLOW.md +3 -9
  6. package/skills/qingflow-cli/reference/builder/20-build-complete-system.md +3 -2
  7. package/skills/qingflow-cli/reference/builder/30-schema-fields.md +9 -5
  8. package/skills/qingflow-cli/reference/builder/50-views.md +176 -190
  9. package/skills/qingflow-cli/reference/builder/README.md +1 -1
  10. package/skills/qingflow-cli/reference/builder/reference/app-delivery-sop.md +6 -6
  11. package/skills/qingflow-cli/reference/examples/README.md +1 -1
  12. package/skills/qingflow-cli/reference/examples/views/views_apply_v1alpha1.example.json +14 -0
  13. package/skills/qingflow-cli/reference/examples/views/views_upsert_table_minimal.example.json +30 -36
  14. package/src/qingflow_mcp/app_form_compat.py +3 -0
  15. package/src/qingflow_mcp/app_form_validator.py +16 -3
  16. package/src/qingflow_mcp/builder_facade/app_form.py +360 -68
  17. package/src/qingflow_mcp/builder_facade/models.py +208 -17
  18. package/src/qingflow_mcp/builder_facade/schemas/app_form/manifest.json +1 -0
  19. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/complete.json +61 -27
  20. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/address.json +3 -7
  21. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/amount.json +3 -7
  22. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/attachment.json +5 -9
  23. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/code_block.json +3 -7
  24. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/data_relation.json +8 -15
  25. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/date.json +3 -7
  26. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/datetime.json +3 -7
  27. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/department.json +3 -7
  28. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/email.json +3 -7
  29. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/link.json +3 -7
  30. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/long_text.json +3 -7
  31. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/member.json +3 -7
  32. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/multi_select.json +3 -7
  33. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/number.json +3 -7
  34. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/phone.json +3 -7
  35. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/q_linker.json +3 -7
  36. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/relation.json +43 -12
  37. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/rich_text.json +146 -0
  38. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_choice.json +3 -7
  39. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/single_select.json +3 -7
  40. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/subtable.json +58 -24
  41. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/fields/text.json +3 -7
  42. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/formula.json +8 -0
  43. package/src/qingflow_mcp/builder_facade/schemas/app_form/v1alpha1/summary.json +5 -10
  44. package/src/qingflow_mcp/builder_facade/schemas/views/manifest.json +43 -0
  45. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/complete.json +1193 -0
  46. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/button-config.json +53 -0
  47. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/data-permission.json +60 -0
  48. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/display.json +71 -0
  49. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/operation-permission.json +48 -0
  50. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/details/query-condition.json +47 -0
  51. package/src/qingflow_mcp/builder_facade/schemas/views/v1alpha1/summary.json +274 -0
  52. package/src/qingflow_mcp/builder_facade/service.py +1427 -410
  53. package/src/qingflow_mcp/builder_facade/views_extract.py +572 -0
  54. package/src/qingflow_mcp/builder_facade/views_schema.py +400 -0
  55. package/src/qingflow_mcp/cli/commands/builder.py +72 -53
  56. package/src/qingflow_mcp/public_surface.py +3 -0
  57. package/src/qingflow_mcp/response_trim.py +11 -2
  58. package/src/qingflow_mcp/server_app_builder.py +32 -8
  59. package/src/qingflow_mcp/solution/executor.py +93 -7
  60. package/src/qingflow_mcp/tools/ai_builder_tools.py +211 -393
  61. package/src/qingflow_mcp/tools/solution_tools.py +2 -0
  62. package/src/qingflow_mcp/tools/view_tools.py +0 -6
  63. package/src/qingflow_mcp/tools/view_writer.py +44 -0
  64. package/skills/qingflow-cli/reference/examples/views/views_batch_full.example.json +0 -159
  65. package/skills/qingflow-cli/reference/views_upsert_table_minimal.example.json +0 -42
@@ -0,0 +1,1193 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://qingflow.com/schemas/builder/views/v1alpha1/complete.json",
4
+ "title": "Qingflow Builder Views Declaration · complete (v1alpha1)",
5
+ "viewCompleteDescription": "视图完整声明(完整版 spec):summary 的严格超集,覆盖 app_views_apply 当前支持的公开语义——数据权限/可见性授权/筛选/排序/查询条件/按钮配置/关联资源/类型特有配置(card/gantt/hierarchy)/展示与记录开关/分享安全。展示、排序、筛选和类型专属字段使用整数 queId;查询条件 rows 兼容字段名或 ID。打印模板明细、附件权限、列级权限、高级筛选公式和 calendar 尚未进入公开写入契约。schema 校验在别名归一之后执行,只约束规范名。各配置域的专项 Schema(含清空/替换语义)通过 app_views_schema 换 schema_kind 获取(见 x-qingflow-related-schemas)。",
6
+ "$defs": {
7
+ "ViewDeclaration": {
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "required": [
11
+ "name",
12
+ "type"
13
+ ],
14
+ "properties": {
15
+ "view_key": {
16
+ "type": "string",
17
+ "x-backend": "viewgraph.viewgraphKey",
18
+ "viewKeyDescription": "视图唯一键;upsert 锁定已有视图。"
19
+ },
20
+ "pinned": {
21
+ "type": "boolean",
22
+ "pinnedDescription": "是否固定在应用的视图列表顶部。true=固定,false=取消固定;省略时保持当前状态。别名 fixed/is_pinned/isPinned。它与 display.pin_navigate(视图内导航固定)无关。",
23
+ "x-backend": "POST /app/{appKey}/view/ordinal (FIXED_VIEW_LIST|VIEW_LIST)"
24
+ },
25
+ "name": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "maxLength": 200,
29
+ "x-backend": "viewgraphName"
30
+ },
31
+ "type": {
32
+ "type": "string",
33
+ "enum": [
34
+ "table",
35
+ "card",
36
+ "board",
37
+ "gantt",
38
+ "hierarchy"
39
+ ],
40
+ "viewTypeDescription": "完整版在四公开类型之上增加 hierarchy(层级视图;summary 档不含,dataset-v0 有 2 例)。",
41
+ "x-backend": "viewgraphType(tableView/cardView/boardView/ganttView/hierarchyView)"
42
+ },
43
+ "columns": {
44
+ "type": "array",
45
+ "items": {
46
+ "type": "integer"
47
+ },
48
+ "columnsDescription": "数据展示内容:业务字段或已存在系统字段的 queId 列表(table/card 必填)。别名 fields/column_names/columnNames。",
49
+ "x-backend": "viewgraphQuestion + viewgraphQueIds;已知系统字段允许原样透传"
50
+ },
51
+ "data_permission": {
52
+ "$ref": "#/$defs/DataPermission",
53
+ "dataPermissionDescription": "数据权限形状;scope=custom 时规则=本声明 filters(编译为 viewgraphLimit)。"
54
+ },
55
+ "visibility": {
56
+ "$ref": "#/$defs/Visibility",
57
+ "visibilityDescription": "操作权限·可见性授权(对内可见范围 + 外部成员授权)。",
58
+ "x-backend": "auth(MemberAuthInfoVO)+ viewgraph_member;external → viewgraph.externalAuth(NOT|WORKSPACE_ALL|SPECIFIC)"
59
+ },
60
+ "filters": {
61
+ "type": "array",
62
+ "items": {
63
+ "anyOf": [
64
+ {
65
+ "$ref": "#/$defs/FilterRule"
66
+ },
67
+ {
68
+ "type": "array",
69
+ "items": {
70
+ "$ref": "#/$defs/FilterRule"
71
+ },
72
+ "filtersDescription": "OR 组(组内 AND)"
73
+ }
74
+ ]
75
+ },
76
+ "filtersDescription": "数据筛选。扁平 [rule,...]=单组 AND;嵌套 [[rule,...],...]=组间 OR、组内 AND(与 visible_when/root_filter 嵌组形态对齐)。",
77
+ "x-backend": "viewgraphLimitType=1 + viewgraphLimit(List<List<MatchRule>> 单组);公式形态(scope=custom 的 OR 组)列 v1alpha2"
78
+ },
79
+ "sort": {
80
+ "type": "array",
81
+ "items": {
82
+ "$ref": "#/$defs/SortRule"
83
+ },
84
+ "sortDescription": "排序规则(多级);空数组=恢复默认排序。",
85
+ "x-backend": "viewgraphSorts(ViewgraphSortQuestion[])+ sortType=customSort(空→defaultSort)"
86
+ },
87
+ "query_conditions": {
88
+ "$ref": "#/$defs/QueryConditions",
89
+ "queryConditionsDescription": "查询条件(搜索区)配置。",
90
+ "x-backend": "queryCondition + queryConditionStatus/queryConditionExact/hideBeforeQueryCondition/showConditionTitle"
91
+ },
92
+ "action_buttons": {
93
+ "type": "array",
94
+ "items": {
95
+ "$ref": "#/$defs/ActionButton"
96
+ },
97
+ "actionButtonsDescription": "系统按钮配置(add_data/link/qrobot/wings 触发器);visible_when 为按钮级操作权限条件。别名 actionButtons。",
98
+ "x-backend": "buttonConfigDTOList(SYSTEM 分支)"
99
+ },
100
+ "action_buttons_mode": {
101
+ "type": "string",
102
+ "enum": [
103
+ "merge",
104
+ "replace"
105
+ ],
106
+ "default": "merge",
107
+ "actionButtonsModeDescription": "按钮应用模式:merge=与现有合并,replace=全量替换。别名 actionButtonsMode/buttonMode。"
108
+ },
109
+ "buttons": {
110
+ "type": "array",
111
+ "items": {
112
+ "$ref": "#/$defs/ButtonBinding"
113
+ },
114
+ "buttonsDescription": "自定义按钮绑定(引用 app 级自定义按钮并配置位置/样式/权限)。",
115
+ "x-backend": "buttonConfigDTOList(CUSTOM 分支)+ custom_button/mtm 关联"
116
+ },
117
+ "associated_resources": {
118
+ "$ref": "#/$defs/AssociatedResources",
119
+ "associatedResourcesDescription": "关联报表/图表资源。别名 associatedResources/associated_reports/asosChartConfig。",
120
+ "x-backend": "asosChartConfig + asosChartVisible + viewgraph_asos_chart"
121
+ },
122
+ "card": {
123
+ "$ref": "#/$defs/CardConfig",
124
+ "cardDescription": "卡片视图特有配置(card 类型适用)。",
125
+ "x-backend": "titleQue/frontCoverQueId/clippingMode/beingImageAdaption/beingShowQueTitle/beingShowTitleQue/beingShowCover/groupQueId/beingGroupColor"
126
+ },
127
+ "gantt": {
128
+ "$ref": "#/$defs/GanttConfig",
129
+ "ganttDescription": "甘特视图特有配置(gantt 类型适用;start/end_field 与此处的同名字段等价,取其一)。",
130
+ "x-backend": "viewgraphGanttConfigVO(titleQueId/startTimeQueId/endTimeQueId/defaultTimeDimension/ganttGroupVOList/ganttDependencyVO/ganttAutoCalibrationVO)"
131
+ },
132
+ "hierarchy": {
133
+ "$ref": "#/$defs/HierarchyConfig",
134
+ "hierarchyDescription": "层级视图特有配置(hierarchy 类型适用,必填)。",
135
+ "x-backend": "viewgraphHierarchyConfigVO(titleQueId/childrenQueId/rootNodeFilter)"
136
+ },
137
+ "display": {
138
+ "$ref": "#/$defs/DisplayConfig",
139
+ "displayDescription": "展示杂项:行高/固定导航/备注。",
140
+ "x-backend": "defaultRowHigh/beingPinNavigate/remark"
141
+ },
142
+ "record": {
143
+ "$ref": "#/$defs/RecordConfig",
144
+ "recordDescription": "记录可见性开关:操作记录/数据日志/机器人记录/流程未来节点/留言。",
145
+ "x-backend": "beingAuditRecordVisible/beingDataLogVisible/beingQrobotRecordVisible/beingWorkflowNodeFutureListVisible/beingCommentStatus"
146
+ },
147
+ "share": {
148
+ "$ref": "#/$defs/ShareConfig",
149
+ "shareDescription": "分享与安全:密码/强制登录/打印。",
150
+ "x-backend": "beingNeedPass/viewgraphPass/beingForceLogin/beingPrintStatus"
151
+ },
152
+ "partial_update": {
153
+ "type": "boolean",
154
+ "default": false,
155
+ "partialUpdateDescription": "patch 语义开关(编排层;仅声明语义,不编译进后端 payload)。别名 partialUpdate。"
156
+ },
157
+ "preserve_filters": {
158
+ "type": "boolean",
159
+ "default": false,
160
+ "preserveFiltersDescription": "更新时保留现有筛选(编排层)。别名 preserveFilters。"
161
+ },
162
+ "preserve_buttons": {
163
+ "type": "boolean",
164
+ "default": false,
165
+ "preserveButtonsDescription": "更新时保留现有按钮(编排层)。别名 preserveButtons。"
166
+ },
167
+ "preserve_query_conditions": {
168
+ "type": "boolean",
169
+ "default": false,
170
+ "preserveQueryConditionsDescription": "更新时保留现有查询条件(编排层)。别名 preserveQueryConditions。"
171
+ },
172
+ "preserve_associated_resources": {
173
+ "type": "boolean",
174
+ "default": false,
175
+ "preserveAssociatedResourcesDescription": "更新时保留现有关联资源(编排层)。别名 preserveAssociatedResources。"
176
+ },
177
+ "group_que_id": {
178
+ "type": "integer",
179
+ "x-backend": "groupQueId",
180
+ "groupQueIdDescription": "看板分组字段 queId(board 必填)。"
181
+ },
182
+ "start_que_id": {
183
+ "type": "integer",
184
+ "x-backend": "viewgraphGanttConfigVO.startTimeQueId",
185
+ "startQueIdDescription": "甘特开始时间字段 queId(gantt 必填)。"
186
+ },
187
+ "end_que_id": {
188
+ "type": "integer",
189
+ "x-backend": "viewgraphGanttConfigVO.endTimeQueId",
190
+ "endQueIdDescription": "甘特结束时间字段 queId(gantt 必填)。"
191
+ },
192
+ "title_que_id": {
193
+ "type": "integer",
194
+ "x-backend": "titleQue",
195
+ "titleQueIdDescription": "卡片/看板/甘特/层级标题字段 queId(可选)。"
196
+ }
197
+ },
198
+ "allOf": [
199
+ {
200
+ "if": {
201
+ "properties": {
202
+ "type": {
203
+ "const": "table"
204
+ }
205
+ },
206
+ "required": [
207
+ "type"
208
+ ]
209
+ },
210
+ "then": {
211
+ "required": [
212
+ "columns"
213
+ ],
214
+ "properties": {
215
+ "columns": {
216
+ "minItems": 1
217
+ }
218
+ }
219
+ }
220
+ },
221
+ {
222
+ "if": {
223
+ "properties": {
224
+ "type": {
225
+ "const": "card"
226
+ }
227
+ },
228
+ "required": [
229
+ "type"
230
+ ]
231
+ },
232
+ "then": {
233
+ "required": [
234
+ "columns"
235
+ ],
236
+ "properties": {
237
+ "columns": {
238
+ "minItems": 1
239
+ }
240
+ }
241
+ }
242
+ },
243
+ {
244
+ "if": {
245
+ "properties": {
246
+ "type": {
247
+ "const": "board"
248
+ }
249
+ },
250
+ "required": [
251
+ "type"
252
+ ]
253
+ },
254
+ "then": {
255
+ "required": [
256
+ "group_que_id"
257
+ ]
258
+ }
259
+ },
260
+ {
261
+ "if": {
262
+ "properties": {
263
+ "type": {
264
+ "const": "gantt"
265
+ }
266
+ },
267
+ "required": [
268
+ "type"
269
+ ]
270
+ },
271
+ "then": {
272
+ "required": [
273
+ "start_que_id",
274
+ "end_que_id"
275
+ ]
276
+ }
277
+ },
278
+ {
279
+ "if": {
280
+ "properties": {
281
+ "type": {
282
+ "const": "hierarchy"
283
+ }
284
+ },
285
+ "required": [
286
+ "type"
287
+ ]
288
+ },
289
+ "then": {
290
+ "required": [
291
+ "hierarchy"
292
+ ]
293
+ }
294
+ }
295
+ ]
296
+ },
297
+ "DataPermission": {
298
+ "type": "object",
299
+ "additionalProperties": false,
300
+ "properties": {
301
+ "type": {
302
+ "type": "string",
303
+ "enum": [
304
+ "config",
305
+ "custom"
306
+ ],
307
+ "default": "custom",
308
+ "dataPermissionDescription": "数据权限生效类型:config=跟随应用配置,custom=视图自定义。别名 dataPermissionType(CONFIG/CUSTOM)。",
309
+ "x-backend": "dataPermissionType(CONFIG|CUSTOM)"
310
+ },
311
+ "scope": {
312
+ "type": "string",
313
+ "enum": [
314
+ "all",
315
+ "oneself",
316
+ "dept",
317
+ "subordinate",
318
+ "custom"
319
+ ],
320
+ "default": "all",
321
+ "dataScopeDescription": "数据范围:all=全部数据,oneself=自己发起的,dept=所在部门的,subordinate=下属的,custom=自定义(规则见 filters)。",
322
+ "x-backend": "dataScope(ALL|ONESELF|DEPT|SUBORDINATE|CUSTOM)"
323
+ }
324
+ }
325
+ },
326
+ "Visibility": {
327
+ "type": "object",
328
+ "additionalProperties": false,
329
+ "properties": {
330
+ "mode": {
331
+ "type": "string",
332
+ "enum": [
333
+ "workspace",
334
+ "everyone",
335
+ "specific"
336
+ ],
337
+ "modeDescription": "对内可见:workspace=工作区可见,everyone=互联网公开(要求 external_mode=workspace),specific=指定成员/部门/角色。",
338
+ "x-backend": "viewgraph.viewgraphAuth(1/2/3)"
339
+ },
340
+ "selectors": {
341
+ "$ref": "#/$defs/VisibilitySelectors"
342
+ },
343
+ "external_mode": {
344
+ "type": "string",
345
+ "enum": [
346
+ "not",
347
+ "workspace",
348
+ "specific"
349
+ ],
350
+ "externalModeDescription": "外部成员授权:not=不开放,workspace=共享工作区全部外部联系人,specific=指定外部成员。别名 externalMode。",
351
+ "x-backend": "viewgraph.externalAuth(NOT|WORKSPACE_ALL|SPECIFIC)"
352
+ },
353
+ "external_selectors": {
354
+ "$ref": "#/$defs/ExternalSelectors"
355
+ }
356
+ }
357
+ },
358
+ "VisibilitySelectors": {
359
+ "type": "object",
360
+ "additionalProperties": false,
361
+ "properties": {
362
+ "member_uids": {
363
+ "type": "array",
364
+ "items": {
365
+ "type": "integer"
366
+ },
367
+ "x-backend": "viewgraph_member(uid)",
368
+ "memberUidsDescription": "成员 uid 列表。别名 memberUids。"
369
+ },
370
+ "member_emails": {
371
+ "type": "array",
372
+ "items": {
373
+ "type": "string"
374
+ },
375
+ "x-backend": "viewgraph_member(uid 经邮箱解析)",
376
+ "memberEmailsDescription": "成员邮箱列表。别名 memberEmails。"
377
+ },
378
+ "member_names": {
379
+ "type": "array",
380
+ "items": {
381
+ "type": "string"
382
+ },
383
+ "x-backend": "viewgraph_member(uid 经姓名解析)",
384
+ "memberNamesDescription": "成员姓名列表(需唯一匹配)。别名 memberNames。"
385
+ },
386
+ "dept_ids": {
387
+ "type": "array",
388
+ "items": {
389
+ "type": "integer"
390
+ },
391
+ "x-backend": "viewgraph_member(dept_id)",
392
+ "deptIdsDescription": "部门 id 列表。别名 deptIds。"
393
+ },
394
+ "dept_names": {
395
+ "type": "array",
396
+ "items": {
397
+ "type": "string"
398
+ },
399
+ "x-backend": "viewgraph_member(dept_id 经部门名解析)",
400
+ "deptNamesDescription": "部门名称列表(需唯一匹配)。别名 deptNames。"
401
+ },
402
+ "role_ids": {
403
+ "type": "array",
404
+ "items": {
405
+ "type": "integer"
406
+ },
407
+ "x-backend": "viewgraph_member(role_id)",
408
+ "roleIdsDescription": "角色 id 列表。别名 roleIds。"
409
+ },
410
+ "role_names": {
411
+ "type": "array",
412
+ "items": {
413
+ "type": "string"
414
+ },
415
+ "x-backend": "viewgraph_member(role_id 经角色名解析)",
416
+ "roleNamesDescription": "角色名称列表(需唯一匹配)。别名 roleNames。"
417
+ },
418
+ "include_sub_departs": {
419
+ "type": "boolean",
420
+ "includeSubDepartsDescription": "部门选择是否含下级部门。别名 includeSubDeparts。",
421
+ "x-backend": "viewgraph_member(havingSubDept)"
422
+ }
423
+ }
424
+ },
425
+ "ExternalSelectors": {
426
+ "type": "object",
427
+ "additionalProperties": false,
428
+ "properties": {
429
+ "member_ids": {
430
+ "type": "array",
431
+ "items": {
432
+ "type": "integer"
433
+ },
434
+ "x-backend": "external_member_auth",
435
+ "memberIdsDescription": "外部成员 id 列表。别名 memberIds。"
436
+ },
437
+ "member_emails": {
438
+ "type": "array",
439
+ "items": {
440
+ "type": "string"
441
+ },
442
+ "x-backend": "external_member_auth(经邮箱解析)",
443
+ "memberEmailsDescription": "外部成员邮箱列表。"
444
+ },
445
+ "dept_ids": {
446
+ "type": "array",
447
+ "items": {
448
+ "type": "integer"
449
+ },
450
+ "x-backend": "external_member_auth(dept)",
451
+ "deptIdsDescription": "外部部门 id 列表。别名 deptIds。"
452
+ }
453
+ }
454
+ },
455
+ "FilterRule": {
456
+ "type": "object",
457
+ "additionalProperties": false,
458
+ "required": [
459
+ "que_id"
460
+ ],
461
+ "properties": {
462
+ "operator": {
463
+ "type": "string",
464
+ "enum": [
465
+ "eq",
466
+ "neq",
467
+ "in",
468
+ "contains",
469
+ "gte",
470
+ "lte",
471
+ "is_empty",
472
+ "not_empty"
473
+ ],
474
+ "default": "eq",
475
+ "operatorDescription": "比较符(组内 AND)。别名 op。"
476
+ },
477
+ "values": {
478
+ "type": "array",
479
+ "items": true,
480
+ "default": [],
481
+ "valuesDescription": "比较值;is_empty/not_empty 时忽略。"
482
+ },
483
+ "que_id": {
484
+ "type": "integer",
485
+ "x-backend": "MatchRule.queId",
486
+ "queIdDescription": "字段 queId。别名 fieldName/field/name。"
487
+ }
488
+ }
489
+ },
490
+ "SortRule": {
491
+ "type": "object",
492
+ "additionalProperties": false,
493
+ "required": [
494
+ "que_id"
495
+ ],
496
+ "properties": {
497
+ "ascending": {
498
+ "type": "boolean",
499
+ "default": true,
500
+ "x-backend": "beingSortAscend"
501
+ },
502
+ "que_id": {
503
+ "type": "integer",
504
+ "x-backend": "ViewgraphSortQuestion.queId"
505
+ }
506
+ }
507
+ },
508
+ "QueryConditions": {
509
+ "type": "object",
510
+ "additionalProperties": false,
511
+ "properties": {
512
+ "enabled": {
513
+ "type": "boolean",
514
+ "default": true,
515
+ "x-backend": "queryConditionStatus"
516
+ },
517
+ "exact": {
518
+ "type": "boolean",
519
+ "default": false,
520
+ "x-backend": "queryConditionExact"
521
+ },
522
+ "hide_before_query": {
523
+ "type": "boolean",
524
+ "default": false,
525
+ "x-backend": "hideBeforeQueryCondition",
526
+ "hideBeforeQueryDescription": "别名 hideBeforeQuery/hideBeforeQueryCondition。"
527
+ },
528
+ "rows": {
529
+ "type": "array",
530
+ "items": {
531
+ "type": "array",
532
+ "items": {
533
+ "anyOf": [
534
+ { "type": "integer" },
535
+ { "type": "string", "minLength": 1 }
536
+ ]
537
+ }
538
+ },
539
+ "rowsDescription": "查询条件字段行(row×column 布局);元素可用字段名、field_id 或 queId,推荐使用 queId。别名 fields/queryCondition。",
540
+ "x-backend": "viewgraph_query_condition(rowOrdinal/columnOrdinal/queId)"
541
+ }
542
+ }
543
+ },
544
+ "ActionButton": {
545
+ "type": "object",
546
+ "additionalProperties": false,
547
+ "required": [
548
+ "text",
549
+ "action"
550
+ ],
551
+ "properties": {
552
+ "button_id": {
553
+ "type": "integer",
554
+ "buttonIdDescription": "系统按钮 id(先 app_views_get 回读现有声明以精确定位;新建省略)。别名 buttonId/id。",
555
+ "x-backend": "button_config.id(SEARCH_BUTTON_ID=6 等系统位)"
556
+ },
557
+ "client_key": {
558
+ "type": "string",
559
+ "clientKeyDescription": "按钮 client key。别名 clientKey。",
560
+ "x-backend": "clientKey"
561
+ },
562
+ "text": {
563
+ "type": "string",
564
+ "minLength": 1,
565
+ "x-backend": "buttonText",
566
+ "textDescription": "按钮文案。别名 button_text/buttonText/name。"
567
+ },
568
+ "action": {
569
+ "type": "string",
570
+ "enum": [
571
+ "add_data",
572
+ "link",
573
+ "qRobot",
574
+ "wings"
575
+ ],
576
+ "x-backend": "triggerAction(addData/link/qRobot/wings)",
577
+ "actionDescription": "触发动作。别名 trigger_action/triggerAction。"
578
+ },
579
+ "url": {
580
+ "type": "string",
581
+ "urlDescription": "link 动作的跳转 URL。别名 link_url/linkUrl/trigger_link_url。"
582
+ },
583
+ "target_app_key": {
584
+ "type": "string",
585
+ "targetAppKeyDescription": "add_data 动作的目标应用。别名 targetAppKey/related_app_key。",
586
+ "x-backend": "relationAppKey"
587
+ },
588
+ "target_app_name": {
589
+ "type": "string",
590
+ "targetAppNameDescription": "add_data 动作的目标应用名。别名 targetAppName/related_app_name。"
591
+ },
592
+ "field_mappings": {
593
+ "type": "array",
594
+ "items": true,
595
+ "fieldMappingsDescription": "add_data 字段映射。别名 fieldMappings/mappings。",
596
+ "x-backend": "que_relations"
597
+ },
598
+ "default_values": {
599
+ "type": "object",
600
+ "additionalProperties": true,
601
+ "defaultValuesDescription": "add_data 静态默认值。别名 defaultValues/defaults。"
602
+ },
603
+ "placement": {
604
+ "type": "string",
605
+ "enum": [
606
+ "header",
607
+ "detail",
608
+ "list"
609
+ ],
610
+ "default": "detail",
611
+ "x-backend": "viewgraph_button_config.configType(TOP|DETAIL|INSIDE)",
612
+ "placementDescription": "按钮位置。别名 position/config_type。"
613
+ },
614
+ "primary": {
615
+ "type": "boolean",
616
+ "default": false,
617
+ "primaryDescription": "是否主按钮。别名 being_main/beingMain。",
618
+ "x-backend": "beingMain"
619
+ },
620
+ "visible_when": {
621
+ "type": "array",
622
+ "items": {
623
+ "type": "array",
624
+ "items": {
625
+ "$ref": "#/$defs/FilterRule"
626
+ }
627
+ },
628
+ "visibleWhenDescription": "按钮可见的记录级权限条件(组内 AND、组间 OR)。别名 visibleWhen/button_limit/buttonLimit。",
629
+ "x-backend": "buttonLimit(List<List<MatchRule>>)"
630
+ },
631
+ "button_formula": {
632
+ "type": "string",
633
+ "x-backend": "buttonFormula",
634
+ "buttonFormulaDescription": "按钮公式。别名 buttonFormula。"
635
+ },
636
+ "button_formula_type": {
637
+ "type": "integer",
638
+ "default": 1,
639
+ "x-backend": "buttonFormulaType",
640
+ "buttonFormulaTypeDescription": "按钮公式类型。别名 buttonFormulaType。"
641
+ },
642
+ "print_tpls": {
643
+ "type": "array",
644
+ "items": true,
645
+ "x-backend": "printTpls",
646
+ "printTplsDescription": "打印模板引用。别名 printTpls。"
647
+ },
648
+ "style_preset": {
649
+ "type": "string",
650
+ "x-backend": "样式预设",
651
+ "stylePresetDescription": "样式预设名。别名 stylePreset。"
652
+ },
653
+ "background_color": {
654
+ "type": "string",
655
+ "x-backend": "backgroundColor(transparent 等)",
656
+ "backgroundColorDescription": "背景色。别名 backgroundColor。"
657
+ },
658
+ "text_color": {
659
+ "type": "string",
660
+ "x-backend": "textColor(#494F57 等)",
661
+ "textColorDescription": "文字色。别名 textColor。"
662
+ },
663
+ "button_icon": {
664
+ "type": "string",
665
+ "x-backend": "buttonIcon(ex-search 等)",
666
+ "buttonIconDescription": "图标名。别名 buttonIcon。"
667
+ },
668
+ "external_qrobot_config": {
669
+ "type": "object",
670
+ "additionalProperties": true,
671
+ "externalQrobotConfigDescription": "qRobot 触发配置(qRobot 动作必填)。别名 externalQrobotConfig。",
672
+ "x-backend": "custom_button_external_qrobot_relation_vo"
673
+ },
674
+ "trigger_wings_config": {
675
+ "type": "object",
676
+ "additionalProperties": true,
677
+ "triggerWingsConfigDescription": "wings 触发配置(wings 动作必填)。别名 triggerWingsConfig。",
678
+ "x-backend": "trigger_wings_config"
679
+ }
680
+ }
681
+ },
682
+ "ButtonBinding": {
683
+ "type": "object",
684
+ "additionalProperties": false,
685
+ "required": [
686
+ "button_type",
687
+ "config_type",
688
+ "button_id"
689
+ ],
690
+ "properties": {
691
+ "button_type": {
692
+ "type": "string",
693
+ "enum": [
694
+ "SYSTEM",
695
+ "CUSTOM"
696
+ ],
697
+ "buttonTypeDescription": "按钮类型。别名 buttonType(system/custom 归一)。",
698
+ "x-backend": "button_config.buttonType"
699
+ },
700
+ "config_type": {
701
+ "type": "string",
702
+ "enum": [
703
+ "TOP",
704
+ "DETAIL",
705
+ "INSIDE"
706
+ ],
707
+ "configTypeDescription": "按钮位置。别名 configType(top/header→TOP、detail→DETAIL、inside/list/row→INSIDE)。",
708
+ "x-backend": "configType"
709
+ },
710
+ "button_id": {
711
+ "type": "integer",
712
+ "buttonIdDescription": "按钮 id。别名 buttonId/id。",
713
+ "x-backend": "button_config.id / custom_button_id"
714
+ },
715
+ "button_text": {
716
+ "type": "string",
717
+ "x-backend": "buttonText",
718
+ "buttonTextDescription": "按钮文案。别名 buttonText。"
719
+ },
720
+ "button_icon": {
721
+ "type": "string",
722
+ "x-backend": "buttonIcon",
723
+ "buttonIconDescription": "图标名。别名 buttonIcon。"
724
+ },
725
+ "style_preset": {
726
+ "type": "string",
727
+ "stylePresetDescription": "样式预设名。别名 stylePreset。"
728
+ },
729
+ "background_color": {
730
+ "type": "string",
731
+ "x-backend": "backgroundColor",
732
+ "backgroundColorDescription": "背景色。别名 backgroundColor。"
733
+ },
734
+ "text_color": {
735
+ "type": "string",
736
+ "x-backend": "textColor",
737
+ "textColorDescription": "文字色。别名 textColor。"
738
+ },
739
+ "trigger_action": {
740
+ "type": "string",
741
+ "triggerActionDescription": "触发动作(维护既有绑定)。别名 triggerAction。",
742
+ "x-backend": "triggerAction"
743
+ },
744
+ "print_tpls": {
745
+ "type": "array",
746
+ "items": true,
747
+ "printTplsDescription": "打印模板引用。别名 printTpls。"
748
+ },
749
+ "being_main": {
750
+ "type": "boolean",
751
+ "default": false,
752
+ "beingMainDescription": "是否主按钮。别名 beingMain。",
753
+ "x-backend": "beingMain"
754
+ },
755
+ "button_limit": {
756
+ "type": "array",
757
+ "items": {
758
+ "type": "array",
759
+ "items": {
760
+ "$ref": "#/$defs/FilterRule"
761
+ }
762
+ },
763
+ "buttonLimitDescription": "按钮可见权限条件。别名 buttonLimit。",
764
+ "x-backend": "buttonLimit"
765
+ },
766
+ "button_formula": {
767
+ "type": "string",
768
+ "buttonFormulaDescription": "按钮公式。别名 buttonFormula。",
769
+ "x-backend": "buttonFormula"
770
+ },
771
+ "button_formula_type": {
772
+ "type": "integer",
773
+ "default": 1,
774
+ "buttonFormulaTypeDescription": "按钮公式类型。别名 buttonFormulaType。",
775
+ "x-backend": "buttonFormulaType"
776
+ }
777
+ }
778
+ },
779
+ "AssociatedResources": {
780
+ "type": "object",
781
+ "additionalProperties": false,
782
+ "properties": {
783
+ "visible": {
784
+ "type": "boolean",
785
+ "default": true,
786
+ "x-backend": "asosChartVisible",
787
+ "visibleDescription": "关联资源是否可见。别名 enabled/asosChartVisible。"
788
+ },
789
+ "limit_type": {
790
+ "type": "string",
791
+ "enum": [
792
+ "all",
793
+ "select"
794
+ ],
795
+ "x-backend": "asosChartConfig.limitType",
796
+ "limitTypeDescription": "all=全部关联,select=指定。别名 limitType。"
797
+ },
798
+ "associated_item_ids": {
799
+ "type": "array",
800
+ "items": true,
801
+ "x-backend": "asosChartIdList → viewgraph_asos_chart",
802
+ "associatedItemIdsDescription": "指定关联资源 id。别名 associatedItemIds/asosChartIdList/items。"
803
+ }
804
+ }
805
+ },
806
+ "CardConfig": {
807
+ "type": "object",
808
+ "additionalProperties": false,
809
+ "properties": {
810
+ "clipping_mode": {
811
+ "type": "string",
812
+ "enum": [
813
+ "default",
814
+ "fill"
815
+ ],
816
+ "x-backend": "clippingMode(default 实测)"
817
+ },
818
+ "image_adaption": {
819
+ "type": "boolean",
820
+ "default": false,
821
+ "x-backend": "beingImageAdaption"
822
+ },
823
+ "show_field_title": {
824
+ "type": "boolean",
825
+ "default": true,
826
+ "x-backend": "beingShowQueTitle"
827
+ },
828
+ "show_title": {
829
+ "type": "boolean",
830
+ "default": true,
831
+ "x-backend": "beingShowTitleQue"
832
+ },
833
+ "show_cover": {
834
+ "type": "boolean",
835
+ "default": false,
836
+ "x-backend": "beingShowCover"
837
+ },
838
+ "group_color": {
839
+ "type": "boolean",
840
+ "default": false,
841
+ "x-backend": "beingGroupColor"
842
+ },
843
+ "group_que_id": {
844
+ "type": "integer",
845
+ "groupQueIdDescription": "看板式分组字段(card 类型适用)。",
846
+ "x-backend": "groupQueId"
847
+ },
848
+ "title_que_id": {
849
+ "type": "integer",
850
+ "titleQueIdDescription": "卡片标题字段 queId。",
851
+ "x-backend": "titleQueId"
852
+ },
853
+ "cover_que_id": {
854
+ "type": "integer",
855
+ "coverQueIdDescription": "封面图字段(attachment 字段)。",
856
+ "x-backend": "frontCoverQueId"
857
+ }
858
+ }
859
+ },
860
+ "GanttConfig": {
861
+ "type": "object",
862
+ "additionalProperties": false,
863
+ "properties": {
864
+ "default_time_dimension": {
865
+ "type": "string",
866
+ "enum": [
867
+ "day",
868
+ "week",
869
+ "month",
870
+ "year"
871
+ ],
872
+ "default": "month",
873
+ "x-backend": "defaultTimeDimension(month×8/week×4 实测)"
874
+ },
875
+ "auto_calibration": {
876
+ "type": "boolean",
877
+ "default": false,
878
+ "autoCalibrationDescription": "自动校准开关。",
879
+ "x-backend": "ganttAutoCalibrationVO.beingAutoCalibration"
880
+ },
881
+ "groups": {
882
+ "type": "array",
883
+ "items": {
884
+ "type": "object",
885
+ "additionalProperties": false,
886
+ "properties": {
887
+ "ordinal": {
888
+ "type": "integer"
889
+ },
890
+ "que_id": {
891
+ "type": "integer",
892
+ "minLength": 1
893
+ }
894
+ }
895
+ },
896
+ "x-backend": "ganttGroupVOList(groupQueId, ordinal)"
897
+ },
898
+ "dependencies": {
899
+ "type": "array",
900
+ "maxItems": 1,
901
+ "items": {
902
+ "$ref": "#/$defs/GanttDependency"
903
+ },
904
+ "x-backend": "ganttDependencyVO(后端单对象,v1alpha1 限 1 条)"
905
+ },
906
+ "start_que_id": {
907
+ "type": "integer",
908
+ "x-backend": "startTimeQueId"
909
+ },
910
+ "end_que_id": {
911
+ "type": "integer",
912
+ "x-backend": "endTimeQueId"
913
+ },
914
+ "title_que_id": {
915
+ "type": "integer",
916
+ "x-backend": "titleQueId"
917
+ }
918
+ }
919
+ },
920
+ "GanttDependency": {
921
+ "type": "object",
922
+ "additionalProperties": false,
923
+ "required": [
924
+ "predecessor_que_id",
925
+ "dependency_que_id"
926
+ ],
927
+ "properties": {
928
+ "start_start_option_id": {
929
+ "type": "integer",
930
+ "x-backend": "startStartOptionId"
931
+ },
932
+ "start_end_option_id": {
933
+ "type": "integer",
934
+ "x-backend": "startEndOptionId"
935
+ },
936
+ "end_start_option_id": {
937
+ "type": "integer",
938
+ "x-backend": "endStartOptionId"
939
+ },
940
+ "end_end_option_id": {
941
+ "type": "integer",
942
+ "x-backend": "endEndOptionId"
943
+ },
944
+ "dependency_que_id": {
945
+ "type": "integer",
946
+ "minLength": 1,
947
+ "x-backend": "dependencyQueId"
948
+ },
949
+ "predecessor_que_id": {
950
+ "type": "integer",
951
+ "minLength": 1,
952
+ "x-backend": "predecessorTaskQueId"
953
+ }
954
+ }
955
+ },
956
+ "HierarchyConfig": {
957
+ "type": "object",
958
+ "additionalProperties": false,
959
+ "required": [
960
+ "title_que_id",
961
+ "children_que_id"
962
+ ],
963
+ "properties": {
964
+ "root_filter": {
965
+ "type": "array",
966
+ "items": {
967
+ "type": "array",
968
+ "items": {
969
+ "$ref": "#/$defs/FilterRule"
970
+ }
971
+ },
972
+ "rootFilterDescription": "根节点筛选规则(组内 AND、组间 OR;编译为 MatchRule 组)。",
973
+ "x-backend": "rootNodeFilter(List<List<MatchRule>>)"
974
+ },
975
+ "title_que_id": {
976
+ "type": "integer",
977
+ "x-backend": "viewgraph_hierarchy_config.titleQueId"
978
+ },
979
+ "children_que_id": {
980
+ "type": "integer",
981
+ "x-backend": "childrenQueId"
982
+ }
983
+ }
984
+ },
985
+ "DisplayConfig": {
986
+ "type": "object",
987
+ "additionalProperties": false,
988
+ "properties": {
989
+ "row_height": {
990
+ "type": "string",
991
+ "enum": [
992
+ "compact",
993
+ "moderate",
994
+ "highest",
995
+ "high"
996
+ ],
997
+ "x-backend": "defaultRowHigh(compact×705 实测)"
998
+ },
999
+ "pin_navigate": {
1000
+ "type": "boolean",
1001
+ "default": false,
1002
+ "x-backend": "beingPinNavigate"
1003
+ },
1004
+ "remark": {
1005
+ "type": "string",
1006
+ "x-backend": "remark"
1007
+ }
1008
+ }
1009
+ },
1010
+ "RecordConfig": {
1011
+ "type": "object",
1012
+ "additionalProperties": false,
1013
+ "properties": {
1014
+ "audit_visible": {
1015
+ "type": "boolean",
1016
+ "default": true,
1017
+ "x-backend": "beingAuditRecordVisible"
1018
+ },
1019
+ "data_log_visible": {
1020
+ "type": "boolean",
1021
+ "default": true,
1022
+ "x-backend": "beingDataLogVisible"
1023
+ },
1024
+ "qrobot_record_visible": {
1025
+ "type": "boolean",
1026
+ "default": false,
1027
+ "x-backend": "beingQrobotRecordVisible"
1028
+ },
1029
+ "workflow_future_visible": {
1030
+ "type": "boolean",
1031
+ "default": true,
1032
+ "x-backend": "beingWorkflowNodeFutureListVisible"
1033
+ },
1034
+ "comment": {
1035
+ "type": "boolean",
1036
+ "default": false,
1037
+ "x-backend": "beingCommentStatus"
1038
+ }
1039
+ }
1040
+ },
1041
+ "ShareConfig": {
1042
+ "type": "object",
1043
+ "additionalProperties": false,
1044
+ "properties": {
1045
+ "need_pass": {
1046
+ "type": "boolean",
1047
+ "default": false,
1048
+ "x-backend": "beingNeedPass"
1049
+ },
1050
+ "password": {
1051
+ "type": "string",
1052
+ "passwordDescription": "访问密码(need_pass=true 时生效)。别名 pass/viewgraphPass。",
1053
+ "x-backend": "viewgraphPass"
1054
+ },
1055
+ "force_login": {
1056
+ "type": "boolean",
1057
+ "default": false,
1058
+ "x-backend": "beingForceLogin"
1059
+ },
1060
+ "print_enabled": {
1061
+ "type": "boolean",
1062
+ "default": false,
1063
+ "printEnabledDescription": "打印开关(模板明细 v1alpha2)。",
1064
+ "x-backend": "beingPrintStatus"
1065
+ }
1066
+ }
1067
+ }
1068
+ },
1069
+ "$ref": "#/$defs/ViewDeclaration",
1070
+ "x-qingflow-config-sections": [
1071
+ {
1072
+ "kind": "display",
1073
+ "displayDescription": "展示字段、排序、关联资源和各公开视图类型的专属配置。",
1074
+ "fields": ["columns", "sort", "card", "gantt", "hierarchy", "associated_resources", "display", "group_que_id", "title_que_id", "start_que_id", "end_que_id"]
1075
+ },
1076
+ {
1077
+ "kind": "data-permission",
1078
+ "dataPermissionDescription": "后台或自定义数据权限模式以及固定筛选。",
1079
+ "fields": ["data_permission", "filters"]
1080
+ },
1081
+ {
1082
+ "kind": "operation-permission",
1083
+ "operationPermissionDescription": "成员可见范围、记录日志、留言、打印和分享开关。",
1084
+ "fields": ["visibility", "record", "share"]
1085
+ },
1086
+ {
1087
+ "kind": "query-condition",
1088
+ "queryConditionDescription": "用户查询面板开关、匹配模式、查询前隐藏和行列布局。",
1089
+ "fields": ["query_conditions"]
1090
+ },
1091
+ {
1092
+ "kind": "button-config",
1093
+ "buttonConfigDescription": "系统动作按钮、自定义按钮绑定以及关联的查询面板。",
1094
+ "fields": ["action_buttons", "action_buttons_mode", "buttons", "query_conditions"]
1095
+ }
1096
+ ],
1097
+ "x-qingflow-related-schemas": {
1098
+ "currentKind": "complete",
1099
+ "fetchTool": "app_views_schema",
1100
+ "fetchArgument": "schema_kind",
1101
+ "fetchCli": "builder views schema --schema-kind KIND",
1102
+ "kinds": {
1103
+ "summary": "最小创建声明:类型/名称/展示字段 + 数据权限形状。",
1104
+ "complete": "完整声明:全部公开可写字段,含各配置域与类型专属配置。",
1105
+ "display": "展示字段、排序、卡片/甘特/层级配置、分组字段和关联资源。",
1106
+ "data-permission": "数据权限模式、数据范围和固定筛选条件。",
1107
+ "operation-permission": "成员可见范围、记录日志、留言、打印和分享策略。",
1108
+ "query-condition": "用户查询面板的开关、匹配模式和字段布局。",
1109
+ "button-config": "系统动作按钮、自定义按钮绑定及按钮清空/合并方式。"
1110
+ },
1111
+ "navigationDescription": "本声明是完整版;最小创建声明用 schema_kind=summary 获取。某个配置域需要专项语义(清空/替换规则、字段约束)时,用 app_views_schema 换对应 schema_kind 读取,专项返回自包含可直接校验。",
1112
+ "readSources": {
1113
+ "queIds": "字段 queId 用 app_get 读 fields(CLI: builder app get --app-key APP fields);现有视图声明用 app_views_get 回读(CLI: builder views get --app-key APP --schema-kind summary|complete)。",
1114
+ "fieldSchema": "字段类型、默认值等表单侧细节用 app_form_schema 传 schema_kind=field 和 field_type 获取(CLI: builder app-form schema --schema-kind field --field-type TYPE)。"
1115
+ }
1116
+ },
1117
+ "x-qingflow-write-semantics": {
1118
+ "create": "省略的配置片段由 builder 组装创建默认值;JSON Schema 的 default 只是注解。",
1119
+ "full_upsert": "提交完整目标配置;数组和嵌套对象的清空或替换规则按配置域调用 app_views_schema 获取专项 Schema(schema_kind=display/data-permission/operation-permission/query-condition/button-config;CLI: builder views schema --schema-kind KIND)。",
1120
+ "partial_patch": "优先使用 patch_views 的 set/unset。builder 会读取现有配置、合并后再向后端完整保存。",
1121
+ "backend_warning": "底层 ViewgraphInfo 更新接口对部分省略字段会执行 false、true、空数组或空字符串初始化,因此不得把直接后端请求中的省略统一理解为保留。"
1122
+ },
1123
+ "x-qingflow-backend-known-unsupported": {
1124
+ "calendar": {
1125
+ "backend": "viewgraphType=calendarView + viewgraphCalendarConfigVO",
1126
+ "status": "not-writable",
1127
+ "reason": "当前 app_views_apply 编译器没有 calendar 分支。"
1128
+ },
1129
+ "column_permissions": {
1130
+ "backend": "viewgraphQuestions/ViewgraphQuestion",
1131
+ "status": "not-writable",
1132
+ "reason": "当前 columns 只表达展示字段及顺序。"
1133
+ },
1134
+ "advanced_filter_formula": {
1135
+ "backend": "viewgraphLimitType=2 + viewgraphLimitFormula",
1136
+ "status": "not-writable",
1137
+ "reason": "当前 filters 只编译简易 MatchRule。"
1138
+ },
1139
+ "print_templates": {
1140
+ "backend": "beingDefaultPrintTplStatus + printTpls",
1141
+ "status": "not-writable",
1142
+ "reason": "当前 share 只公开 print_enabled。"
1143
+ },
1144
+ "attachment_policy": {
1145
+ "backend": "attachVisibleOnlyConfig",
1146
+ "status": "read-only",
1147
+ "reason": "该配置从工作区继承,视图保存接口不修改。"
1148
+ }
1149
+ },
1150
+ "examples": [
1151
+ {
1152
+ "name": "业务记录",
1153
+ "type": "table",
1154
+ "columns": [101, 102],
1155
+ "visibility": {
1156
+ "mode": "workspace",
1157
+ "external_mode": "not"
1158
+ },
1159
+ "data_permission": {
1160
+ "type": "custom",
1161
+ "scope": "all"
1162
+ },
1163
+ "sort": [
1164
+ {
1165
+ "que_id": 101,
1166
+ "ascending": true
1167
+ }
1168
+ ]
1169
+ },
1170
+ {
1171
+ "name": "待处理记录",
1172
+ "type": "table",
1173
+ "columns": [101, 102],
1174
+ "data_permission": {
1175
+ "type": "custom",
1176
+ "scope": "custom"
1177
+ },
1178
+ "filters": [
1179
+ {
1180
+ "que_id": 103,
1181
+ "operator": "eq",
1182
+ "values": ["待处理"]
1183
+ }
1184
+ ],
1185
+ "query_conditions": {
1186
+ "enabled": true,
1187
+ "exact": false,
1188
+ "hide_before_query": true,
1189
+ "rows": [[101, 103]]
1190
+ }
1191
+ }
1192
+ ]
1193
+ }