weaver-e10-builder 1.2.2 → 1.2.5

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 (274) hide show
  1. package/README.md +8 -19
  2. package/dist/commands/actionflow.d.ts.map +1 -1
  3. package/dist/commands/actionflow.js +14 -1
  4. package/dist/commands/actionflow.js.map +1 -1
  5. package/dist/commands/designer-css.d.ts +15 -0
  6. package/dist/commands/designer-css.d.ts.map +1 -0
  7. package/dist/commands/designer-css.js +205 -0
  8. package/dist/commands/designer-css.js.map +1 -0
  9. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  10. package/dist/commands/form-add-detail-table.js +127 -7
  11. package/dist/commands/form-add-detail-table.js.map +1 -1
  12. package/dist/commands/form-ebuilder-columns.d.ts +7 -0
  13. package/dist/commands/form-ebuilder-columns.d.ts.map +1 -1
  14. package/dist/commands/form-ebuilder-columns.js +2 -24
  15. package/dist/commands/form-ebuilder-columns.js.map +1 -1
  16. package/dist/commands/form-field-lang.d.ts.map +1 -1
  17. package/dist/commands/form-field-lang.js +4 -39
  18. package/dist/commands/form-field-lang.js.map +1 -1
  19. package/dist/commands/form-formula.d.ts.map +1 -1
  20. package/dist/commands/form-formula.js +35 -11
  21. package/dist/commands/form-formula.js.map +1 -1
  22. package/dist/commands/form-layout-init.d.ts.map +1 -1
  23. package/dist/commands/form-layout-init.js +15 -10
  24. package/dist/commands/form-layout-init.js.map +1 -1
  25. package/dist/commands/form-layout.js +24 -21
  26. package/dist/commands/form-layout.js.map +1 -1
  27. package/dist/commands/form-native.d.ts.map +1 -1
  28. package/dist/commands/form-native.js +181 -0
  29. package/dist/commands/form-native.js.map +1 -1
  30. package/dist/commands/form-nlist.d.ts +1 -1
  31. package/dist/commands/form-nlist.d.ts.map +1 -1
  32. package/dist/commands/form-nlist.js +5 -3
  33. package/dist/commands/form-nlist.js.map +1 -1
  34. package/dist/commands/form-validate.d.ts.map +1 -1
  35. package/dist/commands/form-validate.js +11 -3
  36. package/dist/commands/form-validate.js.map +1 -1
  37. package/dist/commands/form.d.ts.map +1 -1
  38. package/dist/commands/form.js +168 -90
  39. package/dist/commands/form.js.map +1 -1
  40. package/dist/commands/menu.d.ts.map +1 -1
  41. package/dist/commands/menu.js +170 -23
  42. package/dist/commands/menu.js.map +1 -1
  43. package/dist/commands/wf-form.d.ts +1 -0
  44. package/dist/commands/wf-form.d.ts.map +1 -1
  45. package/dist/commands/wf-form.js +44 -13
  46. package/dist/commands/wf-form.js.map +1 -1
  47. package/dist/commands/workflow-auth-resp.d.ts.map +1 -1
  48. package/dist/commands/workflow-auth-resp.js +69 -8
  49. package/dist/commands/workflow-auth-resp.js.map +1 -1
  50. package/dist/commands/workflow-node-assign-flow.d.ts +3 -0
  51. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -0
  52. package/dist/commands/workflow-node-assign-flow.js +341 -0
  53. package/dist/commands/workflow-node-assign-flow.js.map +1 -0
  54. package/dist/commands/workflow-node.d.ts +2 -0
  55. package/dist/commands/workflow-node.d.ts.map +1 -1
  56. package/dist/commands/workflow-node.js +219 -48
  57. package/dist/commands/workflow-node.js.map +1 -1
  58. package/dist/commands/workflow-odoc.d.ts.map +1 -1
  59. package/dist/commands/workflow-odoc.js +56 -56
  60. package/dist/commands/workflow-odoc.js.map +1 -1
  61. package/dist/commands/workflow-setting.d.ts.map +1 -1
  62. package/dist/commands/workflow-setting.js +77 -1
  63. package/dist/commands/workflow-setting.js.map +1 -1
  64. package/dist/commands/workflow.d.ts.map +1 -1
  65. package/dist/commands/workflow.js +36 -80
  66. package/dist/commands/workflow.js.map +1 -1
  67. package/dist/core/auth.js +1 -1
  68. package/dist/core/client.d.ts +14 -0
  69. package/dist/core/client.d.ts.map +1 -1
  70. package/dist/core/client.js +28 -12
  71. package/dist/core/client.js.map +1 -1
  72. package/dist/index.js +4 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/services/actionflow/command_output.d.ts +7 -0
  75. package/dist/services/actionflow/command_output.d.ts.map +1 -1
  76. package/dist/services/actionflow/command_output.js +46 -0
  77. package/dist/services/actionflow/command_output.js.map +1 -1
  78. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
  79. package/dist/services/actionflow/components/action_eb_add.js +14 -4
  80. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  81. package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
  82. package/dist/services/actionflow/components/action_eb_add_compiler.js +29 -0
  83. package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
  84. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  85. package/dist/services/actionflow/components/action_eb_update.js +23 -8
  86. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  87. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  88. package/dist/services/actionflow/components/action_eb_update_compiler.js +239 -6
  89. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  90. package/dist/services/actionflow/components/assign_var.d.ts +12 -0
  91. package/dist/services/actionflow/components/assign_var.d.ts.map +1 -0
  92. package/dist/services/actionflow/components/assign_var.js +133 -0
  93. package/dist/services/actionflow/components/assign_var.js.map +1 -0
  94. package/dist/services/actionflow/components/custom_set_form.d.ts +10 -0
  95. package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -0
  96. package/dist/services/actionflow/components/custom_set_form.js +65 -0
  97. package/dist/services/actionflow/components/custom_set_form.js.map +1 -0
  98. package/dist/services/actionflow/components/custom_trigger.d.ts +2 -2
  99. package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -1
  100. package/dist/services/actionflow/components/custom_trigger.js +7 -10
  101. package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
  102. package/dist/services/actionflow/components/enquiry_form.js +1 -1
  103. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  104. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  105. package/dist/services/actionflow/components/index.js +9 -0
  106. package/dist/services/actionflow/components/index.js.map +1 -1
  107. package/dist/services/actionflow/components/output.d.ts.map +1 -1
  108. package/dist/services/actionflow/components/output.js +6 -1
  109. package/dist/services/actionflow/components/output.js.map +1 -1
  110. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  111. package/dist/services/actionflow/context_preflight.js +13 -6
  112. package/dist/services/actionflow/context_preflight.js.map +1 -1
  113. package/dist/services/actionflow/context_provider.d.ts.map +1 -1
  114. package/dist/services/actionflow/context_provider.js +3 -2
  115. package/dist/services/actionflow/context_provider.js.map +1 -1
  116. package/dist/services/actionflow/dynamic_resources.d.ts +7 -1
  117. package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
  118. package/dist/services/actionflow/dynamic_resources.js +65 -8
  119. package/dist/services/actionflow/dynamic_resources.js.map +1 -1
  120. package/dist/services/actionflow/ebuilder_source.d.ts +19 -0
  121. package/dist/services/actionflow/ebuilder_source.d.ts.map +1 -0
  122. package/dist/services/actionflow/ebuilder_source.js +78 -0
  123. package/dist/services/actionflow/ebuilder_source.js.map +1 -0
  124. package/dist/services/actionflow/form_source.d.ts +76 -0
  125. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  126. package/dist/services/actionflow/form_source.js +195 -1
  127. package/dist/services/actionflow/form_source.js.map +1 -1
  128. package/dist/services/actionflow/formula_service.d.ts +4 -1
  129. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  130. package/dist/services/actionflow/formula_service.js +97 -23
  131. package/dist/services/actionflow/formula_service.js.map +1 -1
  132. package/dist/services/actionflow/preflight_service.d.ts +6 -0
  133. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  134. package/dist/services/actionflow/preflight_service.js +211 -3
  135. package/dist/services/actionflow/preflight_service.js.map +1 -1
  136. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  137. package/dist/services/actionflow/workflow_compiler.js +83 -15
  138. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  139. package/dist/services/designer-css.d.ts +89 -0
  140. package/dist/services/designer-css.d.ts.map +1 -0
  141. package/dist/services/designer-css.js +163 -0
  142. package/dist/services/designer-css.js.map +1 -0
  143. package/dist/services/dom-structure.d.ts +42 -0
  144. package/dist/services/dom-structure.d.ts.map +1 -0
  145. package/dist/services/dom-structure.js +251 -0
  146. package/dist/services/dom-structure.js.map +1 -0
  147. package/dist/services/form-create.d.ts +2 -1
  148. package/dist/services/form-create.d.ts.map +1 -1
  149. package/dist/services/form-create.js.map +1 -1
  150. package/dist/services/form-ebuilder-columns.d.ts +50 -0
  151. package/dist/services/form-ebuilder-columns.d.ts.map +1 -0
  152. package/dist/services/form-ebuilder-columns.js +68 -0
  153. package/dist/services/form-ebuilder-columns.js.map +1 -0
  154. package/dist/services/form-field-drop.d.ts +30 -1
  155. package/dist/services/form-field-drop.d.ts.map +1 -1
  156. package/dist/services/form-field-drop.js +60 -0
  157. package/dist/services/form-field-drop.js.map +1 -1
  158. package/dist/services/form-field-patch.d.ts +69 -0
  159. package/dist/services/form-field-patch.d.ts.map +1 -0
  160. package/dist/services/form-field-patch.js +117 -0
  161. package/dist/services/form-field-patch.js.map +1 -0
  162. package/dist/services/form-i18n-label.d.ts +48 -0
  163. package/dist/services/form-i18n-label.d.ts.map +1 -0
  164. package/dist/services/form-i18n-label.js +91 -0
  165. package/dist/services/form-i18n-label.js.map +1 -0
  166. package/dist/services/form-nlist.d.ts +1 -0
  167. package/dist/services/form-nlist.d.ts.map +1 -1
  168. package/dist/services/form-nlist.js +32 -5
  169. package/dist/services/form-nlist.js.map +1 -1
  170. package/dist/services/form-style-template.d.ts +6 -2
  171. package/dist/services/form-style-template.d.ts.map +1 -1
  172. package/dist/services/form-style-template.js +8 -4
  173. package/dist/services/form-style-template.js.map +1 -1
  174. package/dist/services/form-sub-detail.d.ts +51 -3
  175. package/dist/services/form-sub-detail.d.ts.map +1 -1
  176. package/dist/services/form-sub-detail.js +183 -20
  177. package/dist/services/form-sub-detail.js.map +1 -1
  178. package/dist/services/formula-detail.d.ts +68 -5
  179. package/dist/services/formula-detail.d.ts.map +1 -1
  180. package/dist/services/formula-detail.js +110 -44
  181. package/dist/services/formula-detail.js.map +1 -1
  182. package/dist/services/menu-catalog.d.ts +84 -0
  183. package/dist/services/menu-catalog.d.ts.map +1 -0
  184. package/dist/services/menu-catalog.js +183 -0
  185. package/dist/services/menu-catalog.js.map +1 -0
  186. package/dist/services/rich-text.d.ts +33 -0
  187. package/dist/services/rich-text.d.ts.map +1 -0
  188. package/dist/services/rich-text.js +134 -0
  189. package/dist/services/rich-text.js.map +1 -0
  190. package/dist/services/workflow-add-step.d.ts +45 -0
  191. package/dist/services/workflow-add-step.d.ts.map +1 -0
  192. package/dist/services/workflow-add-step.js +122 -0
  193. package/dist/services/workflow-add-step.js.map +1 -0
  194. package/dist/services/workflow-assign-flow.d.ts +109 -0
  195. package/dist/services/workflow-assign-flow.d.ts.map +1 -0
  196. package/dist/services/workflow-assign-flow.js +306 -0
  197. package/dist/services/workflow-assign-flow.js.map +1 -0
  198. package/dist/services/workflow-drawback.d.ts +19 -0
  199. package/dist/services/workflow-drawback.d.ts.map +1 -0
  200. package/dist/services/workflow-drawback.js +59 -0
  201. package/dist/services/workflow-drawback.js.map +1 -0
  202. package/dist/services/workflow-links.d.ts +51 -0
  203. package/dist/services/workflow-links.d.ts.map +1 -0
  204. package/dist/services/workflow-links.js +162 -0
  205. package/dist/services/workflow-links.js.map +1 -0
  206. package/dist/services/workflow-node-layout.d.ts +45 -4
  207. package/dist/services/workflow-node-layout.d.ts.map +1 -1
  208. package/dist/services/workflow-node-layout.js +142 -41
  209. package/dist/services/workflow-node-layout.js.map +1 -1
  210. package/dist/services/workflow-node-menu.d.ts +57 -0
  211. package/dist/services/workflow-node-menu.d.ts.map +1 -0
  212. package/dist/services/workflow-node-menu.js +144 -0
  213. package/dist/services/workflow-node-menu.js.map +1 -0
  214. package/dist/services/workflow-odoc-setting.d.ts +43 -0
  215. package/dist/services/workflow-odoc-setting.d.ts.map +1 -0
  216. package/dist/services/workflow-odoc-setting.js +100 -0
  217. package/dist/services/workflow-odoc-setting.js.map +1 -0
  218. package/dist/services/workflow-tab-config.d.ts +54 -0
  219. package/dist/services/workflow-tab-config.d.ts.map +1 -0
  220. package/dist/services/workflow-tab-config.js +137 -0
  221. package/dist/services/workflow-tab-config.js.map +1 -0
  222. package/dist/types.d.ts +5 -1
  223. package/dist/types.d.ts.map +1 -1
  224. package/package.json +1 -1
  225. package/skill-docs/SKILL.md +8 -7
  226. package/skill-docs/_catalog.md +81 -77
  227. package/skill-docs/actionflows/SKILL.md +170 -167
  228. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +39 -2
  229. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +42 -0
  230. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +33 -33
  231. package/skill-docs/actionflows/references/components/logic/Output.md +2 -0
  232. package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +16 -11
  233. package/skill-docs/assets/dom-structure/Bar.json +341 -0
  234. package/skill-docs/assets/dom-structure/BarStack.json +341 -0
  235. package/skill-docs/assets/dom-structure/Bubble.json +323 -0
  236. package/skill-docs/assets/dom-structure/Calendar.json +515 -0
  237. package/skill-docs/assets/dom-structure/Circular.json +337 -0
  238. package/skill-docs/assets/dom-structure/CollapsePanel.json +289 -0
  239. package/skill-docs/assets/dom-structure/Comment.json +617 -0
  240. package/skill-docs/assets/dom-structure/CountDown.json +755 -0
  241. package/skill-docs/assets/dom-structure/DigitalPanel.json +191 -0
  242. package/skill-docs/assets/dom-structure/EbButton.json +387 -0
  243. package/skill-docs/assets/dom-structure/FastCreate.json +242 -0
  244. package/skill-docs/assets/dom-structure/Gauge.json +282 -0
  245. package/skill-docs/assets/dom-structure/HBar.json +336 -0
  246. package/skill-docs/assets/dom-structure/HBarStack.json +337 -0
  247. package/skill-docs/assets/dom-structure/Line.json +341 -0
  248. package/skill-docs/assets/dom-structure/NList.json +712 -0
  249. package/skill-docs/assets/dom-structure/NavBar.json +274 -0
  250. package/skill-docs/assets/dom-structure/NavPanel.json +390 -0
  251. package/skill-docs/assets/dom-structure/NewTab.json +606 -0
  252. package/skill-docs/assets/dom-structure/Nightingale.json +336 -0
  253. package/skill-docs/assets/dom-structure/PageHeader.json +205 -0
  254. package/skill-docs/assets/dom-structure/Picture.json +209 -0
  255. package/skill-docs/assets/dom-structure/Pie.json +338 -0
  256. package/skill-docs/assets/dom-structure/ProgressChart.json +299 -0
  257. package/skill-docs/assets/dom-structure/SearchGlobal.json +628 -0
  258. package/skill-docs/assets/dom-structure/Slide.json +489 -0
  259. package/skill-docs/assets/dom-structure/Treemap.json +324 -0
  260. package/skill-docs/references/common/guide-plan-template.md +254 -251
  261. package/skill-docs/references/common/ref-cli-commands.md +537 -519
  262. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +12 -1
  263. package/skill-docs/references/ebuilder-designer/guide-designer-css.md +127 -0
  264. package/skill-docs/references/ebuilder-designer/guide-designer.md +6 -5
  265. package/skill-docs/references/form/guide-create-form.md +233 -232
  266. package/skill-docs/references/form/guide-form-formula-functions.md +11 -1
  267. package/skill-docs/references/form/guide-form-layout-planning.md +1 -1
  268. package/skill-docs/references/form/guide-form-linkage.md +28 -2
  269. package/skill-docs/references/form/guide-form-sub-detail.md +82 -0
  270. package/skill-docs/references/form/guide-list-custom-text.md +52 -0
  271. package/skill-docs/references/menu/system-menus.md +12 -0
  272. package/skill-docs/references/workflow/guide-workflow-auth-resp.md +198 -190
  273. package/skill-docs/references/workflow/guide-workflow-odoc.md +22 -2
  274. package/skill-docs/references/workflow/guide-workflow.md +25 -3
@@ -1,251 +1,254 @@
1
- # 搭建计划模板(plan.md 强制格式)
2
-
3
- > 这是 `plan.md` 的**强制模板**。写 plan.md 必须照此格式逐项梳理资源与规则,**禁止自创格式、禁止预勾 `[x]`**。
4
- > `[ ]` = 待办;执行阶段做完一项、验证通过,才改 `[x]` 并填实际 ID。全部 `[x]` 才算完工。
5
-
6
- ## 使用方法
7
-
8
- 1. 复制下方「plan.md 骨架」到工作区 `plan.md`
9
- 2. 按需求逐项填实(应用/表单/流程/出口条件清单/菜单/页面/必做项)
10
- 3. 规划阶段全部留 `[ ]`,拿给用户确认(此阶段不调 e10-cli 写命令,可 list/read 查现状)
11
- 4. 用户确认后逐项执行,每做完一项、验证通过,改 `[x]` 并填 ID——完成一条打勾一条
12
- 5. **执行每项前,先按 SKILL.md 决策树读对应 `references` 指南**——命令的完整参数/边界/坑/示例都在指南里,认真阅读再动手,不要凭印象直接调命令
13
-
14
- 流程明确使用权责表时,在对应流程下列明搭建方式、新建或复用的权责表、变量与字段映射,以及各分支的场景说明、条件、经过节点和顺序;详细配置读取 `references/workflow/guide-workflow-auth-resp.md`。
15
-
16
- ---
17
-
18
- ## plan.md 骨架
19
-
20
- ```md
21
- ## 搭建计划
22
-
23
- > ⚠️ `[ ]` 是待办,不是"已规划"。规划阶段全部留 `[ ]`;执行阶段做完一项、验证通过,才改 `[x]` 并填 ID。**完成一条打勾一条**,全部 `[x]` 才算完工。**禁止预勾 `[x]`**(=谎报完成)。勿依赖平台默认值——平台默认值≠方案要求。
24
- > **来源标注**:每张表/每个流程/每个节点用分组头声明(名称+ID 占位),其下 `[ ]` 项的来源即该分组;跨表的项内联标「来源: <表单/流程>」。
25
-
26
- ### 0. 环境
27
- - [ ] 鉴权 `e10-cli auth status`(profile 切换 `auth profile use` / 新环境 `auth set --eteamsid --base-url`)
28
-
29
- ### 1. 应用
30
- - [ ] <应用名> | `app create` | ID: 待创建
31
- > 默认一份完整业务方案落在一个主应用;需求明确指定已有应用、跨应用资源或独立业务边界时,按实际范围处理,并标明每项资源归属。
32
-
33
- ### 2. 角色(来源: 全应用)
34
- - [ ] <角色名> | `role create` + `role add-member <roleId> <keyword>` | 方案要求的每个角色都要建,不会自动有
35
-
36
- ---
37
-
38
- ### 3. 表单(每张表一组,逐张复制此分组)
39
-
40
- #### ▼ 表单:<表单名A> | objId: 待创建
41
-
42
- ##### 3.1 字段定义(按[新建 EBuilder 表单](../form/guide-create-form.md)整理,建表时通过 `form create --fields` 一次创建)
43
- - [ ] <表单名> | ID: 待创建
44
- 类型: 普通 EB 表单 / 虚拟表(虚拟表按[虚拟表创建与维护](../form/guide-virtual-form.md)记录来源和字段映射)
45
- 布局: FLOW(流式)/ EXCEL(表格,缺省)
46
- 字段:
47
- 1. 名称(Text, 必填)
48
- 2. 金额(Money, precision=2, 只读)
49
- 3. 备注(TextArea, 独占一行)
50
- 4. 客户名称(Text, group=基本信息, 必填)
51
- 5. 联系电话(Phone, group=基本信息)
52
- 6. 明细表(DetailTable, formFields:[...])
53
- 7. 关联客户(EBuilder, sformId+dataTitle)
54
- 8. 关联流程(Flow, sformId=<流程绑定的表单objId>) ← sformId 指向哪个流程表单,浏览时就只选该表单绑定的流程数据,创建时自动绑定
55
- - 选项/编号/默认值/精度/百分比/maxLen 建表时写全;单位无独立属性,**写进字段名**如 `工时单价(元)`
56
- - **布局与显示属性**:方案文档明确要求的必填(`required`)、只读(`readOnly`)、隐藏(`hidden`)、独占一行(`singleRow`)、分组(`group`)、字段顺序——全部标在字段清单里,建表时 fields.json 一并带上,勿留建后补。方案未提到的用默认(EXCEL 两列、不分组、不必填)
57
- - **日期区间**:字段本身包含起止含义时优先规划为 `DateRange`;明确分列或需独立参与公式、联动时再拆成两个日期字段
58
- - **字段多语言**:需求写成 `中文/English` 时,字段清单保留两种名称并注明“多语言”;创建时字段名只用中文,建成取得 fieldId 后执行 `form field-lang set --zh <中文> --en <English>`,不可把斜杠名称原样落库
59
- - 公式/值带出可 inline:`formula` / `relateFrom`
60
- - **Flow 字段**:`sformId` 是流程表单 objId(不是 workflowId),建表时写进 fields.json 即自动绑定——关联到哪个流程表单就只能选该范围的流程数据,无需单独配数据范围
61
- > 不要先建空表再 add-field——add-field/edit-field 只是**罕见补救手段**
62
-
63
- 虚拟表补充清单(普通 EB 表单删除本段):
64
- - [ ] 数据源定位 | 来源类别: EB 表单 / 系统业务表 / 数据加工 | 名称/ID: <来源>
65
- - [ ] 数据源预检 | 稳定 ID 校验通过
66
- - [ ] 字段映射 | <来源字段(dataKey/sourceFieldType)> → <虚拟表字段及兼容展示类型>
67
- - [ ] 虚拟表创建 | `form virtual create` | objId/formId: 待回填
68
-
69
- ##### 3.1.1 表单布局蓝图(按[表单布局规划](../form/guide-form-layout-planning.md)识别;需求提供完整布局样表时必填,否则标“— 未提供,使用默认布局”)
70
- - [ ] 布局类型:EXCEL / FLOW
71
- - [ ] 来源:<需求文档章节或表格标题>
72
- - [ ] 物理列结构:<如 4 列:标签|字段|标签|字段>
73
-
74
- | 行 | 类型 | 左侧单元 | 右侧单元 | 跨列/占位 | 原文属性与说明 |
75
- |---|---|---|---|---|---|
76
- | 1 | 标题 | <表单标题> | — | 跨全部列 | |
77
- | 2 | 字段 | <标签> → [<字段名>] | 空 | 右侧留空 | 只读 |
78
- | 3 | 分组 | <分组名> | — | 跨全部列 | |
79
- | 4 | 字段 | <标签> → [<字段名>] | <标签> → [<字段名>] | 双字段 | 必填;只读 |
80
-
81
- > 逐行记录标题、分组、字段同排关系、字段先后、空白占位和可确认的跨列信息;合并范围暂时无法确认时标为“待确认”。
82
- > 将蓝图中的必填、只读、公式、校验和联动同步写入字段定义或 3.2 表单级配置。
83
- > 执行时根据蓝图组织 `fields.json`,使用 EXCEL 布局完成创建和初始化;创建后读取实际布局并按需求调整局部位置或显示属性。
84
-
85
- ##### 3.2 表单级配置(来源: 本表单 <表单名A>;建表后逐项配齐,缺一项这张表不算完成)
86
- - [ ] 字段名称多语言 | `form field-lang set <objId> <appId> <fieldId> --zh <中文> --en <English>`(仅需求明确提供多语言名称时列出;先建中文字段再设置)
87
- - [ ] 复杂编号 | `form serial-mark set <objId> <appId> <fieldId> --segments @json`(纯建模表:fixed/year/serial/field/system/date+代字;⚠ 绑流程表无效→走 `workflow numbering`)
88
- - [ ] 值带出(关联表) | `form relate <appId> <objId> <目标字段> --from <Employee/Department源字段>`(换申请人→填邮箱/工号/部门;HRM属性带出,简单单源)
89
- - [ ] 值带出(跨表/多跳) | `form field-linkage add <appId> <objId> --trigger <触发字段> --target <目标字段> --hops "<源表objId:带出字段,源表objId:带出字段,...>"`(跨表查询带出,支持多跳链式中转;Text 字段必须多跳到名称表取名称不能直接赋 ID)
90
- - [ ] 关联显示列 | `form ebuilder-columns <objId> <appId> <fieldId> [字段名...]`(先不带参数看业务字段候选清单,去系统字段)
91
- - [ ] 关联数据范围 | `form ebuilder-scope set <objId> <appId> <fieldId> --rules '[...]'`(如客户状态=启用才可选)
92
- - [ ] 字段公式 | `form formula set --expression "DAYS({主表.开始},{主表.结束})" --target <fieldId>`(或 fields.json inline)
93
- - [ ] 查重校验 | `form validate add <objId> <appId> <字段名...>`(项目名称重名/工时日期重复)
94
- - [ ] 显隐联动 | `form linkage add <appId> <objId> <名> --config @json`(prop: hide/show/edit/readonly/required/hideLine)
95
- - [ ] 字段分组 | `form group <objId> <appId> --groups '{"基本信息":[...]}'`(建表时已用 group 则跳过)
96
- - [ ] 表单权限 | `form permission add <objId> <appId> --org-type <all/role/dept/...> --right-type <0/1/2/3>`(勿默认所有人)
97
- - [ ] 表单页按钮 | 名称/位置/来源页面/打开目标/字段映射 | `form button add`(固定URL、视图、布局或流程;[指南](../form/guide-form-button.md))
98
-
99
- ##### 3.3 台账/视图配置(来源: 本表单 <表单名A> 的台账;无需求标「— 无」)
100
- - [ ] 显示列批量设置 | `form list-columns <objId> <appId> <listId> --set @columns.json`([指南](../form/guide-list-columns.md))
101
- - [ ] 列单位 | `form list-unit <objId> <appId> <listId> <fieldId> "(元)"`
102
- - [ ] 列格式 | `form list-format <objId> <appId> <listId> <fieldId> [--thousandths] [--decimal <n>]`
103
- - [ ] 字段事件(列点击跳转) | `form list-click <objId> <appId> <listId> <fieldId> [--target <objId>]`
104
- - [ ] 搜索条件 | `form list-search <objId> <appId> <listId> [--add <f>] [--quick <f>]`
105
- - [ ] 排序 | `form list-sort <objId> <appId> <listId> [--field <f>] [--order ASC|DESC]`
106
- - [ ] 顶部统计(主表/明细) | `form list-stats <objId> <appId> <listId> --add @json`([指南](../form/guide-list-stats.md))
107
- - [ ] 视图数据条件 | `form list-filter <objId> <appId> <listId> --add '{"conditions":[...]}'`
108
- - [ ] 关联页签及目标视图 | `form association create <objId> <appId> <名> --view <viewId> --permissions @json`([指南](../form/guide-form-association.md))
109
- - [ ] 关联页签布局与终端 | `form association update <objId> <appId> <associationId> --layouts 显示 --terminals PC MOBILE`([指南](../form/guide-form-association.md))
110
- - [ ] 关联页签数据筛选 | `form association set-filter <objId> <appId> <associationId> --mappings @json`([指南](../form/guide-form-association.md))
111
- - [ ] 视图按钮 | 名称: <按钮名> | 来源视图: <名称/listId> | 位置: <行上/行末下拉/右上/右上下拉> | 动作: <打开视图/布局/流程/URL及目标ID> | 映射: <目标字段 ← 当前行来源字段;无则“无”> | `form button add` / `form button action-set`([指南](../form/guide-form-button.md))
112
- - [ ] 行事件(整行点击) | `form list-event <objId> <appId> <listId> --add-page '{...}'`
113
- - [ ] 视图启用分组 | `form list-group <objId> <appId> <listId> --enable --group-field <fieldId>`([指南](../form/guide-form-view.md))
114
- - [ ] 上下级树形展示 | `form list-hierarchy <objId> <appId> <listId> --enable --parent-field <自关联字段名或ID> --expand-level <层级>`(如根据“上级类型”展示;不同于普通字段分组,[指南](../form/guide-form-view.md))
115
- - [ ] 主表合并行 | `form list-merge <objId> <appId> <listId>`
116
- - [ ] 台账视图权限 | `form list-permission <objId> <appId> <listId> [--add-all|--add-user <id> --name <n>]`
117
- - [ ] 分类搜索 | `form list-search-group <objId> <appId> <listId> [--add <选项fieldId>]`
118
- - [ ] 自定义视图 | `form view create <objId> <appId> <名> --type kanbanView|calendarView|mindMapView|multiView` + `form view populate`
119
- - [ ] 表格视图 | 默认复用台账,记录实际名称/listId;额外新建才用 `form table-view create <objId> <appId> <名>`([指南](../form/guide-form-view.md))
120
- > 表单自带台账(搜索/筛选/导出/批量)。本节只列有需求的项;无需求标「— 无」
121
-
122
- #### ▼ 表单:<表单名B> | objId: 待创建
123
- (同上 3.1/3.2/3.3 复制)
124
-
125
- ---
126
-
127
- ### 4. 流程(每个流程一组,逐个复制此分组)
128
-
129
- #### ▼ 流程:<流程名A> | workflowId: 待创建
130
-
131
- - 流程体系:EB / 原生工作流程
132
- - 原生类型:普通 / 公文(EB 流程填“—”)
133
- - 流转模式:固定 / 自由
134
- - 表单来源:EB 表单 / 自建原生表单 / 已有原生 formId
135
-
136
- ##### 4.1 创建
137
- - [ ] 创建 | `workflow create <appId> <formObjId> <名>`(默认不加菜单;确认需要发起入口时 `--menu` 加)
138
- > 原生工作流程改用 `workflow create-workflow`;公文类型增加 `--odoc`。布局类型在表单来源后注明。
139
- > ⚠️ **流程级必做**:① 流程编号(`workflow numbering`);② 出口名称(`workflow link-rename`,改业务人话);③ 出口条件清单(见 4.3,先列全表再逐条创建,勿凭印象跳步)
140
-
141
- ##### 4.2 节点与连线(来源: 本流程 <流程名A>;每节点一行)
142
- > ⚠️ 操作者按需求语义用对应 `--type`(role/dept/position/superior/initiator/form/matrix/free/all),**禁止兜底成具体人员顶替**;名称解析不到先停下确认。
143
- - [ ] 节点1 | 操作者: 创建人
144
- - [ ] 节点2 | 操作者: 区域经理+部门领导(竞签) ← 「A或B审批」=一节点多人+竞签/非会签,不拆节点
145
- - [ ] 节点3 | 条件: <字段>=<值> 才走到,否则跳过/直达<节点>
146
- - [ ] 节点4 | 操作者: 角色X | 动作流: → <目标表>(add/update/delete, 映射: 源→目标)
147
- - [ ] 连线 | `workflow add-link/add-links <wf> <from> <to> <label>` [--reject 退回] [--default 默认]
148
-
149
- ###### 权责表设计(搭建方式为权责表时填写,替代普通节点与连线清单)
150
- - [ ] 权责表来源 | 流程内新建 / 复用已有 | 权责表:<名称> | authRespId:待回填
151
- - [ ] 首尾设置 | 发起:<类型及操作者> | 结束:<类型及操作者>
152
- - [ ] 中间节点 | <节点名称、类型、操作者>
153
- - [ ] 分支路径 | <场景说明> | 条件:<条件> | 路径:<节点及顺序>
154
- - [ ] 嵌套权责表 | <适用分支> | 引用:<权责表及版本> | 顺序:<序号>
155
- - [ ] 变量映射 | <权责表变量> → <当前流程表单字段> / 无需映射
156
- > 权责表方式流程的节点、分支条件和流转路径统一在权责表设计中维护;复用独立权责表时逐项列出变量映射。
157
-
158
- ##### 4.3 出口条件清单(来源: 本流程 <流程名A>;必填,动手前逐条列出,防遗漏)
159
- 段② 执行到条件时,先按此表列出所有连线的完整条件,逐条确认后再 `workflow condition add`:
160
-
161
- | 来源节点 | 目标节点 | 连线名 | 条件 | 来源 | 操作 | 值/右字段 | 明细量词 | 备注 |
162
- |---|---|---|---|---|---|---|---|---|
163
- | 发起 | 初审 | 部门初审 | 所属部门=财务部 | form:所属部门 | 等于 | 财务部 | — | |
164
- | 发起 | 初审 | 部门初审 | 报销金额5k~10k | form:报销金额 | 范围 | 5000:10000 | — | 数值范围 |
165
- | 发起 | 初审 | 部门初审 | 发起时间≥报销日期 | system:发起时间 | 大于等于 | field:报销日期 | — | 变量模式 |
166
- | 发起 | 初审 | 部门初审 | 报销类型∈{差旅,住宿} | form:报销类型 | 属于 | 差旅费,住宿费 | 任一 | 与下行OR |
167
- | 发起 | 初审 | 部门初审 | 同上OR组 | form:发票编号 | 包含 | FP | 任一 | 接上行OR |
168
-
169
- 要点:每行一条原子条件,OR 组拆多行备注"与下行OR";操作列 等于/大于/小于/范围/属于/包含/为空/不为空/field(变量模式);值列字面值直接写、`field:`前缀引用另一字段;明细量词 任一(任一行)/所有(所有行)/—(主表);创建完 `workflow condition list <wf>` 回读核对总数一致
170
-
171
- - [ ] 出口名 | `workflow link-rename <wf> <linkId> <业务人话>`(分支连线尤其要改)
172
-
173
- ##### 4.4 节点级配置(每个审批节点一组,逐个复制)
174
- ###### ▶ 节点:<节点名> | nodeId: 待创建
175
- - [ ] 操作者 | `workflow set-operator <wf> <node> [keyword] --type <user/role/dept/position/all/free/superior/initiator/prev-node/form/matrix> --sign-order <会签/竞签/依次/抄送>`(`--append` 多组叠加)
176
- - [ ] 提交校验 | `workflow node validate <wf> <node> --rule "字段 操作 值"`(跨表用"明细表名.字段",如 `行程明细.开始时间 等于 出差开始日期`)
177
- - [ ] 签字意见必填 | `workflow node sign <wf> <node> --select "退回"`(退回等操作类型必填意见)
178
- - [ ] 节点菜单 | `workflow node menu <wf> <node> --toggle <menuId>`
179
- - [ ] 退回设置 | `workflow node reject <wf> <node>`
180
- - [ ] 超时处理 | `workflow node timeout <wf> <node>`
181
- - [ ] 字段权限 | `workflow node field-permission set <wf> <node> --hide <字段...>`
182
-
183
- ##### 4.5 流程级设置(来源: 本流程 <流程名A>)
184
- - [ ] 公文设置 | 公文类型、正文、节点、附件、归档、签章、编号及 AI 等配置 | `workflow odoc setting set`(原生类型为公文时按实际需求填写)
185
- - [ ] 流程编号 | `workflow numbering set <wf> --prefix LC --serial 4 --no-year`(REQUEST_NO,绑流程表必走)
186
- - [ ] 流程标题 | `workflow setting title <wf> --rule "发起人|提交日期|客户名称"`(标题=流程名+系统字段则跳过)
187
- - [ ] 提交确认 | `workflow setting submit <wf>`
188
- - [ ] 签字意见 | `workflow setting sign <wf>`
189
- - [ ] 评论 | `workflow setting comment <wf> --enable`
190
- - [ ] 批量操作 | `workflow setting batch <wf>`
191
- - [ ] 自动处理 | `workflow setting auto <wf>`
192
- - [ ] 其他 | `workflow setting other <wf>`
193
- - [ ] 存档 | `workflow advanced doc <wf>`
194
- - [ ] 定时触发 | `workflow advanced schedule <wf>` + `schedule-range <wf>`(人员范围)
195
- - [ ] 消息提醒 | `workflow message create`(IM 提醒动作流)
196
-
197
- ##### 4.6 动作流(跨表写入/自动化)
198
- - [ ] 动作流生成 | `actionflow generate '{"planFile":"@plan.json",...}'`(来源: 本流程触发 → 目标: <目标表单>)
199
- - [ ] 节点字段赋值 | `workflow save-action @action.json`(来源: 本流程 <节点名>)
200
- - [ ] 数据来源落点 | 目标台账建 Flow 字段 `form add-field <目标台账objId> <app> "数据来源" Flow --sform-id <本流程表单objId>`(来源: 本流程 → 落点: <目标台账表单名>),add 时 `--sysvar` 写 requestId,**update/delete 也靠它定位**
201
-
202
- #### ▼ 流程:<流程名B> | workflowId: 待创建
203
- (同上 4.1-4.6 复制)
204
-
205
- ---
206
-
207
- ### 5. 菜单(来源: 应用)
208
- - [ ] 台账菜单 | 建表时需要入口则使用 `form create --menu`;未生成入口时用 `menu add-table <appId> <objId>` 补加(默认台账视图存在不等于菜单入口存在)
209
- - [ ] 发起菜单 | `menu add-start <appId> <formObjId>`(来源: <流程名>绑定的表单;workflow create 已自动加)
210
- - [ ] 自定义菜单 | `menu add <名> <path> <appId>`(LINK,ecode 页面)
211
- - [ ] 菜单权限 | `menu permission`(岗位/角色/部门/人员可见)
212
-
213
- ### 6. 页面(定制)
214
- - [ ] 无定制 | 标「### 页面(无需,表单自带台账)」
215
- - [ ] 定制页面 | Ecode `project create/import` + 页面编码(图表/跨表聚合/特殊交互)
216
-
217
- ### 7. 矩阵(HRM,按需)
218
- - [ ] <矩阵名> | `matrix create` + `config-edit` + `enable` + `data`(来源: 被 <流程名> 的 `set-operator --type matrix` 引用)
219
-
220
- ## 执行分段(最多三段,每段完成停下来让用户确认,确认后才进下一段)
221
- 以确认后的 `plan.md` 为执行清单,按资源依赖顺序逐项读取相关指南并完成配置;完成并核验一项,就立即勾选对应项并回填实际 ID 或结果。每段结束前检查本段应完成项是否全部销号,依赖后续资源的项目保留 `[ ]` 并注明依赖,不得提前勾选。
222
-
223
- - **段①:应用、角色、表单与视图。** 完成应用、角色、全部表单和表单布局,并配齐字段属性、关联、公式、联动、校验、权限、默认台账、新增视图、显示列、搜索排序、筛选统计、分组、上下级、按钮和关联页签等表单及视图相关配置。依赖流程 ID 的配置在 plan 中列明,待段②创建流程后回填。
224
- - **段②:流程与自动化。** 完成流程创建、节点连线、操作者、出口条件、节点配置、流程级设置、矩阵和动作流,并回填段①中依赖流程 ID 的表单字段、表单按钮和视图按钮。完成后确认流程结构及关键条件。
225
- - **段③:菜单与页面。** 完成台账、流程发起和自定义菜单,配置菜单权限,并按需求创建配置式页面或定制页面,绑定真实资源 ID 后完成保存、发布和整体收尾。
226
- - 简单单步需求(改字段、查数据)不分段,直接执行
227
- > **表单是流程的地基**:流程绑定表单、条件/动作流/操作者都引用字段,字段设计错了流程全返工——表单段必须确认后再进流程
228
-
229
- ## 规则备忘
230
- - **执行前读指南**:每个命令的完整参数/边界/示例在对应 `references` 文档(SKILL.md 决策树按关键词路由),动手前先读,勿凭印象调命令出错
231
- - Plan 阶段不调 e10-cli 写命令(可 list/read 查现状);必须写 plan.md 落地,不要只在对话里列方案
232
- - 应用数量:默认全需求只建 1 个应用,不按功能点拆;确需多应用先跟用户确认
233
- - 流程按节点逐行,操作者含签署方式/条件/动作流挂节点;**「A 或 B 审批」= 一节点多人 + 竞签/非会签,不拆节点**
234
- - 台账页面不用写,表单自带台账(搜索/筛选/导出/批量)
235
- - 表单字段一次性建好(`form create --fields`);需求明确的 singleRow/group 建表时写入,字段参数按 `references/form/ref-form-fields.md` 确定
236
- - 需求提供完整布局样表时,字段清单和“表单布局蓝图”必须同时存在:前者定义字段,后者保留空间结构;字段覆盖数、同排关系、分组顺序和原文说明应逐项对应
237
- ```
238
-
239
- ---
240
-
241
- ## 来源标注方式
242
-
243
- | 配置项类型 | 来源标注方式 |
244
- |----------|------------|
245
- | 表单级配置(3.2/3.3) | 分组头 `▼ 表单:<表单名A> | objId: 待创建`,其下项来源=该表单 |
246
- | 流程级配置(4.2/4.3/4.5) | 分组头 `▼ 流程:<流程名A> | workflowId: 待创建`,其下项来源=该流程 |
247
- | 节点级配置(4.4) | 子分组头 `▶ 节点:<节点名> | nodeId: 待创建`,其下项来源=该节点 |
248
- | 跨表项(动作流落点) | 内联标 `来源: 本流程 → 落点: <目标台账表单名>` |
249
- | 菜单/矩阵 | 内联标 `来源: <表单名>` / `被 <流程名> 引用` |
250
-
251
- 多张表/多个流程时,复制对应 `▼` 分组(每张表/每个流程一组),来源即分组头声明。每个 `[ ]` 都能看清属于哪个表单/流程/节点,不会把 A 表的配置错配到 B 表。
1
+ # 搭建计划模板(plan.md 强制格式)
2
+
3
+ > 这是 `plan.md` 的**强制模板**。写 plan.md 必须照此格式逐项梳理资源与规则,**禁止自创格式、禁止预勾 `[x]`**。
4
+ > `[ ]` = 待办;执行阶段做完一项、验证通过,才改 `[x]` 并填实际 ID。全部 `[x]` 才算完工。
5
+
6
+ ## 使用方法
7
+
8
+ 1. 复制下方「plan.md 骨架」到工作区 `plan.md`
9
+ 2. 按需求逐项填实(应用/表单/流程/出口条件清单/菜单/页面/必做项)
10
+ 3. 规划阶段全部留 `[ ]`,拿给用户确认(此阶段不调 e10-cli 写命令,可 list/read 查现状)
11
+ 4. 用户确认后逐项执行,每做完一项、验证通过,改 `[x]` 并填 ID——完成一条打勾一条
12
+ 5. **执行每项前,先按 SKILL.md 决策树读对应 `references` 指南**——命令的完整参数/边界/坑/示例都在指南里,认真阅读再动手,不要凭印象直接调命令
13
+
14
+ 流程明确使用权责表时,在对应流程下列明搭建方式、新建或复用的权责表、变量与字段映射,以及各分支的场景说明、条件、经过节点和顺序;详细配置读取 `references/workflow/guide-workflow-auth-resp.md`。
15
+
16
+ ---
17
+
18
+ ## plan.md 骨架
19
+
20
+ ```md
21
+ ## 搭建计划
22
+
23
+ > ⚠️ `[ ]` 是待办,不是"已规划"。规划阶段全部留 `[ ]`;执行阶段做完一项、验证通过,才改 `[x]` 并填 ID。**完成一条打勾一条**,全部 `[x]` 才算完工。**禁止预勾 `[x]`**(=谎报完成)。勿依赖平台默认值——平台默认值≠方案要求。
24
+ > **来源标注**:每张表/每个流程/每个节点用分组头声明(名称+ID 占位),其下 `[ ]` 项的来源即该分组;跨表的项内联标「来源: <表单/流程>」。
25
+
26
+ ### 0. 环境
27
+ - [ ] 鉴权 `e10-cli auth status`(profile 切换 `auth profile use` / 新环境 `auth set --eteamsid --base-url`)
28
+
29
+ ### 1. 应用
30
+ - [ ] <应用名> | `app create` | ID: 待创建
31
+ > 默认一份完整业务方案落在一个主应用;需求明确指定已有应用、跨应用资源或独立业务边界时,按实际范围处理,并标明每项资源归属。
32
+
33
+ ### 2. 角色(来源: 全应用)
34
+ - [ ] <角色名> | `role create` + `role add-member <roleId> <keyword>` | 方案要求的每个角色都要建,不会自动有
35
+
36
+ ---
37
+
38
+ ### 3. 表单(每张表一组,逐张复制此分组)
39
+
40
+ #### ▼ 表单:<表单名A> | objId: 待创建
41
+
42
+ ##### 3.1 字段定义(按[新建 EBuilder 表单](../form/guide-create-form.md)整理,建表时通过 `form create --fields` 一次创建)
43
+ - [ ] <表单名> | ID: 待创建
44
+ 类型: 普通 EB 表单 / 虚拟表(虚拟表按[虚拟表创建与维护](../form/guide-virtual-form.md)记录来源和字段映射)
45
+ 布局: FLOW(流式)/ EXCEL(表格,缺省)
46
+ 字段:
47
+ 1. 名称(Text, 必填)
48
+ 2. 金额(Money, precision=2, 只读)
49
+ 3. 备注(TextArea, 独占一行)
50
+ 4. 客户名称(Text, group=基本信息, 必填)
51
+ 5. 联系电话(Phone, group=基本信息)
52
+ 6. 明细表(DetailTable, formFields:[...])
53
+ 7. 关联客户(EBuilder, sformId+dataTitle)
54
+ 8. 关联流程(Flow, sformId=<流程绑定的表单objId>) ← sformId 指向哪个流程表单,浏览时就只选该表单绑定的流程数据,创建时自动绑定
55
+ - 选项/编号/默认值/精度/百分比/maxLen 建表时写全;单位无独立属性,**写进字段名**如 `工时单价(元)`
56
+ - **布局与显示属性**:方案文档明确要求的必填(`required`)、只读(`readOnly`)、隐藏(`hidden`)、独占一行(`singleRow`)、分组(`group`)、字段顺序——全部标在字段清单里,建表时 fields.json 一并带上,勿留建后补。方案未提到的用默认(EXCEL 两列、不分组、不必填)
57
+ - **日期区间**:字段本身包含起止含义时优先规划为 `DateRange`;明确分列或需独立参与公式、联动时再拆成两个日期字段
58
+ - **字段多语言**:需求写成 `中文/English` 时,字段清单保留两种名称并注明“多语言”;创建时字段名只用中文,建成取得 fieldId 后执行 `form field-lang set --zh <中文> --en <English>`,不可把斜杠名称原样落库
59
+ - 公式/值带出可 inline:`formula` / `relateFrom`
60
+ - **Flow 字段**:`sformId` 是流程表单 objId(不是 workflowId),建表时写进 fields.json 即自动绑定——关联到哪个流程表单就只能选该范围的流程数据,无需单独配数据范围
61
+ - **二级明细**:逐条列出“父明细 → 子明细”、父级行标识、子级文本行标识和是否默认展开;执行时先读取父明细的可选子明细,再按[二级明细表配置](../form/guide-form-sub-detail.md)创建并回读。
62
+ > 不要先建空表再 add-field——add-field/edit-field 只是**罕见补救手段**
63
+
64
+ 虚拟表补充清单(普通 EB 表单删除本段):
65
+ - [ ] 数据源定位 | 来源类别: EB 表单 / 系统业务表 / 数据加工 | 名称/ID: <来源>
66
+ - [ ] 数据源预检 | 稳定 ID 校验通过
67
+ - [ ] 字段映射 | <来源字段(dataKey/sourceFieldType)> → <虚拟表字段及兼容展示类型>
68
+ - [ ] 虚拟表创建 | `form virtual create` | objId/formId: 待回填
69
+
70
+ ##### 3.1.1 表单布局蓝图(按[表单布局规划](../form/guide-form-layout-planning.md)识别;需求提供完整布局样表时必填,否则标“— 未提供,使用默认布局”)
71
+ - [ ] 布局类型:EXCEL / FLOW
72
+ - [ ] 来源:<需求文档章节或表格标题>
73
+ - [ ] 物理列结构:<如 4 列:标签|字段|标签|字段>
74
+
75
+ | 行 | 类型 | 左侧单元 | 右侧单元 | 跨列/占位 | 原文属性与说明 |
76
+ |---|---|---|---|---|---|
77
+ | 1 | 标题 | <表单标题> | — | 跨全部列 | |
78
+ | 2 | 字段 | <标签> → [<字段名>] | 空 | 右侧留空 | 只读 |
79
+ | 3 | 分组 | <分组名> | — | 跨全部列 | |
80
+ | 4 | 字段 | <标签> → [<字段名>] | <标签> → [<字段名>] | 双字段 | 必填;只读 |
81
+
82
+ > 逐行记录标题、分组、字段同排关系、字段先后、空白占位和可确认的跨列信息;合并范围暂时无法确认时标为“待确认”。
83
+ > 将蓝图中的必填、只读、公式、校验和联动同步写入字段定义或 3.2 表单级配置。
84
+ > 执行时根据蓝图组织 `fields.json`,使用 EXCEL 布局完成创建和初始化;创建后读取实际布局并按需求调整局部位置或显示属性。
85
+
86
+ ##### 3.2 表单级配置(来源: 本表单 <表单名A>;建表后逐项配齐,缺一项这张表不算完成)
87
+ - [ ] 字段名称多语言 | `form field-lang set <objId> <appId> <fieldId> --zh <中文> --en <English>`(仅需求明确提供多语言名称时列出;先建中文字段再设置)
88
+ - [ ] 复杂编号 | `form serial-mark set <objId> <appId> <fieldId> --segments @json`(纯建模表:fixed/year/serial/field/system/date+代字;⚠ 绑流程表无效→走 `workflow numbering`)
89
+ - [ ] 值带出(关联表) | `form relate <appId> <objId> <目标字段> --from <Employee/Department源字段>`(换申请人→填邮箱/工号/部门;HRM属性带出,简单单源)
90
+ - [ ] 值带出(跨表/多跳) | `form field-linkage add <appId> <objId> --trigger <触发字段> --target <目标字段> --hops "<源表objId:带出字段,源表objId:带出字段,...>"`(跨表查询带出,支持多跳链式中转;Text 字段必须多跳到名称表取名称不能直接赋 ID)
91
+ - [ ] 关联显示列 | `form ebuilder-columns <objId> <appId> <fieldId> [字段名...]`(先不带参数看业务字段候选清单,去系统字段)
92
+ - [ ] 关联数据范围 | `form ebuilder-scope set <objId> <appId> <fieldId> --rules '[...]'`(如客户状态=启用才可选)
93
+ - [ ] 字段公式 | `form formula set --expression "DAYS({主表.开始},{主表.结束})" --target <fieldId>`(或 fields.json inline)
94
+ - [ ] 查重校验 | `form validate add <objId> <appId> <字段名...>`(项目名称重名/工时日期重复)
95
+ - [ ] 显隐联动 | `form linkage add <appId> <objId> <名> --config @json`(prop: hide/show/edit/readonly/required/hideLine)
96
+ - [ ] 字段分组 | `form group <objId> <appId> --groups '{"基本信息":[...]}'`(建表时已用 group 则跳过)
97
+ - [ ] 表单权限 | `form permission add <objId> <appId> --org-type <all/role/dept/...> --right-type <0/1/2/3>`(勿默认所有人)
98
+ - [ ] 表单页按钮 | 名称/位置/来源页面/打开目标/字段映射 | `form button add`(固定URL、视图、布局或流程;[指南](../form/guide-form-button.md))
99
+
100
+ ##### 3.3 台账/视图配置(来源: 本表单 <表单名A> 的台账;无需求标「— 无」)
101
+ - [ ] 显示列批量设置 | `form list-columns <objId> <appId> <listId> --set @columns.json`([指南](../form/guide-list-columns.md))
102
+ - [ ] 列单位 | `form list-unit <objId> <appId> <listId> <fieldId> "(元)"`
103
+ - [ ] 列格式 | `form list-format <objId> <appId> <listId> <fieldId> [--thousandths] [--decimal <n>]`
104
+ - [ ] 字段事件(列点击跳转) | `form list-click <objId> <appId> <listId> <fieldId> [--target <objId>]`
105
+ - [ ] 搜索条件 | `form list-search <objId> <appId> <listId> [--add <f>] [--quick <f>]`
106
+ - [ ] 排序 | `form list-sort <objId> <appId> <listId> [--field <f>] [--order ASC|DESC]`
107
+ - [ ] 顶部统计(主表/明细) | `form list-stats <objId> <appId> <listId> --add @json`([指南](../form/guide-list-stats.md))
108
+ - [ ] 视图数据条件 | `form list-filter <objId> <appId> <listId> --add '{"conditions":[...]}'`
109
+ - [ ] 关联页签及目标视图 | `form association create <objId> <appId> <名> --view <viewId> --permissions @json`([指南](../form/guide-form-association.md))
110
+ - [ ] 关联页签布局与终端 | `form association update <objId> <appId> <associationId> --layouts 显示 --terminals PC MOBILE`([指南](../form/guide-form-association.md))
111
+ - [ ] 关联页签数据筛选 | `form association set-filter <objId> <appId> <associationId> --mappings @json`([指南](../form/guide-form-association.md))
112
+ - [ ] 视图按钮 | 名称: <按钮名> | 来源视图: <名称/listId> | 位置: <行上/行末下拉/右上/右上下拉> | 动作: <打开视图/布局/流程/URL及目标ID> | 映射: <目标字段 ← 当前行来源字段;无则“无”> | `form button add` / `form button action-set`([指南](../form/guide-form-button.md))
113
+ - [ ] 行事件(整行点击) | `form list-event <objId> <appId> <listId> --add-page '{...}'`
114
+ - [ ] 视图启用分组 | `form list-group <objId> <appId> <listId> --enable --group-field <fieldId>`([指南](../form/guide-form-view.md))
115
+ - [ ] 上下级树形展示 | `form list-hierarchy <objId> <appId> <listId> --enable --parent-field <自关联字段名或ID> --expand-level <层级>`(如根据“上级类型”展示;不同于普通字段分组,[指南](../form/guide-form-view.md))
116
+ - [ ] 主表合并行 | `form list-merge <objId> <appId> <listId>`
117
+ - [ ] 台账视图权限 | `form list-permission <objId> <appId> <listId> [--add-all|--add-user <id> --name <n>]`
118
+ - [ ] 分类搜索 | `form list-search-group <objId> <appId> <listId> [--add <选项fieldId>]`
119
+ - [ ] 自定义视图 | `form view create <objId> <appId> <名> --type kanbanView|calendarView|mindMapView|multiView` + `form view populate`
120
+ - [ ] 表格视图 | 默认复用台账,记录实际名称/listId;额外新建才用 `form table-view create <objId> <appId> <名>`([指南](../form/guide-form-view.md))
121
+ > 表单自带台账(搜索/筛选/导出/批量)。本节只列有需求的项;无需求标「— 无」
122
+
123
+ #### ▼ 表单:<表单名B> | objId: 待创建
124
+ (同上 3.1/3.2/3.3 复制)
125
+
126
+ ---
127
+
128
+ ### 4. 流程(每个流程一组,逐个复制此分组)
129
+
130
+ #### ▼ 流程:<流程名A> | workflowId: 待创建
131
+
132
+ - 流程体系:EB / 原生工作流程
133
+ - 原生类型:普通 / 公文(EB 流程填“—”)
134
+ - 流转模式:固定 / 自由
135
+ - 表单来源:EB 表单 / 自建原生表单 / 已有原生 formId
136
+
137
+ ##### 4.1 创建
138
+ - [ ] 创建 | `workflow create <appId> <formObjId> <名>`(默认不加菜单;确认需要发起入口时 `--menu` 加)
139
+ > 原生工作流程改用 `workflow create-workflow`;公文类型增加 `--odoc`。布局类型在表单来源后注明。
140
+ > ⚠️ **流程级必做**:① 流程编号(`workflow numbering`);② 出口名称(`workflow link-rename`,改业务人话);③ 出口条件清单(见 4.3,先列全表再逐条创建,勿凭印象跳步)
141
+
142
+ ##### 4.2 节点与连线(来源: 本流程 <流程名A>;每节点一行)
143
+ > ⚠️ 操作者按需求语义用对应 `--type`(role/dept/position/superior/initiator/form/matrix/free/all),**禁止兜底成具体人员顶替**;名称解析不到先停下确认。
144
+ - [ ] 节点1 | 操作者: 创建人
145
+ - [ ] 节点2 | 操作者: 区域经理+部门领导(竞签) ← 「A或B审批」=一节点多人+竞签/非会签,不拆节点
146
+ - [ ] 节点3 | 条件: <字段>=<值> 才走到,否则跳过/直达<节点>
147
+ - [ ] 节点4 | 操作者: 角色X | 动作流: → <目标表>(add/update/delete, 映射: 源→目标)
148
+ - [ ] 连线 | `workflow add-links <wf> @links.json`(`reject`/`default` 逐条给;默认出口同源节点自动让位)
149
+ - [ ] 结构改完补排版 | `workflow auto-layout <wf>`(**加/删节点、加/删连线之后必跑**;建流程时自动跑过的那一次不算)
150
+
151
+ ###### 权责表设计(搭建方式为权责表时填写,替代普通节点与连线清单)
152
+ - [ ] 权责表来源 | 流程内新建 / 复用已有 | 权责表:<名称> | authRespId:待回填
153
+ - [ ] 首尾设置 | 发起:<类型及操作者> | 结束:<类型及操作者>
154
+ - [ ] 中间节点 | <节点名称、类型、操作者>
155
+ - [ ] 分支路径 | <场景说明> | 条件:<条件> | 路径:<节点及顺序>
156
+ - [ ] 嵌套权责表 | <适用分支> | 引用:<权责表及版本> | 顺序:<序号>
157
+ - [ ] 变量映射 | <权责表变量> → <当前流程表单字段> / 无需映射
158
+ > 权责表方式流程的节点、分支条件和流转路径统一在权责表设计中维护;复用独立权责表时逐项列出变量映射。
159
+
160
+ ##### 4.3 出口条件清单(来源: 本流程 <流程名A>;必填,动手前逐条列出,防遗漏)
161
+ 段② 执行到条件时,先按此表列出所有连线的完整条件,逐条确认后再 `workflow condition add`:
162
+
163
+ | 来源节点 | 目标节点 | 连线名 | 条件 | 来源 | 操作 | 值/右字段 | 明细量词 | 备注 |
164
+ |---|---|---|---|---|---|---|---|---|
165
+ | 发起 | 初审 | 部门初审 | 所属部门=财务部 | form:所属部门 | 等于 | 财务部 | — | |
166
+ | 发起 | 初审 | 部门初审 | 报销金额5k~10k | form:报销金额 | 范围 | 5000:10000 | — | 数值范围 |
167
+ | 发起 | 初审 | 部门初审 | 发起时间≥报销日期 | system:发起时间 | 大于等于 | field:报销日期 | — | 变量模式 |
168
+ | 发起 | 初审 | 部门初审 | 报销类型∈{差旅,住宿} | form:报销类型 | 属于 | 差旅费,住宿费 | 任一 | 与下行OR |
169
+ | 发起 | 初审 | 部门初审 | 同上OR组 | form:发票编号 | 包含 | FP | 任一 | 接上行OR |
170
+
171
+ 要点:每行一条原子条件,OR 组拆多行备注"与下行OR";操作列 等于/大于/小于/范围/属于/包含/为空/不为空/field(变量模式);值列字面值直接写、`field:`前缀引用另一字段;明细量词 任一(任一行)/所有(所有行)/—(主表);创建完 `workflow condition list <wf>` 回读核对总数一致
172
+
173
+ - [ ] 出口名 | `workflow link-rename <wf> <linkId> <业务人话>`(分支连线尤其要改)
174
+
175
+ ##### 4.4 节点级配置(每个审批节点一组,逐个复制)
176
+ ###### ▶ 节点:<节点名> | nodeId: 待创建
177
+ - [ ] 操作者 | `workflow set-operator <wf> <node> [keyword] --type <user/role/dept/position/all/free/superior/initiator/prev-node/form/matrix> --sign-order <会签/竞签/依次/抄送>`(`--append` 多组叠加)
178
+ - [ ] 提交校验 | `workflow node validate <wf> <node> --rule "字段 操作 值"`(跨表用"明细表名.字段",如 `行程明细.开始时间 等于 出差开始日期`)
179
+ - [ ] 签字意见必填 | `workflow node sign <wf> <node> --select "退回"`(退回等操作类型必填意见)
180
+ - [ ] 节点菜单 | `workflow node menu <wf> <node> --toggle <menuId>`
181
+ - [ ] 退回设置 | `workflow node reject <wf> <node>`
182
+ - [ ] 超时处理 | `workflow node timeout <wf> <node>`
183
+ - [ ] 字段权限 | `workflow node field-permission set <wf> <node> --hide <字段...>`
184
+
185
+ ##### 4.5 流程级设置(来源: 本流程 <流程名A>)
186
+ - [ ] 公文设置 | 公文类型、正文、节点、附件、归档、签章、编号及 AI 等配置 | `workflow odoc setting set`(原生类型为公文时按实际需求填写)
187
+ - [ ] 流程编号 | `workflow numbering set <wf> --prefix LC --serial 4 --no-year`(REQUEST_NO,绑流程表必走)
188
+ - [ ] 流程标题 | `workflow setting title <wf> --rule "发起人|提交日期|客户名称"`(标题=流程名+系统字段则跳过)
189
+ - [ ] 提交确认 | `workflow setting submit <wf>`
190
+ - [ ] 签字意见 | `workflow setting sign <wf>`
191
+ - [ ] 评论 | `workflow setting comment <wf> --enable`
192
+ - [ ] 批量操作 | `workflow setting batch <wf>`
193
+ - [ ] 自动处理 | `workflow setting auto <wf>`
194
+ - [ ] 其他 | `workflow setting other <wf>`
195
+ - [ ] 存档 | `workflow advanced doc <wf>`
196
+ - [ ] 定时触发 | `workflow advanced schedule <wf>` + `schedule-range <wf>`(人员范围)
197
+ - [ ] 消息提醒 | `workflow message create`(IM 提醒动作流)
198
+
199
+ ##### 4.6 动作流(跨表写入/自动化)
200
+ - [ ] 动作流生成 | `actionflow generate '{"planFile":"@plan.json",...}'`(来源: 本流程触发 → 目标: <目标表单>)
201
+ - [ ] 节点字段赋值 | `workflow save-action @action.json`(来源: 本流程 <节点名>)
202
+ - [ ] 数据来源落点 | 目标台账建 Flow 字段 `form add-field <目标台账objId> <app> "数据来源" Flow --sform-id <本流程表单objId>`(来源: 本流程 → 落点: <目标台账表单名>),add 时 `--sysvar` 写 requestId,**update/delete 也靠它定位**
203
+
204
+ #### ▼ 流程:<流程名B> | workflowId: 待创建
205
+ (同上 4.1-4.6 复制)
206
+
207
+ ---
208
+
209
+ ### 5. 菜单(来源: 应用)
210
+ - [ ] 台账菜单 | 建表时需要入口则使用 `form create --menu`;未生成入口时用 `menu add-table <appId> <objId>` 补加(默认台账视图存在不等于菜单入口存在)
211
+ - [ ] 发起菜单 | `menu add-start <appId> <formObjId>`(来源: <流程名>绑定的表单;workflow create 已自动加)
212
+ - [ ] 自定义菜单 | `menu add <名> <path> <appId>`(LINK,ecode 页面)
213
+ - [ ] 菜单权限 | `menu permission`(岗位/角色/部门/人员可见)
214
+
215
+ ### 6. 页面(定制)
216
+ - [ ] 无定制 | 标「### 页面(无需,表单自带台账)」
217
+ - [ ] 定制页面 | Ecode `project create/import` + 页面编码(图表/跨表聚合/特殊交互)
218
+
219
+ ### 7. 矩阵(HRM,按需)
220
+ - [ ] <矩阵名> | `matrix create` + `config-edit` + `enable` + `data`(来源: 被 <流程名> 的 `set-operator --type matrix` 引用)
221
+
222
+ ## 执行分段(最多三段,每段完成停下来让用户确认,确认后才进下一段)
223
+ 以确认后的 `plan.md` 为执行清单,按资源依赖顺序逐项读取相关指南并完成配置;完成并核验一项,就立即勾选对应项并回填实际 ID 或结果。每段结束前检查本段应完成项是否全部销号,依赖后续资源的项目保留 `[ ]` 并注明依赖,不得提前勾选。
224
+
225
+ - **段①:应用、角色、表单与视图。** 完成应用、角色、全部表单和表单布局,并配齐字段属性、关联、公式、联动、校验、权限、默认台账、新增视图、显示列、搜索排序、筛选统计、分组、上下级、按钮和关联页签等表单及视图相关配置。依赖流程 ID 的配置在 plan 中列明,待段②创建流程后回填。
226
+ - **段②:流程与自动化。** 完成流程创建、节点连线、操作者、出口条件、节点配置、流程级设置、矩阵和动作流,并回填段①中依赖流程 ID 的表单字段、表单按钮和视图按钮。完成后**补跑一次 `workflow auto-layout`**,再确认流程结构及关键条件。
227
+ - **段③:菜单与页面。** 完成台账、流程发起和自定义菜单,配置菜单权限,并按需求创建配置式页面或定制页面,绑定真实资源 ID 后完成保存、发布和整体收尾。
228
+ - 简单单步需求(改字段、查数据)不分段,直接执行
229
+ > **表单是流程的地基**:流程绑定表单、条件/动作流/操作者都引用字段,字段设计错了流程全返工——表单段必须确认后再进流程
230
+
231
+ ## 规则备忘
232
+ - **改完流程结构要补排版**:`workflow auto-layout <wf>` 只在 `create`/`create-workflow` 建流程时自动跑过一次,**之后一律不会顺带重跑**(add-node/add-link/delete-node/delete-link 都不跑)。所以 4.2 的最后一项别省 —— 加完分支线不补,图上就留着交叉。两个边界:① 它是**整图重排**,人在浏览器里拖过的坐标会被覆盖;② **不保证消除交叉**,跨层连线仍可能穿过中间层节点,跑完看一眼流程图,有交叉手工调。
233
+ - **执行前读指南**:每个命令的完整参数/边界/示例在对应 `references` 文档(SKILL.md 决策树按关键词路由),动手前先读,勿凭印象调命令出错
234
+ - Plan 阶段不调 e10-cli 写命令(可 list/read 查现状);必须写 plan.md 落地,不要只在对话里列方案
235
+ - 应用数量:默认全需求只建 1 个应用,不按功能点拆;确需多应用先跟用户确认
236
+ - 流程按节点逐行,操作者含签署方式/条件/动作流挂节点;**「A 或 B 审批」= 一节点多人 + 竞签/非会签,不拆节点**
237
+ - 台账页面不用写,表单自带台账(搜索/筛选/导出/批量)
238
+ - 表单字段一次性建好(`form create --fields`);需求明确的 singleRow/group 建表时写入,字段参数按 `references/form/ref-form-fields.md` 确定
239
+ - 需求提供完整布局样表时,字段清单和“表单布局蓝图”必须同时存在:前者定义字段,后者保留空间结构;字段覆盖数、同排关系、分组顺序和原文说明应逐项对应
240
+ ```
241
+
242
+ ---
243
+
244
+ ## 来源标注方式
245
+
246
+ | 配置项类型 | 来源标注方式 |
247
+ |----------|------------|
248
+ | 表单级配置(3.2/3.3) | 分组头 `▼ 表单:<表单名A> | objId: 待创建`,其下项来源=该表单 |
249
+ | 流程级配置(4.2/4.3/4.5) | 分组头 `▼ 流程:<流程名A> | workflowId: 待创建`,其下项来源=该流程 |
250
+ | 节点级配置(4.4) | 子分组头 `▶ 节点:<节点名> | nodeId: 待创建`,其下项来源=该节点 |
251
+ | 跨表项(动作流落点) | 内联标 `来源: 本流程 → 落点: <目标台账表单名>` |
252
+ | 菜单/矩阵 | 内联标 `来源: <表单名>` / `被 <流程名> 引用` |
253
+
254
+ 多张表/多个流程时,复制对应 `▼` 分组(每张表/每个流程一组),来源即分组头声明。每个 `[ ]` 都能看清属于哪个表单/流程/节点,不会把 A 表的配置错配到 B 表。