weaver-e10-builder 1.1.2 → 1.1.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 (191) hide show
  1. package/dist/commands/auth.d.ts.map +1 -1
  2. package/dist/commands/auth.js +2 -0
  3. package/dist/commands/auth.js.map +1 -1
  4. package/dist/commands/check.d.ts.map +1 -1
  5. package/dist/commands/check.js +48 -15
  6. package/dist/commands/check.js.map +1 -1
  7. package/dist/commands/designer-common.d.ts +56 -0
  8. package/dist/commands/designer-common.d.ts.map +1 -0
  9. package/dist/commands/designer-common.js +165 -0
  10. package/dist/commands/designer-common.js.map +1 -0
  11. package/dist/commands/designer-setters.d.ts +13 -0
  12. package/dist/commands/designer-setters.d.ts.map +1 -0
  13. package/dist/commands/designer-setters.js +593 -0
  14. package/dist/commands/designer-setters.js.map +1 -0
  15. package/dist/commands/designer.d.ts +17 -0
  16. package/dist/commands/designer.d.ts.map +1 -0
  17. package/dist/commands/designer.js +448 -0
  18. package/dist/commands/designer.js.map +1 -0
  19. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  20. package/dist/commands/form-add-detail-table.js +59 -0
  21. package/dist/commands/form-add-detail-table.js.map +1 -1
  22. package/dist/commands/form-association.d.ts.map +1 -1
  23. package/dist/commands/form-association.js +3 -2
  24. package/dist/commands/form-association.js.map +1 -1
  25. package/dist/commands/form-button.d.ts.map +1 -1
  26. package/dist/commands/form-button.js +86 -1
  27. package/dist/commands/form-button.js.map +1 -1
  28. package/dist/commands/form-data.d.ts.map +1 -1
  29. package/dist/commands/form-data.js +13 -1
  30. package/dist/commands/form-data.js.map +1 -1
  31. package/dist/commands/form-ebuilder-scope.js +3 -3
  32. package/dist/commands/form-ebuilder-scope.js.map +1 -1
  33. package/dist/commands/form-formula.js +4 -4
  34. package/dist/commands/form-formula.js.map +1 -1
  35. package/dist/commands/form-list-click.d.ts.map +1 -1
  36. package/dist/commands/form-list-click.js +30 -2
  37. package/dist/commands/form-list-click.js.map +1 -1
  38. package/dist/commands/form-list-filter.js +1 -1
  39. package/dist/commands/form-list-filter.js.map +1 -1
  40. package/dist/commands/form-list-hierarchy.d.ts +3 -0
  41. package/dist/commands/form-list-hierarchy.d.ts.map +1 -0
  42. package/dist/commands/form-list-hierarchy.js +133 -0
  43. package/dist/commands/form-list-hierarchy.js.map +1 -0
  44. package/dist/commands/form-list-permission.d.ts.map +1 -1
  45. package/dist/commands/form-list-permission.js +17 -3
  46. package/dist/commands/form-list-permission.js.map +1 -1
  47. package/dist/commands/form-list.d.ts.map +1 -1
  48. package/dist/commands/form-list.js +2 -0
  49. package/dist/commands/form-list.js.map +1 -1
  50. package/dist/commands/form-nlist.d.ts.map +1 -1
  51. package/dist/commands/form-nlist.js +47 -15
  52. package/dist/commands/form-nlist.js.map +1 -1
  53. package/dist/commands/form-option-template.d.ts +3 -0
  54. package/dist/commands/form-option-template.d.ts.map +1 -0
  55. package/dist/commands/form-option-template.js +291 -0
  56. package/dist/commands/form-option-template.js.map +1 -0
  57. package/dist/commands/form-permission.d.ts.map +1 -1
  58. package/dist/commands/form-permission.js +214 -2
  59. package/dist/commands/form-permission.js.map +1 -1
  60. package/dist/commands/form-view.d.ts.map +1 -1
  61. package/dist/commands/form-view.js +23 -1
  62. package/dist/commands/form-view.js.map +1 -1
  63. package/dist/commands/form.d.ts.map +1 -1
  64. package/dist/commands/form.js +259 -59
  65. package/dist/commands/form.js.map +1 -1
  66. package/dist/commands/icon.d.ts.map +1 -1
  67. package/dist/commands/icon.js +9 -13
  68. package/dist/commands/icon.js.map +1 -1
  69. package/dist/commands/menu-permission.d.ts.map +1 -1
  70. package/dist/commands/menu-permission.js +19 -12
  71. package/dist/commands/menu-permission.js.map +1 -1
  72. package/dist/commands/page.d.ts +14 -0
  73. package/dist/commands/page.d.ts.map +1 -0
  74. package/dist/commands/page.js +175 -0
  75. package/dist/commands/page.js.map +1 -0
  76. package/dist/commands/update.d.ts.map +1 -1
  77. package/dist/commands/update.js +29 -21
  78. package/dist/commands/update.js.map +1 -1
  79. package/dist/commands/wf-form.js +1 -1
  80. package/dist/commands/wf-form.js.map +1 -1
  81. package/dist/commands/workflow-condition.js +9 -8
  82. package/dist/commands/workflow-condition.js.map +1 -1
  83. package/dist/commands/workflow-node-overtime.d.ts.map +1 -1
  84. package/dist/commands/workflow-node-overtime.js +16 -8
  85. package/dist/commands/workflow-node-overtime.js.map +1 -1
  86. package/dist/commands/workflow-node.d.ts.map +1 -1
  87. package/dist/commands/workflow-node.js +35 -5
  88. package/dist/commands/workflow-node.js.map +1 -1
  89. package/dist/commands/workflow-numbering.d.ts.map +1 -1
  90. package/dist/commands/workflow-numbering.js +63 -30
  91. package/dist/commands/workflow-numbering.js.map +1 -1
  92. package/dist/commands/workflow-operator-sign.d.ts.map +1 -1
  93. package/dist/commands/workflow-operator-sign.js +2 -1
  94. package/dist/commands/workflow-operator-sign.js.map +1 -1
  95. package/dist/commands/workflow.d.ts.map +1 -1
  96. package/dist/commands/workflow.js +78 -38
  97. package/dist/commands/workflow.js.map +1 -1
  98. package/dist/core/client.d.ts +9 -0
  99. package/dist/core/client.d.ts.map +1 -1
  100. package/dist/core/client.js +16 -1
  101. package/dist/core/client.js.map +1 -1
  102. package/dist/index.js +6 -0
  103. package/dist/index.js.map +1 -1
  104. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  105. package/dist/services/actionflow/preflight_service.js +40 -17
  106. package/dist/services/actionflow/preflight_service.js.map +1 -1
  107. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  108. package/dist/services/actionflow/workflow_compiler.js +4 -2
  109. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  110. package/dist/services/form-button-action.d.ts +17 -0
  111. package/dist/services/form-button-action.d.ts.map +1 -0
  112. package/dist/services/form-button-action.js +111 -0
  113. package/dist/services/form-button-action.js.map +1 -0
  114. package/dist/services/form-create.d.ts +15 -1
  115. package/dist/services/form-create.d.ts.map +1 -1
  116. package/dist/services/form-create.js +40 -5
  117. package/dist/services/form-create.js.map +1 -1
  118. package/dist/services/form-list-stats.d.ts.map +1 -1
  119. package/dist/services/form-list-stats.js +29 -6
  120. package/dist/services/form-list-stats.js.map +1 -1
  121. package/dist/services/form-nlist.d.ts +8 -2
  122. package/dist/services/form-nlist.d.ts.map +1 -1
  123. package/dist/services/form-nlist.js +32 -7
  124. package/dist/services/form-nlist.js.map +1 -1
  125. package/dist/services/form-sub-detail.d.ts +36 -0
  126. package/dist/services/form-sub-detail.d.ts.map +1 -0
  127. package/dist/services/form-sub-detail.js +132 -0
  128. package/dist/services/form-sub-detail.js.map +1 -0
  129. package/dist/services/form-view.d.ts +6 -0
  130. package/dist/services/form-view.d.ts.map +1 -1
  131. package/dist/services/form-view.js +24 -0
  132. package/dist/services/form-view.js.map +1 -1
  133. package/dist/services/skill-provision.d.ts +9 -2
  134. package/dist/services/skill-provision.d.ts.map +1 -1
  135. package/dist/services/skill-provision.js +26 -1
  136. package/dist/services/skill-provision.js.map +1 -1
  137. package/dist/services/update-check.d.ts +11 -4
  138. package/dist/services/update-check.d.ts.map +1 -1
  139. package/dist/services/update-check.js +77 -23
  140. package/dist/services/update-check.js.map +1 -1
  141. package/dist/services/workflow-operator.d.ts +9 -0
  142. package/dist/services/workflow-operator.d.ts.map +1 -1
  143. package/dist/services/workflow-operator.js +33 -0
  144. package/dist/services/workflow-operator.js.map +1 -1
  145. package/package.json +1 -1
  146. package/skill-docs/SKILL.md +28 -46
  147. package/skill-docs/assets/factory/chart-dimensions.json +536 -0
  148. package/skill-docs/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  149. package/skill-docs/assets/factory/example-configured-2.json +13805 -0
  150. package/skill-docs/assets/factory/example-configured.json +6735 -0
  151. package/skill-docs/assets/factory/factory-bar-stack.json +326 -0
  152. package/skill-docs/assets/factory/factory-bar.json +222 -0
  153. package/skill-docs/assets/factory/factory-bubble.json +322 -0
  154. package/skill-docs/assets/factory/factory-calendar.json +325 -0
  155. package/skill-docs/assets/factory/factory-circular.json +320 -0
  156. package/skill-docs/assets/factory/factory-collapse-panel.json +132 -0
  157. package/skill-docs/assets/factory/factory-comment.json +388 -0
  158. package/skill-docs/assets/factory/factory-count-down.json +198 -0
  159. package/skill-docs/assets/factory/factory-digital-panel.json +108 -0
  160. package/skill-docs/assets/factory/factory-eb-button.json +150 -0
  161. package/skill-docs/assets/factory/factory-fast-create.json +62 -0
  162. package/skill-docs/assets/factory/factory-gauge.json +312 -0
  163. package/skill-docs/assets/factory/factory-h-bar-stack.json +328 -0
  164. package/skill-docs/assets/factory/factory-h-bar.json +326 -0
  165. package/skill-docs/assets/factory/factory-line.json +212 -0
  166. package/skill-docs/assets/factory/factory-nav-bar.json +167 -0
  167. package/skill-docs/assets/factory/factory-nav-menu.json +144 -0
  168. package/skill-docs/assets/factory/factory-nav-panel.json +338 -0
  169. package/skill-docs/assets/factory/factory-new-tab.json +163 -0
  170. package/skill-docs/assets/factory/factory-nightingale.json +312 -0
  171. package/skill-docs/assets/factory/factory-nlist.json +112 -0
  172. package/skill-docs/assets/factory/factory-page-header.json +171 -0
  173. package/skill-docs/assets/factory/factory-picture.json +169 -0
  174. package/skill-docs/assets/factory/factory-pie.json +212 -0
  175. package/skill-docs/assets/factory/factory-progress-chart.json +162 -0
  176. package/skill-docs/assets/factory/factory-search-global.json +104 -0
  177. package/skill-docs/assets/factory/factory-slide.json +164 -0
  178. package/skill-docs/assets/factory/factory-treemap.json +322 -0
  179. package/skill-docs/assets/icons.db +0 -0
  180. package/skill-docs/references/coding/guide-page-code.md +21 -1
  181. package/skill-docs/references/coding/ref-compile-rules.md +24 -0
  182. package/skill-docs/references/common/guide-plan-template.md +219 -201
  183. package/skill-docs/references/common/ref-cli-commands.md +366 -320
  184. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +110 -0
  185. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +460 -0
  186. package/skill-docs/references/ebuilder-designer/guide-designer-version.md +111 -0
  187. package/skill-docs/references/ebuilder-designer/guide-designer.md +287 -0
  188. package/skill-docs/references/form/guide-create-form.md +464 -409
  189. package/skill-docs/references/form/guide-form-button.md +82 -54
  190. package/skill-docs/references/form/guide-form-view.md +299 -284
  191. package/skill-docs/references/workflow/guide-workflow.md +59 -0
@@ -1,201 +1,219 @@
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
- ---
15
-
16
- ## plan.md 骨架
17
-
18
- ```md
19
- ## 搭建计划
20
-
21
- > ⚠️ `[ ]` 是待办,不是"已规划"。规划阶段全部留 `[ ]`;执行阶段做完一项、验证通过,才改 `[x]` 并填 ID。**完成一条打勾一条**,全部 `[x]` 才算完工。**禁止预勾 `[x]`**(=谎报完成)。勿依赖平台默认值——平台默认值≠方案要求。
22
- > **来源标注**:每张表/每个流程/每个节点用分组头声明(名称+ID 占位),其下 `[ ]` 项的来源即该分组;跨表的项内联标「来源: <表单/流程>」。
23
-
24
- ### 0. 环境
25
- - [ ] 鉴权 `e10-cli auth status`(profile 切换 `auth profile use` / 新环境 `auth set --eteamsid --base-url`)
26
-
27
- ### 1. 应用
28
- - [ ] <应用名> | `app create` | ID: 待创建
29
- > 一份需求只建这一个应用,所有表单/流程/菜单都在它下面。不要按功能点拆应用;确需多应用(分属不同业务系统)先跟用户确认。
30
-
31
- ### 2. 角色(来源: 全应用)
32
- - [ ] <角色名> | `role create` + `role add-member <roleId> <keyword>` | 方案要求的每个角色都要建,不会自动有
33
-
34
- ---
35
-
36
- ### 3. 表单(每张表一组,逐张复制此分组)
37
-
38
- #### ▼ 表单:<表单名A> | objId: 待创建
39
-
40
- ##### 3.1 字段定义(建表时一次性,`form create --fields` --layout FLOW|EXCEL)
41
- - [ ] <表单名> | ID: 待创建
42
- 布局: FLOW(流式)/ EXCEL(表格,缺省)
43
- 字段:
44
- 1. 名称(Text, 必填)
45
- 2. 金额(Money, precision=2, 只读)
46
- 3. 备注(TextArea, 独占一行)
47
- 4. 客户名称(Text, group=基本信息, 必填)
48
- 5. 联系电话(Phone, group=基本信息)
49
- 6. 明细表(DetailTable, formFields:[...])
50
- 7. 关联客户(EBuilder, sformId+dataTitle)
51
- 8. 关联流程(Flow, sformId=<流程绑定的表单objId>) ← sformId 指向哪个流程表单,浏览时就只选该表单绑定的流程数据,创建时自动绑定
52
- - 选项/编号/默认值/精度/百分比/maxLen 建表时写全;单位无独立属性,**写进字段名**如 `工时单价(元)`
53
- - **布局与显示属性**:方案文档明确要求的必填(`required`)、只读(`readOnly`)、隐藏(`hidden`)、独占一行(`singleRow`)、分组(`group`)、字段顺序——全部标在字段清单里,建表时 fields.json 一并带上,勿留建后补。方案未提到的用默认(EXCEL 两列、不分组、不必填)
54
- - 公式/值带出可 inline:`formula` / `relateFrom`
55
- - **Flow 字段**:`sformId` 是流程表单 objId(不是 workflowId),建表时写进 fields.json 即自动绑定——关联到哪个流程表单就只能选该范围的流程数据,无需单独配数据范围
56
- > 不要先建空表再 add-field——add-field/edit-field 只是**罕见补救手段**
57
-
58
- ##### 3.2 表单级配置(来源: 本表单 <表单名A>;建表后逐项配齐,缺一项这张表不算完成)
59
- - [ ] 复杂编号 | `form serial-mark set <objId> <appId> <fieldId> --segments @json`(纯建模表:fixed/year/serial/field/system/date+代字;⚠ 绑流程表无效→走 `workflow numbering`)
60
- - [ ] 值带出(关联表) | `form relate <appId> <objId> <目标字段> --from <Employee/Department源字段>`(换申请人→填邮箱/工号/部门;HRM属性带出,简单单源)
61
- - [ ] 值带出(跨表/多跳) | `form field-linkage add <appId> <objId> --trigger <触发字段> --target <目标字段> --hops "<源表objId:带出字段,源表objId:带出字段,...>"`(跨表查询带出,支持多跳链式中转;Text 字段必须多跳到名称表取名称不能直接赋 ID)
62
- - [ ] 关联显示列 | `form ebuilder-columns <objId> <appId> <fieldId> [字段名...]`(先不带参数看业务字段候选清单,去系统字段)
63
- - [ ] 关联数据范围 | `form ebuilder-scope set <objId> <appId> <fieldId> --rules '[...]'`(如客户状态=启用才可选)
64
- - [ ] 字段公式 | `form formula set --expression "DAYS({主表.开始},{主表.结束})" --target <fieldId>`(或 fields.json inline)
65
- - [ ] 查重校验 | `form validate add <objId> <appId> <字段名...>`(项目名称重名/工时日期重复)
66
- - [ ] 显隐联动 | `form linkage add <appId> <objId> <名> --config @json`(prop: hide/show/edit/readonly/required/hideLine)
67
- - [ ] 字段分组 | `form group <objId> <appId> --groups '{"基本信息":[...]}'`(建表时已用 group 则跳过)
68
- - [ ] 表单权限 | `form permission add <objId> <appId> --org-type <all/role/dept/...> --right-type <0/1/2/3>`(勿默认所有人)
69
- - [ ] 表单按钮 | `form button add <objId> <appId> <名> --url <url> --open-type <1/2/3>`
70
-
71
- ##### 3.3 台账/视图配置(来源: 本表单 <表单名A> 的台账;无需求标「— 无」)
72
- - [ ] 显示列批量设置 | `form list-columns <objId> <appId> <listId> --set @columns.json`([指南](../form/guide-list-columns.md))
73
- - [ ] 列单位 | `form list-unit <objId> <appId> <listId> <fieldId> "(元)"`
74
- - [ ] 列格式 | `form list-format <objId> <appId> <listId> <fieldId> [--thousandths] [--decimal <n>]`
75
- - [ ] 字段事件(列点击跳转) | `form list-click <objId> <appId> <listId> <fieldId> [--target <objId>]`
76
- - [ ] 搜索条件 | `form list-search <objId> <appId> <listId> [--add <f>] [--quick <f>]`
77
- - [ ] 排序 | `form list-sort <objId> <appId> <listId> [--field <f>] [--order ASC|DESC]`
78
- - [ ] 顶部统计(主表/明细) | `form list-stats <objId> <appId> <listId> --add @json`([指南](../form/guide-list-stats.md))
79
- - [ ] 视图数据条件 | `form list-filter <objId> <appId> <listId> --add '{"conditions":[...]}'`
80
- - [ ] 关联页签及目标视图 | `form association create <objId> <appId> <名> --view <viewId> --permissions @json`([指南](../form/guide-form-association.md))
81
- - [ ] 关联页签布局与终端 | `form association update <objId> <appId> <associationId> --layouts 显示 --terminals PC MOBILE`([指南](../form/guide-form-association.md))
82
- - [ ] 关联页签数据筛选 | `form association set-filter <objId> <appId> <associationId> --mappings @json`([指南](../form/guide-form-association.md))
83
- - [ ] 视图按钮显示位置 | `form button position <objId> <appId> <buttonId> --view <listId> --position 行上`([指南](../form/guide-form-button.md))
84
- - [ ] 行事件(整行点击) | `form list-event <objId> <appId> <listId> --add-page '{...}'`
85
- - [ ] 视图启用分组 | `form list-group <objId> <appId> <listId> --enable --group-field <fieldId>`([指南](../form/guide-form-view.md))
86
- - [ ] 主表合并行 | `form list-merge <objId> <appId> <listId>`
87
- - [ ] 台账视图权限 | `form list-permission <objId> <appId> <listId> [--add-all|--add-user <id> --name <n>]`
88
- - [ ] 分类搜索 | `form list-search-group <objId> <appId> <listId> [--add <选项fieldId>]`
89
- - [ ] 自定义视图 | `form view create <objId> <appId> <名> --type kanbanView|calendarView|mindMapView|multiView` + `form view populate`
90
- - [ ] 表格视图 | 默认复用台账,记录实际名称/listId;额外新建才用 `form table-view create <objId> <appId> <名>`([指南](../form/guide-form-view.md))
91
- > 表单自带台账(搜索/筛选/导出/批量)。本节只列有需求的项;无需求标「— 无」
92
-
93
- #### ▼ 表单:<表单名B> | objId: 待创建
94
- (同上 3.1/3.2/3.3 复制)
95
-
96
- ---
97
-
98
- ### 4. 流程(每个流程一组,逐个复制此分组)
99
-
100
- #### ▼ 流程:<流程名A> | workflowId: 待创建
101
-
102
- ##### 4.1 创建
103
- - [ ] 创建 | `workflow create <appId> <formObjId> <名>`(默认不加菜单;确认需要发起入口时 `--menu` 加)
104
- > ⚠️ **流程级必做**:① 流程编号(`workflow numbering`);② 出口名称(`workflow link-rename`,改业务人话);③ 出口条件清单(见 4.3,先列全表再逐条创建,勿凭印象跳步)
105
-
106
- ##### 4.2 节点与连线(来源: 本流程 <流程名A>;每节点一行)
107
- > ⚠️ 操作者按需求语义用对应 `--type`(role/dept/position/superior/initiator/form/matrix/free/all),**禁止兜底成具体人员顶替**;名称解析不到先停下确认。
108
- - [ ] 节点1 | 操作者: 创建人
109
- - [ ] 节点2 | 操作者: 区域经理+部门领导(竞签) ← 「A或B审批」=一节点多人+竞签/非会签,不拆节点
110
- - [ ] 节点3 | 条件: <字段>=<值> 才走到,否则跳过/直达<节点>
111
- - [ ] 节点4 | 操作者: 角色X | 动作流: → <目标表>(add/update/delete, 映射: 源→目标)
112
- - [ ] 连线 | `workflow add-link/add-links <wf> <from> <to> <label>` [--reject 退回] [--default 默认]
113
-
114
- ##### 4.3 出口条件清单(来源: 本流程 <流程名A>;必填,动手前逐条列出,防遗漏)
115
- 段② 执行到条件时,先按此表列出所有连线的完整条件,逐条确认后再 `workflow condition add`:
116
-
117
- | 来源节点 | 目标节点 | 连线名 | 条件 | 来源 | 操作 | 值/右字段 | 明细量词 | 备注 |
118
- |---|---|---|---|---|---|---|---|---|
119
- | 发起 | 初审 | 部门初审 | 所属部门=财务部 | form:所属部门 | 等于 | 财务部 | — | |
120
- | 发起 | 初审 | 部门初审 | 报销金额5k~10k | form:报销金额 | 范围 | 5000:10000 | — | 数值范围 |
121
- | 发起 | 初审 | 部门初审 | 发起时间≥报销日期 | system:发起时间 | 大于等于 | field:报销日期 | — | 变量模式 |
122
- | 发起 | 初审 | 部门初审 | 报销类型∈{差旅,住宿} | form:报销类型 | 属于 | 差旅费,住宿费 | 任一 | 与下行OR |
123
- | 发起 | 初审 | 部门初审 | 同上OR组 | form:发票编号 | 包含 | FP | 任一 | 接上行OR |
124
-
125
- 要点:每行一条原子条件,OR 组拆多行备注"与下行OR";操作列 等于/大于/小于/范围/属于/包含/为空/不为空/field(变量模式);值列字面值直接写、`field:`前缀引用另一字段;明细量词 任一(任一行)/所有(所有行)/—(主表);创建完 `workflow condition list <wf>` 回读核对总数一致
126
-
127
- - [ ] 出口名 | `workflow link-rename <wf> <linkId> <业务人话>`(分支连线尤其要改)
128
-
129
- ##### 4.4 节点级配置(每个审批节点一组,逐个复制)
130
- ###### ▶ 节点:<节点名> | nodeId: 待创建
131
- - [ ] 操作者 | `workflow set-operator <wf> <node> [keyword] --type <user/role/dept/position/all/free/superior/initiator/prev-node/form/matrix> --sign-order <会签/竞签/依次/抄送>`(`--append` 多组叠加)
132
- - [ ] 提交校验 | `workflow node validate <wf> <node> --rule "字段 操作 值"`(跨表用"明细表名.字段",如 `行程明细.开始时间 等于 出差开始日期`)
133
- - [ ] 签字意见必填 | `workflow node sign <wf> <node> --select "退回"`(退回等操作类型必填意见)
134
- - [ ] 节点菜单 | `workflow node menu <wf> <node> --toggle <menuId>`
135
- - [ ] 退回设置 | `workflow node reject <wf> <node>`
136
- - [ ] 超时处理 | `workflow node timeout <wf> <node>`
137
- - [ ] 字段权限 | `workflow node field-permission set <wf> <node> --hide <字段...>`
138
-
139
- ##### 4.5 流程级设置(来源: 本流程 <流程名A>)
140
- - [ ] 流程编号 | `workflow numbering set <wf> --prefix LC --serial 4 --no-year`(REQUEST_NO,绑流程表必走)
141
- - [ ] 流程标题 | `workflow setting title <wf> --rule "发起人|提交日期|客户名称"`(标题=流程名+系统字段则跳过)
142
- - [ ] 提交确认 | `workflow setting submit <wf>`
143
- - [ ] 签字意见 | `workflow setting sign <wf>`
144
- - [ ] 评论 | `workflow setting comment <wf> --enable`
145
- - [ ] 批量操作 | `workflow setting batch <wf>`
146
- - [ ] 自动处理 | `workflow setting auto <wf>`
147
- - [ ] 其他 | `workflow setting other <wf>`
148
- - [ ] 存档 | `workflow advanced doc <wf>`
149
- - [ ] 定时触发 | `workflow advanced schedule <wf>` + `schedule-range <wf>`(人员范围)
150
- - [ ] 消息提醒 | `workflow message create`(IM 提醒动作流)
151
-
152
- ##### 4.6 动作流(跨表写入/自动化)
153
- - [ ] 动作流生成 | `actionflow generate '{"planFile":"@plan.json",...}'`(来源: 本流程触发 → 目标: <目标表单>)
154
- - [ ] 节点字段赋值 | `workflow save-action @action.json`(来源: 本流程 <节点名>)
155
- - [ ] 数据来源落点 | 目标台账建 Flow 字段 `form add-field <目标台账objId> <app> "数据来源" Flow --sform-id <本流程表单objId>`(来源: 本流程 → 落点: <目标台账表单名>),add 时 `--sysvar` 写 requestId,**update/delete 也靠它定位**
156
-
157
- #### ▼ 流程:<流程名B> | workflowId: 待创建
158
- (同上 4.1-4.6 复制)
159
-
160
- ---
161
-
162
- ### 5. 菜单(来源: 应用)
163
- - [ ] 台账菜单 | `menu add-table <appId> <objId>`(来源: <表单名>;form create 已自动加,补加用此)
164
- - [ ] 发起菜单 | `menu add-start <appId> <formObjId>`(来源: <流程名>绑定的表单;workflow create 已自动加)
165
- - [ ] 自定义菜单 | `menu add <名> <path> <appId>`(LINK,ecode 页面)
166
- - [ ] 菜单权限 | `menu permission`(岗位/角色/部门/人员可见)
167
-
168
- ### 6. 页面(定制)
169
- - [ ] 无定制 | 标「### 页面(无需,表单自带台账)」
170
- - [ ] 定制页面 | Ecode `project create/import` + 页面编码(图表/跨表聚合/特殊交互)
171
-
172
- ### 7. 矩阵(HRM,按需)
173
- - [ ] <矩阵名> | `matrix create` + `config-edit` + `enable` + `data`(来源: 被 <流程名> 的 `set-operator --type matrix` 引用)
174
-
175
- ## 执行分段(最多三段,每段完成停下来让用户确认,确认后才进下一段)
176
- - 段① 应用+角色+全部表单(建表 + 3.2 表内项配齐,**缺一项这张表不算完成**)→ 确认字段设计 → 段② 流程(先列出口条件清单→逐条 `condition add`→`condition list` 回读核对)→ 确认流程 → 段③ 菜单+页面
177
- - 简单单步需求(改字段、查数据)不分段,直接执行
178
- > **表单是流程的地基**:流程绑定表单、条件/动作流/操作者都引用字段,字段设计错了流程全返工——表单段必须确认后再进流程
179
-
180
- ## 规则备忘
181
- - **执行前读指南**:每个命令的完整参数/边界/示例在对应 `references` 文档(SKILL.md 决策树按关键词路由),动手前先读,勿凭印象调命令出错
182
- - Plan 阶段不调 e10-cli 写命令(可 list/read 查现状);必须写 plan.md 落地,不要只在对话里列方案
183
- - 应用数量:默认全需求只建 1 个应用,不按功能点拆;确需多应用先跟用户确认
184
- - 流程按节点逐行,操作者含签署方式/条件/动作流挂节点;**「A 或 B 审批」= 一节点多人 + 竞签/非会签,不拆节点**
185
- - 台账页面不用写,表单自带台账(搜索/筛选/导出/批量)
186
- - 表单字段一次性建好(`form create --fields`),singleRow/group 建表时定,勿留建后补
187
- ```
188
-
189
- ---
190
-
191
- ## 来源标注方式
192
-
193
- | 配置项类型 | 来源标注方式 |
194
- |----------|------------|
195
- | 表单级配置(3.2/3.3) | 分组头 `▼ 表单:<表单名A> | objId: 待创建`,其下项来源=该表单 |
196
- | 流程级配置(4.2/4.3/4.5) | 分组头 `▼ 流程:<流程名A> | workflowId: 待创建`,其下项来源=该流程 |
197
- | 节点级配置(4.4) | 子分组头 `▶ 节点:<节点名> | nodeId: 待创建`,其下项来源=该节点 |
198
- | 跨表项(动作流落点) | 内联标 `来源: 本流程 → 落点: <目标台账表单名>` |
199
- | 菜单/矩阵 | 内联标 `来源: <表单名>` / `被 <流程名> 引用` |
200
-
201
- 多张表/多个流程时,复制对应 `▼` 分组(每张表/每个流程一组),来源即分组头声明。每个 `[ ]` 都能看清属于哪个表单/流程/节点,不会把 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
+ ---
15
+
16
+ ## plan.md 骨架
17
+
18
+ ```md
19
+ ## 搭建计划
20
+
21
+ > ⚠️ `[ ]` 是待办,不是"已规划"。规划阶段全部留 `[ ]`;执行阶段做完一项、验证通过,才改 `[x]` 并填 ID。**完成一条打勾一条**,全部 `[x]` 才算完工。**禁止预勾 `[x]`**(=谎报完成)。勿依赖平台默认值——平台默认值≠方案要求。
22
+ > **来源标注**:每张表/每个流程/每个节点用分组头声明(名称+ID 占位),其下 `[ ]` 项的来源即该分组;跨表的项内联标「来源: <表单/流程>」。
23
+
24
+ ### 0. 环境
25
+ - [ ] 鉴权 `e10-cli auth status`(profile 切换 `auth profile use` / 新环境 `auth set --eteamsid --base-url`)
26
+
27
+ ### 1. 应用
28
+ - [ ] <应用名> | `app create` | ID: 待创建
29
+ > 默认一份完整业务方案落在一个主应用;需求明确指定已有应用、跨应用资源或独立业务边界时,按实际范围处理,并标明每项资源归属。
30
+
31
+ ### 2. 角色(来源: 全应用)
32
+ - [ ] <角色名> | `role create` + `role add-member <roleId> <keyword>` | 方案要求的每个角色都要建,不会自动有
33
+
34
+ ---
35
+
36
+ ### 3. 表单(每张表一组,逐张复制此分组)
37
+
38
+ #### ▼ 表单:<表单名A> | objId: 待创建
39
+
40
+ ##### 3.1 字段定义(建表时一次性,`form create --fields` --layout FLOW|EXCEL)
41
+ - [ ] <表单名> | ID: 待创建
42
+ 布局: FLOW(流式)/ EXCEL(表格,缺省)
43
+ 字段:
44
+ 1. 名称(Text, 必填)
45
+ 2. 金额(Money, precision=2, 只读)
46
+ 3. 备注(TextArea, 独占一行)
47
+ 4. 客户名称(Text, group=基本信息, 必填)
48
+ 5. 联系电话(Phone, group=基本信息)
49
+ 6. 明细表(DetailTable, formFields:[...])
50
+ 7. 关联客户(EBuilder, sformId+dataTitle)
51
+ 8. 关联流程(Flow, sformId=<流程绑定的表单objId>) ← sformId 指向哪个流程表单,浏览时就只选该表单绑定的流程数据,创建时自动绑定
52
+ - 选项/编号/默认值/精度/百分比/maxLen 建表时写全;单位无独立属性,**写进字段名**如 `工时单价(元)`
53
+ - **布局与显示属性**:方案文档明确要求的必填(`required`)、只读(`readOnly`)、隐藏(`hidden`)、独占一行(`singleRow`)、分组(`group`)、字段顺序——全部标在字段清单里,建表时 fields.json 一并带上,勿留建后补。方案未提到的用默认(EXCEL 两列、不分组、不必填)
54
+ - 公式/值带出可 inline:`formula` / `relateFrom`
55
+ - **Flow 字段**:`sformId` 是流程表单 objId(不是 workflowId),建表时写进 fields.json 即自动绑定——关联到哪个流程表单就只能选该范围的流程数据,无需单独配数据范围
56
+ > 不要先建空表再 add-field——add-field/edit-field 只是**罕见补救手段**
57
+
58
+ ##### 3.1.1 表单布局蓝图(需求提供完整布局样表时必填;否则标“— 未提供,使用默认布局”)
59
+ - [ ] 布局类型:EXCEL / FLOW
60
+ - [ ] 来源:<需求文档章节或表格标题>
61
+ - [ ] 物理列结构:<如 4 列:标签|字段|标签|字段>
62
+
63
+ | 行 | 类型 | 左侧单元 | 右侧单元 | 跨列/占位 | 原文属性与说明 |
64
+ |---|---|---|---|---|---|
65
+ | 1 | 标题 | <表单标题> | — | 跨全部列 | |
66
+ | 2 | 字段 | <标签> → [<字段名>] | 空 | 右侧留空 | 只读 |
67
+ | 3 | 分组 | <分组名> | — | 跨全部列 | |
68
+ | 4 | 字段 | <标签> → [<字段名>] | <标签> → [<字段名>] | 双字段 | 必填;只读 |
69
+
70
+ > 逐行保留标题、分组、字段同排关系、字段先后、空白占位和可确认的跨列信息。`group`、`singleRow`、字段数组顺序不能替代此蓝图。Markdown 无法确认合并范围时写“待确认”,不要猜测。
71
+ > 蓝图中的必填/只读/公式/校验/联动还必须同步进入字段定义或 3.2 表单级配置,不能只留在布局表中。
72
+ > 本蓝图仅用于保存需求和指导执行,不单独提交人工审核,也不增加确认步骤;它不是 CLI JSON 入参。执行时据此组织 `fields.json` 并用现有 EXCEL 初始化创建,创建后仅在实际需要时按当前布局逐项调整。
73
+
74
+ ##### 3.2 表单级配置(来源: 本表单 <表单名A>;建表后逐项配齐,缺一项这张表不算完成)
75
+ - [ ] 复杂编号 | `form serial-mark set <objId> <appId> <fieldId> --segments @json`(纯建模表:fixed/year/serial/field/system/date+代字;⚠ 绑流程表无效→走 `workflow numbering`)
76
+ - [ ] 值带出(关联表) | `form relate <appId> <objId> <目标字段> --from <Employee/Department源字段>`(换申请人→填邮箱/工号/部门;HRM属性带出,简单单源)
77
+ - [ ] 值带出(跨表/多跳) | `form field-linkage add <appId> <objId> --trigger <触发字段> --target <目标字段> --hops "<源表objId:带出字段,源表objId:带出字段,...>"`(跨表查询带出,支持多跳链式中转;Text 字段必须多跳到名称表取名称不能直接赋 ID)
78
+ - [ ] 关联显示列 | `form ebuilder-columns <objId> <appId> <fieldId> [字段名...]`(先不带参数看业务字段候选清单,去系统字段)
79
+ - [ ] 关联数据范围 | `form ebuilder-scope set <objId> <appId> <fieldId> --rules '[...]'`(如客户状态=启用才可选)
80
+ - [ ] 字段公式 | `form formula set --expression "DAYS({主表.开始},{主表.结束})" --target <fieldId>`(或 fields.json inline)
81
+ - [ ] 查重校验 | `form validate add <objId> <appId> <字段名...>`(项目名称重名/工时日期重复)
82
+ - [ ] 显隐联动 | `form linkage add <appId> <objId> <名> --config @json`(prop: hide/show/edit/readonly/required/hideLine)
83
+ - [ ] 字段分组 | `form group <objId> <appId> --groups '{"基本信息":[...]}'`(建表时已用 group 则跳过)
84
+ - [ ] 表单权限 | `form permission add <objId> <appId> --org-type <all/role/dept/...> --right-type <0/1/2/3>`(勿默认所有人)
85
+ - [ ] 表单页按钮 | 名称/位置/来源页面/打开目标/字段映射 | `form button add`(固定URL、视图、布局或流程;[指南](../form/guide-form-button.md))
86
+
87
+ ##### 3.3 台账/视图配置(来源: 本表单 <表单名A> 的台账;无需求标「— 无」)
88
+ - [ ] 显示列批量设置 | `form list-columns <objId> <appId> <listId> --set @columns.json`([指南](../form/guide-list-columns.md))
89
+ - [ ] 列单位 | `form list-unit <objId> <appId> <listId> <fieldId> "(元)"`
90
+ - [ ] 列格式 | `form list-format <objId> <appId> <listId> <fieldId> [--thousandths] [--decimal <n>]`
91
+ - [ ] 字段事件(列点击跳转) | `form list-click <objId> <appId> <listId> <fieldId> [--target <objId>]`
92
+ - [ ] 搜索条件 | `form list-search <objId> <appId> <listId> [--add <f>] [--quick <f>]`
93
+ - [ ] 排序 | `form list-sort <objId> <appId> <listId> [--field <f>] [--order ASC|DESC]`
94
+ - [ ] 顶部统计(主表/明细) | `form list-stats <objId> <appId> <listId> --add @json`([指南](../form/guide-list-stats.md))
95
+ - [ ] 视图数据条件 | `form list-filter <objId> <appId> <listId> --add '{"conditions":[...]}'`
96
+ - [ ] 关联页签及目标视图 | `form association create <objId> <appId> <名> --view <viewId> --permissions @json`([指南](../form/guide-form-association.md))
97
+ - [ ] 关联页签布局与终端 | `form association update <objId> <appId> <associationId> --layouts 显示 --terminals PC MOBILE`([指南](../form/guide-form-association.md))
98
+ - [ ] 关联页签数据筛选 | `form association set-filter <objId> <appId> <associationId> --mappings @json`([指南](../form/guide-form-association.md))
99
+ - [ ] 视图按钮 | 名称: <按钮名> | 来源视图: <名称/listId> | 位置: <行上/行末下拉/右上/右上下拉> | 动作: <打开视图/布局/流程/URL及目标ID> | 映射: <目标字段 ← 当前行来源字段;无则“无”> | `form button add` / `form button action-set`([指南](../form/guide-form-button.md))
100
+ - [ ] 行事件(整行点击) | `form list-event <objId> <appId> <listId> --add-page '{...}'`
101
+ - [ ] 视图启用分组 | `form list-group <objId> <appId> <listId> --enable --group-field <fieldId>`([指南](../form/guide-form-view.md))
102
+ - [ ] 上下级树形展示 | `form list-hierarchy <objId> <appId> <listId> --enable --parent-field <自关联字段名或ID> --expand-level <层级>`(如根据“上级类型”展示;不同于普通字段分组,[指南](../form/guide-form-view.md))
103
+ - [ ] 主表合并行 | `form list-merge <objId> <appId> <listId>`
104
+ - [ ] 台账视图权限 | `form list-permission <objId> <appId> <listId> [--add-all|--add-user <id> --name <n>]`
105
+ - [ ] 分类搜索 | `form list-search-group <objId> <appId> <listId> [--add <选项fieldId>]`
106
+ - [ ] 自定义视图 | `form view create <objId> <appId> <名> --type kanbanView|calendarView|mindMapView|multiView` + `form view populate`
107
+ - [ ] 表格视图 | 默认复用台账,记录实际名称/listId;额外新建才用 `form table-view create <objId> <appId> <名>`([指南](../form/guide-form-view.md))
108
+ > 表单自带台账(搜索/筛选/导出/批量)。本节只列有需求的项;无需求标「— 无」
109
+
110
+ #### ▼ 表单:<表单名B> | objId: 待创建
111
+ (同上 3.1/3.2/3.3 复制)
112
+
113
+ ---
114
+
115
+ ### 4. 流程(每个流程一组,逐个复制此分组)
116
+
117
+ #### ▼ 流程:<流程名A> | workflowId: 待创建
118
+
119
+ ##### 4.1 创建
120
+ - [ ] 创建 | `workflow create <appId> <formObjId> <名>`(默认不加菜单;确认需要发起入口时 `--menu` 加)
121
+ > ⚠️ **流程级必做**:① 流程编号(`workflow numbering`);② 出口名称(`workflow link-rename`,改业务人话);③ 出口条件清单(见 4.3,先列全表再逐条创建,勿凭印象跳步)
122
+
123
+ ##### 4.2 节点与连线(来源: 本流程 <流程名A>;每节点一行)
124
+ > ⚠️ 操作者按需求语义用对应 `--type`(role/dept/position/superior/initiator/form/matrix/free/all),**禁止兜底成具体人员顶替**;名称解析不到先停下确认。
125
+ - [ ] 节点1 | 操作者: 创建人
126
+ - [ ] 节点2 | 操作者: 区域经理+部门领导(竞签) ← 「A或B审批」=一节点多人+竞签/非会签,不拆节点
127
+ - [ ] 节点3 | 条件: <字段>=<值> 才走到,否则跳过/直达<节点>
128
+ - [ ] 节点4 | 操作者: 角色X | 动作流: → <目标表>(add/update/delete, 映射: 源→目标)
129
+ - [ ] 连线 | `workflow add-link/add-links <wf> <from> <to> <label>` [--reject 退回] [--default 默认]
130
+
131
+ ##### 4.3 出口条件清单(来源: 本流程 <流程名A>;必填,动手前逐条列出,防遗漏)
132
+ 段② 执行到条件时,先按此表列出所有连线的完整条件,逐条确认后再 `workflow condition add`:
133
+
134
+ | 来源节点 | 目标节点 | 连线名 | 条件 | 来源 | 操作 | 值/右字段 | 明细量词 | 备注 |
135
+ |---|---|---|---|---|---|---|---|---|
136
+ | 发起 | 初审 | 部门初审 | 所属部门=财务部 | form:所属部门 | 等于 | 财务部 | — | |
137
+ | 发起 | 初审 | 部门初审 | 报销金额5k~10k | form:报销金额 | 范围 | 5000:10000 | — | 数值范围 |
138
+ | 发起 | 初审 | 部门初审 | 发起时间≥报销日期 | system:发起时间 | 大于等于 | field:报销日期 | — | 变量模式 |
139
+ | 发起 | 初审 | 部门初审 | 报销类型∈{差旅,住宿} | form:报销类型 | 属于 | 差旅费,住宿费 | 任一 | 与下行OR |
140
+ | 发起 | 初审 | 部门初审 | 同上OR组 | form:发票编号 | 包含 | FP | 任一 | 接上行OR |
141
+
142
+ 要点:每行一条原子条件,OR 组拆多行备注"与下行OR";操作列 等于/大于/小于/范围/属于/包含/为空/不为空/field(变量模式);值列字面值直接写、`field:`前缀引用另一字段;明细量词 任一(任一行)/所有(所有行)/—(主表);创建完 `workflow condition list <wf>` 回读核对总数一致
143
+
144
+ - [ ] 出口名 | `workflow link-rename <wf> <linkId> <业务人话>`(分支连线尤其要改)
145
+
146
+ ##### 4.4 节点级配置(每个审批节点一组,逐个复制)
147
+ ###### ▶ 节点:<节点名> | nodeId: 待创建
148
+ - [ ] 操作者 | `workflow set-operator <wf> <node> [keyword] --type <user/role/dept/position/all/free/superior/initiator/prev-node/form/matrix> --sign-order <会签/竞签/依次/抄送>`(`--append` 多组叠加)
149
+ - [ ] 提交校验 | `workflow node validate <wf> <node> --rule "字段 操作 值"`(跨表用"明细表名.字段",如 `行程明细.开始时间 等于 出差开始日期`)
150
+ - [ ] 签字意见必填 | `workflow node sign <wf> <node> --select "退回"`(退回等操作类型必填意见)
151
+ - [ ] 节点菜单 | `workflow node menu <wf> <node> --toggle <menuId>`
152
+ - [ ] 退回设置 | `workflow node reject <wf> <node>`
153
+ - [ ] 超时处理 | `workflow node timeout <wf> <node>`
154
+ - [ ] 字段权限 | `workflow node field-permission set <wf> <node> --hide <字段...>`
155
+
156
+ ##### 4.5 流程级设置(来源: 本流程 <流程名A>)
157
+ - [ ] 流程编号 | `workflow numbering set <wf> --prefix LC --serial 4 --no-year`(REQUEST_NO,绑流程表必走)
158
+ - [ ] 流程标题 | `workflow setting title <wf> --rule "发起人|提交日期|客户名称"`(标题=流程名+系统字段则跳过)
159
+ - [ ] 提交确认 | `workflow setting submit <wf>`
160
+ - [ ] 签字意见 | `workflow setting sign <wf>`
161
+ - [ ] 评论 | `workflow setting comment <wf> --enable`
162
+ - [ ] 批量操作 | `workflow setting batch <wf>`
163
+ - [ ] 自动处理 | `workflow setting auto <wf>`
164
+ - [ ] 其他 | `workflow setting other <wf>`
165
+ - [ ] 存档 | `workflow advanced doc <wf>`
166
+ - [ ] 定时触发 | `workflow advanced schedule <wf>` + `schedule-range <wf>`(人员范围)
167
+ - [ ] 消息提醒 | `workflow message create`(IM 提醒动作流)
168
+
169
+ ##### 4.6 动作流(跨表写入/自动化)
170
+ - [ ] 动作流生成 | `actionflow generate '{"planFile":"@plan.json",...}'`(来源: 本流程触发 → 目标: <目标表单>)
171
+ - [ ] 节点字段赋值 | `workflow save-action @action.json`(来源: 本流程 <节点名>)
172
+ - [ ] 数据来源落点 | 目标台账建 Flow 字段 `form add-field <目标台账objId> <app> "数据来源" Flow --sform-id <本流程表单objId>`(来源: 本流程 → 落点: <目标台账表单名>),add 时 `--sysvar` 写 requestId,**update/delete 也靠它定位**
173
+
174
+ #### ▼ 流程:<流程名B> | workflowId: 待创建
175
+ (同上 4.1-4.6 复制)
176
+
177
+ ---
178
+
179
+ ### 5. 菜单(来源: 应用)
180
+ - [ ] 台账菜单 | 建表时需要入口则使用 `form create --menu`;未生成入口时用 `menu add-table <appId> <objId>` 补加(默认台账视图存在不等于菜单入口存在)
181
+ - [ ] 发起菜单 | `menu add-start <appId> <formObjId>`(来源: <流程名>绑定的表单;workflow create 已自动加)
182
+ - [ ] 自定义菜单 | `menu add <名> <path> <appId>`(LINK,ecode 页面)
183
+ - [ ] 菜单权限 | `menu permission`(岗位/角色/部门/人员可见)
184
+
185
+ ### 6. 页面(定制)
186
+ - [ ] 无定制 | 标「### 页面(无需,表单自带台账)」
187
+ - [ ] 定制页面 | Ecode `project create/import` + 页面编码(图表/跨表聚合/特殊交互)
188
+
189
+ ### 7. 矩阵(HRM,按需)
190
+ - [ ] <矩阵名> | `matrix create` + `config-edit` + `enable` + `data`(来源: 被 <流程名> 的 `set-operator --type matrix` 引用)
191
+
192
+ ## 执行分段(最多三段,每段完成停下来让用户确认,确认后才进下一段)
193
+ - 段① 应用+角色+全部表单(建表 + 3.2 表内项配齐,**缺一项这张表不算完成**)→ 确认字段设计 → 段② 流程(先列出口条件清单→逐条 `condition add`→`condition list` 回读核对)→ 确认流程 → 段③ 菜单+页面
194
+ - 简单单步需求(改字段、查数据)不分段,直接执行
195
+ > **表单是流程的地基**:流程绑定表单、条件/动作流/操作者都引用字段,字段设计错了流程全返工——表单段必须确认后再进流程
196
+
197
+ ## 规则备忘
198
+ - **执行前读指南**:每个命令的完整参数/边界/示例在对应 `references` 文档(SKILL.md 决策树按关键词路由),动手前先读,勿凭印象调命令出错
199
+ - Plan 阶段不调 e10-cli 写命令(可 list/read 查现状);必须写 plan.md 落地,不要只在对话里列方案
200
+ - 应用数量:默认全需求只建 1 个应用,不按功能点拆;确需多应用先跟用户确认
201
+ - 流程按节点逐行,操作者含签署方式/条件/动作流挂节点;**「A 或 B 审批」= 一节点多人 + 竞签/非会签,不拆节点**
202
+ - 台账页面不用写,表单自带台账(搜索/筛选/导出/批量)
203
+ - 表单字段一次性建好(`form create --fields`),singleRow/group 建表时定,勿留建后补
204
+ - 需求提供完整布局样表时,字段清单和“表单布局蓝图”必须同时存在:前者定义字段,后者保留空间结构;字段覆盖数、同排关系、分组顺序和原文说明应逐项对应
205
+ ```
206
+
207
+ ---
208
+
209
+ ## 来源标注方式
210
+
211
+ | 配置项类型 | 来源标注方式 |
212
+ |----------|------------|
213
+ | 表单级配置(3.2/3.3) | 分组头 `▼ 表单:<表单名A> | objId: 待创建`,其下项来源=该表单 |
214
+ | 流程级配置(4.2/4.3/4.5) | 分组头 `▼ 流程:<流程名A> | workflowId: 待创建`,其下项来源=该流程 |
215
+ | 节点级配置(4.4) | 子分组头 `▶ 节点:<节点名> | nodeId: 待创建`,其下项来源=该节点 |
216
+ | 跨表项(动作流落点) | 内联标 `来源: 本流程 → 落点: <目标台账表单名>` |
217
+ | 菜单/矩阵 | 内联标 `来源: <表单名>` / `被 <流程名> 引用` |
218
+
219
+ 多张表/多个流程时,复制对应 `▼` 分组(每张表/每个流程一组),来源即分组头声明。每个 `[ ]` 都能看清属于哪个表单/流程/节点,不会把 A 表的配置错配到 B 表。