@qingflow-tech/qingflow-cli 1.1.50-beta.5 → 1.1.51

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