weaver-e10-builder 1.6.10 → 1.6.12

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 (289) hide show
  1. package/dist/commands/form-browser-definition.d.ts.map +1 -1
  2. package/dist/commands/form-browser-definition.js +108 -7
  3. package/dist/commands/form-browser-definition.js.map +1 -1
  4. package/dist/commands/form-browser-scope-rules.d.ts +27 -0
  5. package/dist/commands/form-browser-scope-rules.d.ts.map +1 -0
  6. package/dist/commands/form-browser-scope-rules.js +141 -0
  7. package/dist/commands/form-browser-scope-rules.js.map +1 -0
  8. package/dist/commands/form-browser-scope-tree.d.ts +14 -0
  9. package/dist/commands/form-browser-scope-tree.d.ts.map +1 -0
  10. package/dist/commands/form-browser-scope-tree.js +115 -0
  11. package/dist/commands/form-browser-scope-tree.js.map +1 -0
  12. package/dist/commands/matrix-maintainer.d.ts +3 -0
  13. package/dist/commands/matrix-maintainer.d.ts.map +1 -0
  14. package/dist/commands/matrix-maintainer.js +117 -0
  15. package/dist/commands/matrix-maintainer.js.map +1 -0
  16. package/dist/commands/matrix.d.ts.map +1 -1
  17. package/dist/commands/matrix.js +2 -0
  18. package/dist/commands/matrix.js.map +1 -1
  19. package/dist/commands/report-admin.d.ts.map +1 -1
  20. package/dist/commands/report-admin.js +378 -2
  21. package/dist/commands/report-admin.js.map +1 -1
  22. package/dist/commands/report-validate.d.ts.map +1 -1
  23. package/dist/commands/report-validate.js +1102 -3
  24. package/dist/commands/report-validate.js.map +1 -1
  25. package/dist/commands/report.d.ts.map +1 -1
  26. package/dist/commands/report.js +341 -3
  27. package/dist/commands/report.js.map +1 -1
  28. package/dist/commands/role.d.ts.map +1 -1
  29. package/dist/commands/role.js +354 -0
  30. package/dist/commands/role.js.map +1 -1
  31. package/dist/commands/special.d.ts.map +1 -1
  32. package/dist/commands/special.js +67 -31
  33. package/dist/commands/special.js.map +1 -1
  34. package/dist/commands/wf-form.d.ts.map +1 -1
  35. package/dist/commands/wf-form.js +1 -121
  36. package/dist/commands/wf-form.js.map +1 -1
  37. package/dist/commands/workflow-after-submit-comment.d.ts +3 -0
  38. package/dist/commands/workflow-after-submit-comment.d.ts.map +1 -0
  39. package/dist/commands/workflow-after-submit-comment.js +56 -0
  40. package/dist/commands/workflow-after-submit-comment.js.map +1 -0
  41. package/dist/commands/workflow-layout-components.d.ts +3 -0
  42. package/dist/commands/workflow-layout-components.d.ts.map +1 -0
  43. package/dist/commands/workflow-layout-components.js +36 -0
  44. package/dist/commands/workflow-layout-components.js.map +1 -0
  45. package/dist/commands/workflow-node-batch.d.ts +3 -0
  46. package/dist/commands/workflow-node-batch.d.ts.map +1 -0
  47. package/dist/commands/workflow-node-batch.js +136 -0
  48. package/dist/commands/workflow-node-batch.js.map +1 -0
  49. package/dist/commands/workflow-node-opinion.d.ts +3 -0
  50. package/dist/commands/workflow-node-opinion.d.ts.map +1 -0
  51. package/dist/commands/workflow-node-opinion.js +51 -0
  52. package/dist/commands/workflow-node-opinion.js.map +1 -0
  53. package/dist/commands/workflow-node-reject.js +1 -1
  54. package/dist/commands/workflow-node-reject.js.map +1 -1
  55. package/dist/commands/workflow-node.d.ts.map +1 -1
  56. package/dist/commands/workflow-node.js +4 -3
  57. package/dist/commands/workflow-node.js.map +1 -1
  58. package/dist/commands/workflow-setting.d.ts.map +1 -1
  59. package/dist/commands/workflow-setting.js +2 -67
  60. package/dist/commands/workflow-setting.js.map +1 -1
  61. package/dist/index.js +6 -2
  62. package/dist/index.js.map +1 -1
  63. package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
  64. package/dist/services/actionflow/components/send_message.js +8 -3
  65. package/dist/services/actionflow/components/send_message.js.map +1 -1
  66. package/dist/services/actionflow/context_preflight.js +1 -1
  67. package/dist/services/actionflow/context_preflight.js.map +1 -1
  68. package/dist/services/actionflow/formula_service.d.ts +1 -0
  69. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  70. package/dist/services/actionflow/formula_service.js +107 -31
  71. package/dist/services/actionflow/formula_service.js.map +1 -1
  72. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  73. package/dist/services/actionflow/preflight_service.js +4 -1
  74. package/dist/services/actionflow/preflight_service.js.map +1 -1
  75. package/dist/services/form-layout-describe.d.ts.map +1 -1
  76. package/dist/services/form-layout-describe.js +3 -2
  77. package/dist/services/form-layout-describe.js.map +1 -1
  78. package/dist/services/form-layout-document.d.ts.map +1 -1
  79. package/dist/services/form-layout-document.js +2 -1
  80. package/dist/services/form-layout-document.js.map +1 -1
  81. package/dist/services/matrix-maintainer.d.ts +27 -0
  82. package/dist/services/matrix-maintainer.d.ts.map +1 -0
  83. package/dist/services/matrix-maintainer.js +142 -0
  84. package/dist/services/matrix-maintainer.js.map +1 -0
  85. package/dist/services/report/blueprint.d.ts +109 -0
  86. package/dist/services/report/blueprint.d.ts.map +1 -0
  87. package/dist/services/report/blueprint.js +322 -0
  88. package/dist/services/report/blueprint.js.map +1 -0
  89. package/dist/services/report/build.d.ts.map +1 -1
  90. package/dist/services/report/build.js +8 -3
  91. package/dist/services/report/build.js.map +1 -1
  92. package/dist/services/report/card.d.ts +65 -0
  93. package/dist/services/report/card.d.ts.map +1 -0
  94. package/dist/services/report/card.js +151 -0
  95. package/dist/services/report/card.js.map +1 -0
  96. package/dist/services/report/copy-health.d.ts +31 -0
  97. package/dist/services/report/copy-health.d.ts.map +1 -0
  98. package/dist/services/report/copy-health.js +87 -0
  99. package/dist/services/report/copy-health.js.map +1 -0
  100. package/dist/services/report/dataset-heal.d.ts +64 -0
  101. package/dist/services/report/dataset-heal.d.ts.map +1 -0
  102. package/dist/services/report/dataset-heal.js +89 -0
  103. package/dist/services/report/dataset-heal.js.map +1 -0
  104. package/dist/services/report/dataset-ids.d.ts +70 -0
  105. package/dist/services/report/dataset-ids.d.ts.map +1 -0
  106. package/dist/services/report/dataset-ids.js +149 -0
  107. package/dist/services/report/dataset-ids.js.map +1 -0
  108. package/dist/services/report/dataset.d.ts.map +1 -1
  109. package/dist/services/report/dataset.js +3 -1
  110. package/dist/services/report/dataset.js.map +1 -1
  111. package/dist/services/report/drill.d.ts +74 -0
  112. package/dist/services/report/drill.d.ts.map +1 -0
  113. package/dist/services/report/drill.js +259 -0
  114. package/dist/services/report/drill.js.map +1 -0
  115. package/dist/services/report/empty-dataset.d.ts +51 -0
  116. package/dist/services/report/empty-dataset.d.ts.map +1 -0
  117. package/dist/services/report/empty-dataset.js +213 -0
  118. package/dist/services/report/empty-dataset.js.map +1 -0
  119. package/dist/services/report/field-binding.d.ts +75 -0
  120. package/dist/services/report/field-binding.d.ts.map +1 -0
  121. package/dist/services/report/field-binding.js +160 -0
  122. package/dist/services/report/field-binding.js.map +1 -0
  123. package/dist/services/report/forms.d.ts +32 -0
  124. package/dist/services/report/forms.d.ts.map +1 -1
  125. package/dist/services/report/forms.js +90 -0
  126. package/dist/services/report/forms.js.map +1 -1
  127. package/dist/services/report/formula-parent.d.ts +25 -0
  128. package/dist/services/report/formula-parent.d.ts.map +1 -0
  129. package/dist/services/report/formula-parent.js +116 -0
  130. package/dist/services/report/formula-parent.js.map +1 -0
  131. package/dist/services/report/locate.d.ts +40 -0
  132. package/dist/services/report/locate.d.ts.map +1 -0
  133. package/dist/services/report/locate.js +122 -0
  134. package/dist/services/report/locate.js.map +1 -0
  135. package/dist/services/report/reports.d.ts +4 -0
  136. package/dist/services/report/reports.d.ts.map +1 -1
  137. package/dist/services/report/reports.js +4 -2
  138. package/dist/services/report/reports.js.map +1 -1
  139. package/dist/services/report/scene.d.ts +22 -0
  140. package/dist/services/report/scene.d.ts.map +1 -0
  141. package/dist/services/report/scene.js +145 -0
  142. package/dist/services/report/scene.js.map +1 -0
  143. package/dist/services/report/types.d.ts +28 -0
  144. package/dist/services/report/types.d.ts.map +1 -1
  145. package/dist/services/report/verify.d.ts +24 -0
  146. package/dist/services/report/verify.d.ts.map +1 -1
  147. package/dist/services/report/verify.js +115 -2
  148. package/dist/services/report/verify.js.map +1 -1
  149. package/dist/services/report/workbook.d.ts +12 -1
  150. package/dist/services/report/workbook.d.ts.map +1 -1
  151. package/dist/services/report/workbook.js +107 -8
  152. package/dist/services/report/workbook.js.map +1 -1
  153. package/dist/services/role-function-permission.d.ts +12 -0
  154. package/dist/services/role-function-permission.d.ts.map +1 -0
  155. package/dist/services/role-function-permission.js +46 -0
  156. package/dist/services/role-function-permission.js.map +1 -0
  157. package/dist/services/special-layout.d.ts +113 -0
  158. package/dist/services/special-layout.d.ts.map +1 -0
  159. package/dist/services/special-layout.js +178 -0
  160. package/dist/services/special-layout.js.map +1 -0
  161. package/dist/services/workflow-after-submit-comment.d.ts +20 -0
  162. package/dist/services/workflow-after-submit-comment.d.ts.map +1 -0
  163. package/dist/services/workflow-after-submit-comment.js +81 -0
  164. package/dist/services/workflow-after-submit-comment.js.map +1 -0
  165. package/dist/services/workflow-base-settings.d.ts +1 -10
  166. package/dist/services/workflow-base-settings.d.ts.map +1 -1
  167. package/dist/services/workflow-field-permission-route.d.ts +15 -41
  168. package/dist/services/workflow-field-permission-route.d.ts.map +1 -1
  169. package/dist/services/workflow-field-permission-route.js +23 -8
  170. package/dist/services/workflow-field-permission-route.js.map +1 -1
  171. package/dist/services/workflow-layout-components.d.ts +52 -0
  172. package/dist/services/workflow-layout-components.d.ts.map +1 -0
  173. package/dist/services/workflow-layout-components.js +66 -0
  174. package/dist/services/workflow-layout-components.js.map +1 -0
  175. package/dist/services/workflow-layout-draft.d.ts +49 -0
  176. package/dist/services/workflow-layout-draft.d.ts.map +1 -0
  177. package/dist/services/workflow-layout-draft.js +98 -0
  178. package/dist/services/workflow-layout-draft.js.map +1 -0
  179. package/dist/services/workflow-node-batch-spec.d.ts +122 -0
  180. package/dist/services/workflow-node-batch-spec.d.ts.map +1 -0
  181. package/dist/services/workflow-node-batch-spec.js +496 -0
  182. package/dist/services/workflow-node-batch-spec.js.map +1 -0
  183. package/dist/services/workflow-node-batch.d.ts +73 -0
  184. package/dist/services/workflow-node-batch.d.ts.map +1 -0
  185. package/dist/services/workflow-node-batch.js +328 -0
  186. package/dist/services/workflow-node-batch.js.map +1 -0
  187. package/dist/services/workflow-node-opinion-description.d.ts +12 -0
  188. package/dist/services/workflow-node-opinion-description.d.ts.map +1 -0
  189. package/dist/services/workflow-node-opinion-description.js +52 -0
  190. package/dist/services/workflow-node-opinion-description.js.map +1 -0
  191. package/dist/services/workflow-node-opinion-layout.d.ts +22 -0
  192. package/dist/services/workflow-node-opinion-layout.d.ts.map +1 -0
  193. package/dist/services/workflow-node-opinion-layout.js +113 -0
  194. package/dist/services/workflow-node-opinion-layout.js.map +1 -0
  195. package/dist/services/workflow-node-opinion-range.d.ts +21 -0
  196. package/dist/services/workflow-node-opinion-range.d.ts.map +1 -0
  197. package/dist/services/workflow-node-opinion-range.js +74 -0
  198. package/dist/services/workflow-node-opinion-range.js.map +1 -0
  199. package/dist/services/workflow-node-opinion.d.ts +43 -0
  200. package/dist/services/workflow-node-opinion.d.ts.map +1 -0
  201. package/dist/services/workflow-node-opinion.js +198 -0
  202. package/dist/services/workflow-node-opinion.js.map +1 -0
  203. package/dist/services/workflow-opinion-settings.d.ts +14 -0
  204. package/dist/services/workflow-opinion-settings.d.ts.map +1 -1
  205. package/dist/services/workflow-opinion-settings.js +18 -2
  206. package/dist/services/workflow-opinion-settings.js.map +1 -1
  207. package/ecodecmd/src/build.js +36 -12
  208. package/package.json +1 -1
  209. package/skill-docs/SKILL.md +164 -162
  210. package/skill-docs/_catalog.md +13 -3
  211. package/skill-docs/actionflows/references/components/message/SendMessage.md +32 -30
  212. package/skill-docs/references/coding/guide-page-code.md +95 -0
  213. package/skill-docs/references/common/guide-plan-template.md +4 -1
  214. package/skill-docs/references/common/map.md +28 -4
  215. package/skill-docs/references/common/ref-cli-commands.md +14 -4
  216. package/skill-docs/references/components/ref-component-common.md +98 -0
  217. package/skill-docs/references/form/guide-browser-definition.md +2 -219
  218. package/skill-docs/references/form/guide-browser-scope.md +285 -0
  219. package/skill-docs/references/form/guide-create-form.md +1 -1
  220. package/skill-docs/references/hrm/guide-matrix.md +276 -245
  221. package/skill-docs/references/hrm/guide-role.md +77 -0
  222. package/skill-docs/references/report/add-dataset-registration-guide.md +44 -22
  223. package/skill-docs/references/report/advanced-crosstab-tree-guide.md +82 -0
  224. package/skill-docs/references/report/ai-report-workflow.md +100 -100
  225. package/skill-docs/references/report/api-auth-headers.md +129 -0
  226. package/skill-docs/references/report/api-report-build-fast-path.md +274 -275
  227. package/skill-docs/references/report/app-datasource-lookup-guide.md +230 -230
  228. package/skill-docs/references/report/branch-scene-guide.md +293 -0
  229. package/skill-docs/references/report/build-resilience-guide.md +99 -0
  230. package/skill-docs/references/report/card-report-guide.md +110 -0
  231. package/skill-docs/references/report/cell-config-echo-guide.md +44 -9
  232. package/skill-docs/references/report/cell-transform-guide.md +9 -9
  233. package/skill-docs/references/report/column-split-report-guide.md +96 -0
  234. package/skill-docs/references/report/condition-format-guide.md +49 -24
  235. package/skill-docs/references/report/cross-dataset-filter-guide.md +180 -69
  236. package/skill-docs/references/report/crosstab-raw-workbook-guide.md +265 -0
  237. package/skill-docs/references/report/dataset-query-filter-guide.md +231 -235
  238. package/skill-docs/references/report/dataset-sidebar-ops-guide.md +75 -34
  239. package/skill-docs/references/report/dataset-table-field-contract-guide.md +196 -46
  240. package/skill-docs/references/report/datasource-metadata-guide.md +128 -119
  241. package/skill-docs/references/report/datasource-selection-and-parent-filter-guide.md +183 -148
  242. package/skill-docs/references/report/date-range-query-reference.md +97 -102
  243. package/skill-docs/references/report/default-header-style-guide.md +8 -8
  244. package/skill-docs/references/report/designer-blank-prevention-guide.md +8 -8
  245. package/skill-docs/references/report/dossier-report-guide.md +69 -0
  246. package/skill-docs/references/report/drilldown-report-guide.md +75 -0
  247. package/skill-docs/references/report/event-hreflink-guide.md +55 -47
  248. package/skill-docs/references/report/expansion-block-parent-config-guide.md +208 -0
  249. package/skill-docs/references/report/failure-cleanup-and-nonblocking-guide.md +183 -0
  250. package/skill-docs/references/report/field-bind-exact-match-guide.md +208 -208
  251. package/skill-docs/references/report/financial-stats-report-guide.md +89 -0
  252. package/skill-docs/references/report/formula-cell-api-guide.md +325 -258
  253. package/skill-docs/references/report/golden-case-summary-sheet.md +200 -0
  254. package/skill-docs/references/report/guide-report-build.md +6 -1
  255. package/skill-docs/references/report/hidden-row-and-header-merge-guide.md +10 -10
  256. package/skill-docs/references/report/layout-showlocation-freeze-guide.md +39 -10
  257. package/skill-docs/references/report/multi-report-crosstab-casebook.md +263 -0
  258. package/skill-docs/references/report/paged-group-report-guide.md +68 -0
  259. package/skill-docs/references/report/preaggregate-auto-disable-guide.md +24 -13
  260. package/skill-docs/references/report/query-condition-api-guide.md +174 -125
  261. package/skill-docs/references/report/ref-report-commands.md +41 -3
  262. package/skill-docs/references/report/report-baseinfo-defaults-guide.md +117 -117
  263. package/skill-docs/references/report/report-building-guide.md +52 -52
  264. package/skill-docs/references/report/report-case-prompts.md +104 -0
  265. package/skill-docs/references/report/report-config-schema.md +281 -281
  266. package/skill-docs/references/report/report-create-modes-guide.md +73 -35
  267. package/skill-docs/references/report/report-data-model.md +131 -131
  268. package/skill-docs/references/report/report-delivery-contract.md +23 -3
  269. package/skill-docs/references/report/report-designer-feature-map.md +30 -35
  270. package/skill-docs/references/report/report-help-guide.md +304 -0
  271. package/skill-docs/references/report/report-internal-error-guide.md +71 -0
  272. package/skill-docs/references/report/report-knowledge-base.md +27 -27
  273. package/skill-docs/references/report/report-lifecycle-api-guide.md +126 -94
  274. package/skill-docs/references/report/report-list-page-ops-guide.md +54 -8
  275. package/skill-docs/references/report/report-permission-guide.md +99 -102
  276. package/skill-docs/references/report/report-requirement-analysis-template.md +93 -29
  277. package/skill-docs/references/report/report-self-check-guide.md +164 -164
  278. package/skill-docs/references/report/report-verification-discipline-guide.md +203 -0
  279. package/skill-docs/references/report/safe-partial-save-guide.md +151 -151
  280. package/skill-docs/references/report/shard-freeze-report-guide.md +97 -0
  281. package/skill-docs/references/report/snowflake-id-precision-guide.md +84 -84
  282. package/skill-docs/references/report/spec-build-schema.md +71 -71
  283. package/skill-docs/references/report/targeted-fix-guide.md +155 -97
  284. package/skill-docs/references/report/user-request-scope-only-guide.md +23 -4
  285. package/skill-docs/references/workflow/guide-after-submit-comment.md +58 -0
  286. package/skill-docs/references/workflow/guide-layout-components.md +26 -0
  287. package/skill-docs/references/workflow/guide-node-opinion.md +58 -0
  288. package/skill-docs/references/workflow/guide-workflow.md +49 -0
  289. package/skill-docs/references/form/guide-ebuilder-scope.md +0 -82
@@ -1,235 +1,231 @@
1
- # 数据集筛选(queryInfoSave)API 写入规范
2
-
3
- > **适用场景**:设计器左侧「数据集 → 筛选条件」、行级数据权限、整表预过滤。
4
- > **参考报表**:`1304979556231593985`(EBU 经营数据统计)
5
- > **代码实现**:`本地工作目录` → `build_*_dataset_query_filter()` / `ensure_*_dataset_filter()`
6
- > **执行**:`python 本地工作目录`
7
-
8
- ---
9
-
10
- ## 一、三种「筛选」机制(必区分)
11
-
12
- | 机制 | 设计器入口 | API | 持久化形态 | 典型用途 |
13
- |------|-----------|-----|-----------|----------|
14
- | **高级搜索** | 页面 → 查询设置 | `saveQueryItem` / `getQueryItem` | QueryItem JSON | 用户运行时输入筛选 |
15
- | **数据集筛选** | 左侧数据集 → 筛选条件 | **`queryInfoSave` / `queryInfoGet`** | `conditionData` + `otherData` | 行级权限、整表预过滤 |
16
- | **单元格/实例筛选** | 单元格自定义筛选 / 多数据集副本 | `saveReportWithCacheConfig` → `datasetFilter` / `customFilterField` | filterList + fieldKey | 列级差异化汇总 |
17
-
18
- **Agent 硬约束**
19
-
20
- - 用户说「左侧数据集筛选」「行级权限」「数据集过滤条件」→ **只用 `queryInfoSave`**,禁止写 `saveQueryItem`。
21
- - 用户说「高级搜索」「查询条件」→ **`saveQueryItem`**,禁止写 `queryInfoSave`。
22
- - 用户说「自定义筛选」「核算机构不包含」且针对**某一列/某一数据集实例**→ `datasetFilter` / `customFilterField`(见 `cross-dataset-filter-guide.md`)。
23
-
24
- ---
25
-
26
- ## 二、API
27
-
28
- | 操作 | 方法 | 参数 |
29
- |------|------|------|
30
- | 保存 | `POST /api/bs/edc/dataset/queryInfoSave` | `datasetId`, `filterData`(conditionData JSON 字符串), `otherData`(JSON 字符串) |
31
- | 读取 | `GET /api/bs/edc/dataset/queryInfoGet` | `datasetId` |
32
-
33
- 回读路径:`data.conditionData`、`data.otherData`(均为 JSON 字符串,需二次 `json.loads`)。
34
-
35
- ---
36
-
37
- ## 三、conditionData 顶层结构
38
-
39
- ```json
40
- {
41
- "key": "<毫秒时间戳>",
42
- "relationship": "1",
43
- "isParent": true,
44
- "isNewFilter": true,
45
- "parentNode": "",
46
- "datas": [ /* 条件节点数组 */ ],
47
- "version": 1
48
- }
49
- ```
50
-
51
- | 字段 | 值 | 说明 |
52
- |------|-----|------|
53
- | `relationship` | **`"1"`** | 且(AND) |
54
- | `relationship` | **`"0"`** | 或(OR) |
55
- | `otherData.rootStr` | 人类可读表达式 | 设计器展示用,须与 datas 语义一致 |
56
- | `otherData.filterIsNull` | **`true`** | **变量值为空时不参与条件过滤**(平台 `QueryFilterBiz.analysisConfigFilter`);与设计器「空值不筛」对齐,写入变量条件时**必须**为 `true` |
57
- | `otherData.rootStr` | 人类可读表达式 | 设计器展示用,须与 datas 语义一致 |
58
- | `otherData.version` | `1` | 与手动 save 对齐 |
59
-
60
- ### 5.4 自定义变量(如 `{cs}`)
61
-
62
- | 场景 | func | value | otherData |
63
- |------|------|-------|-----------|
64
- | 创建者等于自定义变量 cs | `eq` | `{cs}` | **`filterIsNull: true`** |
65
- | 固定字面量(如资产名称=办公用品) | `eq` | `办公用品` | 同上(整组筛选共用 otherData) |
66
-
67
- > 变量名写在花括号内,与运行时请求参数 / 页面入参键一致。`filterIsNull=true` 时,`{cs}` 解析为空则**整条条件跳过**,不会误筛成「等于空」。
68
-
69
- ---
70
-
71
- ## 四、单条条件节点(datas[])
72
-
73
- ```json
74
- {
75
- "type": "condition",
76
- "fieldName": "field_1299789221321891852",
77
- "fieldType": "String",
78
- "compType": "Text",
79
- "text": "产品类型",
80
- "objId": "<sourceId>",
81
- "conditions": {
82
- "func": "nempty",
83
- "value": "",
84
- "type": "",
85
- "text": "",
86
- "isEsb": false
87
- },
88
- "formInfo": { "fieldId": "<字段 id>" },
89
- "config": { "fieldId": "<字段 id>" }
90
- }
91
- ```
92
-
93
- `conditions` 三要素:**func** + **value** + **type**(字段对比时为 `"formField"`)。
94
-
95
- ---
96
-
97
- ## 五、需求语义 → func / value 对照表
98
-
99
- ### 5.1 字面量条件(type 为空)
100
-
101
- | 设计器 / 需求描述 | func | value 示例 | 备注 |
102
- |------------------|------|-----------|------|
103
- | 不为空 | **`nempty`** | `""` | 保存用 `nempty`,勿写 `isNotNull` |
104
- | 为空 | **`empty`** | `""` | |
105
- | 等于 | **`eq`** | 固定值或 `{lastname}` | 人员当前登录见 §5.3 |
106
- | 不等于(固定文本) | **`notEq`** | `"新签合同"` | 与字段对比的 `neq` 不同 |
107
- | 包含 | `like` / `contains` | 文本 | |
108
- | 不包含 | `uncontains` | 文本 | datasetFilter 常用 |
109
- | 开头包含 | **`startWith`** | `{thisyear}` | 按年份前缀筛 datetime / yyyy-MM |
110
- | 结尾包含 | `endWith` | 文本 | |
111
- | 介于 | **`between`** | `["{thisyear}",""]` | 完整日期区间;**不**适用于 yyyy-MM 等于当前月 |
112
-
113
- ### 5.2 字段对比(type = `"formField"`)
114
-
115
- 左字段为当前节点 `fieldName`;右字段写在 `value.compareFormField`(目标字段完整 `originField` + `showName` + `changeTrigger`)。
116
-
117
- | 设计器 / 需求描述 | func | value 结构 |
118
- |------------------|------|-----------|
119
- | **不属于**(字段 A 不属于字段 B) | **`unaggregate`** | `{ "compareFormField": <字段B originField> }` |
120
- | **不等于**(字段 A ≠ 字段 B) | **`neq`** | `{ "compareFormField": <字段B originField> }` |
121
-
122
- ```python
123
- def _build_compare_form_field(origin_field):
124
- field = dict(origin_field or {})
125
- field["showName"] = field.get("name") or field.get("showName") or ""
126
- field["changeTrigger"] = field.get("changeTrigger") or "1"
127
- return field
128
- ```
129
-
130
- **常见错误**
131
-
132
- | 错误写法 | 正确理解 |
133
- |----------|----------|
134
- | `notEq` + 字符串 `"核算机构"` | 排除产品类型**枚举值**为「核算机构」,不是字段对比 |
135
- | `unaggregate` 用于「不等于」 | 「不等于」用 **`neq`**;「不属于」用 **`unaggregate`** |
136
- | `isNotNull` 写入 queryInfoSave | 平台归一化为 **`nempty`** |
137
-
138
- ### 5.3 系统参数(dataset 筛选已验证)
139
-
140
- | 场景 | func | value |
141
- |------|------|-------|
142
- | 当前用户姓名 | `eq` | `{lastname}` |
143
- | 当前登录人员 ID | **`eq`** | `{userid}`(设计器显示「等于」,勿用 `in`) |
144
- | 当前年月(format=`yyyy-MM`) | `eq` | **`{year}-{month}`** |
145
- | 今年(yyyy-MM / datetime 前缀) | `startWith` | **`{thisyear}`** |
146
- | 今年(高级搜索日期区间) | `between` | `["{thisyear}",""]` | 仅 saveQueryItem,非左侧 dataset |
147
-
148
- **无效占位符**:`{username}`、`{today}`、`{currmonth}`。
149
-
150
- ---
151
-
152
- ## 六、日期字段 format 与写法
153
-
154
- | 字段 format | 需求 | 推荐写法 | 勿用 |
155
- |-------------|------|----------|------|
156
- | `yyyy-MM` | 当前年月 | `eq` + `{year}-{month}` | `between` + `{thismonth}` |
157
- | `yyyy-MM` | 今年 | `startWith` + `{thisyear}` | `between`(完整日期语义) |
158
- | `yyyy-MM-dd` / `yyyy-MM-dd HH:mm:ss` | 今年 | `startWith` + `{thisyear}` | — |
159
- | 高级搜索日期区间 | 本月 | — | 见 `query-condition-api-guide.md` §五 |
160
-
161
- ---
162
-
163
- ## 七、EBU 参考示例
164
-
165
- 报表 `1304979556231593985`
166
-
167
- ### 7.1 EBU团队 · AND(`relationship: "1"`)
168
-
169
- 数据集 `1304979556231593994`
170
-
171
- | 字段 | func | value |
172
- |------|------|-------|
173
- | 负责人姓名 | `eq` | `{lastname}` |
174
- | 创建者 | **`eq`** | `{userid}` |
175
-
176
- rootStr:`( 负责人姓名 等于 '{lastname}' ) AND ( 创建者 等于 '{userid}' )`
177
-
178
- ### 7.2 直销合同业绩表 · OR(`relationship: "0"`)
179
-
180
- 数据集 `1304979560546713602`
181
-
182
- | 字段 | func | type | value |
183
- |------|------|------|-------|
184
- | 核算机构 | **`neq`** | **`formField`** | compareFormField → 合同种类 |
185
- | 创建时间 | **`startWith`** | — | `{thisyear}` |
186
-
187
- rootStr:`(( 核算机构 不等于合同种类 ) 或 ( 创建时间 开头包含 '{thisyear}' ))`
188
-
189
- ### 7.3 其他可用写法(按需)
190
-
191
- | 场景 | func | value |
192
- |------|------|-------|
193
- | 产品类型 不属于 核算机构 | `unaggregate` + formField | compareFormField → 核算机构 |
194
- | 合同业绩年月 = 当前年月 | `eq` | `{year}-{month}` |
195
-
196
- ---
197
-
198
- ## 八、写入与验证流程
199
-
200
- 1. `fieldsAndOriginFields` / `get_fields` 取字段 **originField**(字段对比右侧必填)。
201
- 2. 组装 `conditionData` + `otherData`(含 `rootStr`)。
202
- 3. `POST queryInfoSave`。
203
- 4. **`GET queryInfoGet` 回读**,核对:
204
- - [ ] `relationship` 与 AND/OR 一致
205
- - [ ] 每条 `conditions.func` / `conditions.type` / `conditions.value`
206
- - [ ] 字段对比:`value.compareFormField.name` 为右字段 fieldName
207
- - [ ] `otherData.rootStr` 与设计器一致
208
- 5. 设计器刷新左侧数据集 → 筛选条件,确认操作项与默认值回显。
209
-
210
- **禁止**:未回读 `queryInfoGet` 即声称配置正确(手动 save 与脚本形态可能不同)。
211
-
212
- ---
213
-
214
- ## 九、与 queryInfoSave 无关的筛选
215
-
216
- 以下场景**不要**使用本章 API:
217
-
218
- | 需求 | 文档 |
219
- |------|------|
220
- | 报表顶部高级搜索 | `query-condition-api-guide.md` §二–§六 |
221
- | 单元格 customFilterField | `cross-dataset-filter-guide.md` §三 |
222
- | 多数据集实例 datasetFilter | `cross-dataset-filter-guide.md` §3.4 |
223
- | 左父格 subordination / leftFilterField | `cross-dataset-filter-guide.md` §二 |
224
-
225
- ---
226
-
227
- ## 十、相关文件
228
-
229
- | 文件 | 用途 |
230
- |------|------|
231
- | `本地工作目录` | `_dataset_filter_condition_node`、`_dataset_filter_form_field_compare_node`、`build_*_dataset_query_filter` |
232
- | `本地工作目录` | 一键写入高级搜索 + 数据集筛选 |
233
- | `query-condition-api-guide.md` | saveQueryItem 高级搜索(与本文互补) |
234
- | `cross-dataset-filter-guide.md` | datasetFilter / customFilterField / fieldKey |
235
- | `report-knowledge-base.md` | FuncType 枚举摘要 |
1
+ # 数据集筛选(queryInfoSave)API 写入规范
2
+
3
+ > **适用场景**:设计器左侧「数据集 → 筛选条件」、行级数据权限、整表预过滤。
4
+ > **金标准报表**:`1304979556231593985`(EBU 经营数据统计)
5
+
6
+ ---
7
+
8
+ ## 一、三种「筛选」机制(必区分)
9
+
10
+ | 机制 | 设计器入口 | API | 持久化形态 | 典型用途 |
11
+ |------|-----------|-----|-----------|----------|
12
+ | **高级搜索** | 页面 → 查询设置 | `saveQueryItem` / `getQueryItem` | QueryItem JSON | 用户运行时输入筛选 |
13
+ | **数据集筛选** | 左侧数据集 → 筛选条件 | **`queryInfoSave` / `queryInfoGet`** | `conditionData` + `otherData` | 行级权限、整表预过滤 |
14
+ | **单元格/实例筛选** | 单元格自定义筛选 / 多数据集副本 | `saveReportWithCacheConfig` → `datasetFilter` / `customFilterField` | filterList + fieldKey | 列级差异化汇总 |
15
+
16
+ **Agent 硬约束**
17
+
18
+ - 用户说「左侧数据集筛选」「行级权限」「数据集过滤条件」→ **只用 `queryInfoSave`**,禁止写 `saveQueryItem`。
19
+ - 用户说「高级搜索」「查询条件」→ **`saveQueryItem`**,禁止写 `queryInfoSave`。
20
+ - 用户说「自定义筛选」「核算机构不包含」且针对**某一列/某一数据集实例**→ `datasetFilter` / `customFilterField`(见 `cross-dataset-filter-guide.md`)。
21
+
22
+ ---
23
+
24
+ ## 二、API
25
+
26
+ | 操作 | 方法 | 参数 |
27
+ |------|------|------|
28
+ | 保存 | `POST /api/bs/edc/dataset/queryInfoSave` | `datasetId`, `filterData`(conditionData JSON 字符串), `otherData`(JSON 字符串) |
29
+ | 读取 | `GET /api/bs/edc/dataset/queryInfoGet` | `datasetId` |
30
+
31
+ 回读路径:`data.conditionData`、`data.otherData`(均为 JSON 字符串,需二次 `json.loads`)。
32
+
33
+ ---
34
+
35
+ ## 三、conditionData 顶层结构
36
+
37
+ ```json
38
+ {
39
+ "key": "<毫秒时间戳>",
40
+ "relationship": "1",
41
+ "isParent": true,
42
+ "isNewFilter": true,
43
+ "parentNode": "",
44
+ "datas": [ /* 条件节点数组 */ ],
45
+ "version": 1
46
+ }
47
+ ```
48
+
49
+ | 字段 | 值 | 说明 |
50
+ |------|-----|------|
51
+ | `relationship` | **`"1"`** | 且(AND) |
52
+ | `relationship` | **`"0"`** | 或(OR) |
53
+ | `otherData.rootStr` | 人类可读表达式 | 设计器展示用,须与 datas 语义一致 |
54
+ | `otherData.filterIsNull` | **`true`** | **变量值为空时不参与条件过滤**(平台 `QueryFilterBiz.analysisConfigFilter`);与设计器「空值不筛」对齐,写入变量条件时**必须**为 `true` |
55
+ | `otherData.rootStr` | 人类可读表达式 | 设计器展示用,须与 datas 语义一致 |
56
+ | `otherData.version` | `1` | 与手动 save 对齐 |
57
+
58
+ ### 5.4 自定义变量(如 `{cs}`)
59
+
60
+ | 场景 | func | value | otherData |
61
+ |------|------|-------|-----------|
62
+ | 创建者等于自定义变量 cs | `eq` | `{cs}` | **`filterIsNull: true`** |
63
+ | 固定字面量(如资产名称=办公用品) | `eq` | `办公用品` | 同上(整组筛选共用 otherData) |
64
+
65
+ > 变量名写在花括号内,与运行时请求参数 / 页面入参键一致。`filterIsNull=true` 时,`{cs}` 解析为空则**整条条件跳过**,不会误筛成「等于空」。
66
+
67
+ ---
68
+
69
+ ## 四、单条条件节点(datas[])
70
+
71
+ ```json
72
+ {
73
+ "type": "condition",
74
+ "fieldName": "field_1299789221321891852",
75
+ "fieldType": "String",
76
+ "compType": "Text",
77
+ "text": "产品类型",
78
+ "objId": "<sourceId>",
79
+ "conditions": {
80
+ "func": "nempty",
81
+ "value": "",
82
+ "type": "",
83
+ "text": "",
84
+ "isEsb": false
85
+ },
86
+ "formInfo": { "fieldId": "<字段 id>" },
87
+ "config": { "fieldId": "<字段 id>" }
88
+ }
89
+ ```
90
+
91
+ `conditions` 三要素:**func** + **value** + **type**(字段对比时为 `"formField"`)。
92
+
93
+ ---
94
+
95
+ ## 五、需求语义 → func / value 对照表
96
+
97
+ ### 5.1 字面量条件(type 为空)
98
+
99
+ | 设计器 / 需求描述 | func | value 示例 | 备注 |
100
+ |------------------|------|-----------|------|
101
+ | 不为空 | **`nempty`** | `""` | 保存用 `nempty`,勿写 `isNotNull` |
102
+ | 为空 | **`empty`** | `""` | |
103
+ | 等于 | **`eq`** | 固定值或 `{lastname}` | 人员当前登录见 §5.3 |
104
+ | 不等于(固定文本) | **`notEq`** | `"新签合同"` | 与字段对比的 `neq` 不同 |
105
+ | 包含 | `like` / `contains` | 文本 | |
106
+ | 不包含 | `uncontains` | 文本 | datasetFilter 常用 |
107
+ | 开头包含 | **`startWith`** | `{thisyear}` | 按年份前缀筛 datetime / yyyy-MM |
108
+ | 结尾包含 | `endWith` | 文本 | |
109
+ | 介于 | **`between`** | `["{thisyear}",""]` | 完整日期区间;**不**适用于 yyyy-MM 等于当前月 |
110
+
111
+ ### 5.2 字段对比(type = `"formField"`)
112
+
113
+ 左字段为当前节点 `fieldName`;右字段写在 `value.compareFormField`(目标字段完整 `originField` + `showName` + `changeTrigger`)。
114
+
115
+ | 设计器 / 需求描述 | func | value 结构 |
116
+ |------------------|------|-----------|
117
+ | **不属于**(字段 A 不属于字段 B) | **`unaggregate`** | `{ "compareFormField": <字段B originField> }` |
118
+ | **不等于**(字段 A ≠ 字段 B) | **`neq`** | `{ "compareFormField": <字段B originField> }` |
119
+
120
+ ```python
121
+ def _build_compare_form_field(origin_field):
122
+ field = dict(origin_field or {})
123
+ field["showName"] = field.get("name") or field.get("showName") or ""
124
+ field["changeTrigger"] = field.get("changeTrigger") or "1"
125
+ return field
126
+ ```
127
+
128
+ **常见错误**
129
+
130
+ | 错误写法 | 正确理解 |
131
+ |----------|----------|
132
+ | `notEq` + 字符串 `"核算机构"` | 排除产品类型**枚举值**为「核算机构」,不是字段对比 |
133
+ | `unaggregate` 用于「不等于」 | 「不等于」用 **`neq`**;「不属于」用 **`unaggregate`** |
134
+ | `isNotNull` 写入 queryInfoSave | 平台归一化为 **`nempty`** |
135
+
136
+ ### 5.3 系统参数(dataset 筛选已验证)
137
+
138
+ | 场景 | func | value |
139
+ |------|------|-------|
140
+ | 当前用户姓名 | `eq` | `{lastname}` |
141
+ | 当前登录人员 ID | **`eq`** | `{userid}`(设计器显示「等于」,勿用 `in`) |
142
+ | 当前年月(format=`yyyy-MM`) | `eq` | **`{year}-{month}`** |
143
+ | 今年(yyyy-MM / datetime 前缀) | `startWith` | **`{thisyear}`** |
144
+ | 今年(高级搜索日期区间) | `between` | `["{thisyear}",""]` | 仅 saveQueryItem,非左侧 dataset |
145
+
146
+ **无效占位符**:`{username}`、`{today}`、`{currmonth}`。
147
+
148
+ ---
149
+
150
+ ## 六、日期字段 format 与写法
151
+
152
+ | 字段 format | 需求 | 推荐写法 | 勿用 |
153
+ |-------------|------|----------|------|
154
+ | `yyyy-MM` | 当前年月 | `eq` + `{year}-{month}` | `between` + `{thismonth}` |
155
+ | `yyyy-MM` | 今年 | `startWith` + `{thisyear}` | `between`(完整日期语义) |
156
+ | `yyyy-MM-dd` / `yyyy-MM-dd HH:mm:ss` | 今年 | `startWith` + `{thisyear}` | — |
157
+ | 高级搜索日期区间 | 本月 | — | 见 `query-condition-api-guide.md` §五 |
158
+
159
+ ---
160
+
161
+ ## 七、EBU 金标准示例
162
+
163
+ 报表 `1304979556231593985`
164
+
165
+ ### 7.1 EBU团队 · AND(`relationship: "1"`)
166
+
167
+ 数据集 `1304979556231593994`
168
+
169
+ | 字段 | func | value |
170
+ |------|------|-------|
171
+ | 负责人姓名 | `eq` | `{lastname}` |
172
+ | 创建者 | **`eq`** | `{userid}` |
173
+
174
+ rootStr:`( 负责人姓名 等于 '{lastname}' ) AND ( 创建者 等于 '{userid}' )`
175
+
176
+ ### 7.2 直销合同业绩表 · OR(`relationship: "0"`)
177
+
178
+ 数据集 `1304979560546713602`
179
+
180
+ | 字段 | func | type | value |
181
+ |------|------|------|-------|
182
+ | 核算机构 | **`neq`** | **`formField`** | compareFormField → 合同种类 |
183
+ | 创建时间 | **`startWith`** | — | `{thisyear}` |
184
+
185
+ rootStr:`(( 核算机构 不等于合同种类 ) 或 ( 创建时间 开头包含 '{thisyear}' ))`
186
+
187
+ ### 7.3 历史验证过的其他写法(按需)
188
+
189
+ | 场景 | func | value |
190
+ |------|------|-------|
191
+ | 产品类型 不属于 核算机构 | `unaggregate` + formField | compareFormField → 核算机构 |
192
+ | 合同业绩年月 = 当前年月 | `eq` | `{year}-{month}` |
193
+
194
+ ---
195
+
196
+ ## 八、写入与验证流程
197
+
198
+ 1. `fieldsAndOriginFields` / `get_fields` 取字段 **originField**(字段对比右侧必填)。
199
+ 2. 组装 `conditionData` + `otherData`(含 `rootStr`)。
200
+ 3. `POST queryInfoSave`。
201
+ 4. **`GET queryInfoGet` 回读**,核对:
202
+ - [ ] `relationship` 与 AND/OR 一致
203
+ - [ ] 每条 `conditions.func` / `conditions.type` / `conditions.value`
204
+ - [ ] 字段对比:`value.compareFormField.name` 为右字段 fieldName
205
+ - [ ] `otherData.rootStr` 与设计器一致
206
+ 5. 设计器刷新左侧数据集 → 筛选条件,确认操作项与默认值回显。
207
+
208
+ **禁止**:未回读 `queryInfoGet` 即声称配置正确(手动 save 与脚本形态可能不同)。
209
+
210
+ ---
211
+
212
+ ## 九、与 queryInfoSave 无关的筛选
213
+
214
+ 以下场景**不要**使用本章 API:
215
+
216
+ | 需求 | 文档 |
217
+ |------|------|
218
+ | 报表顶部高级搜索 | `query-condition-api-guide.md` §二–§六 |
219
+ | 单元格 customFilterField | `cross-dataset-filter-guide.md` §三 |
220
+ | 多数据集实例 datasetFilter | `cross-dataset-filter-guide.md` §3.4 |
221
+ | 左父格 subordination / leftFilterField | `cross-dataset-filter-guide.md` §二 |
222
+
223
+ ---
224
+
225
+ ## 十、相关文件
226
+
227
+ | 文件 | 用途 |
228
+ |------|------|
229
+ | `query-condition-api-guide.md` | saveQueryItem 高级搜索(与本文互补) |
230
+ | `cross-dataset-filter-guide.md` | datasetFilter / customFilterField / fieldKey |
231
+ | `report-knowledge-base.md` | FuncType 枚举摘要 |