weaver-e10-builder 1.5.5 → 1.5.7

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 (101) hide show
  1. package/dist/commands/actionflow.d.ts.map +1 -1
  2. package/dist/commands/actionflow.js +6 -0
  3. package/dist/commands/actionflow.js.map +1 -1
  4. package/dist/commands/form-layout.d.ts.map +1 -1
  5. package/dist/commands/form-layout.js +137 -0
  6. package/dist/commands/form-layout.js.map +1 -1
  7. package/dist/commands/form-serial-mark.d.ts.map +1 -1
  8. package/dist/commands/form-serial-mark.js +7 -1
  9. package/dist/commands/form-serial-mark.js.map +1 -1
  10. package/dist/commands/form-view.d.ts.map +1 -1
  11. package/dist/commands/form-view.js +11 -2
  12. package/dist/commands/form-view.js.map +1 -1
  13. package/dist/commands/form.js +1 -1
  14. package/dist/commands/form.js.map +1 -1
  15. package/dist/commands/org.d.ts +7 -4
  16. package/dist/commands/org.d.ts.map +1 -1
  17. package/dist/commands/org.js +92 -54
  18. package/dist/commands/org.js.map +1 -1
  19. package/dist/commands/workflow-node-validate.d.ts.map +1 -1
  20. package/dist/commands/workflow-node-validate.js +159 -15
  21. package/dist/commands/workflow-node-validate.js.map +1 -1
  22. package/dist/commands/workflow.d.ts.map +1 -1
  23. package/dist/commands/workflow.js +23 -5
  24. package/dist/commands/workflow.js.map +1 -1
  25. package/dist/core/crypto.d.ts +19 -0
  26. package/dist/core/crypto.d.ts.map +1 -1
  27. package/dist/core/crypto.js +70 -35
  28. package/dist/core/crypto.js.map +1 -1
  29. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  30. package/dist/services/actionflow/components/action_eb_update_compiler.js +3 -1
  31. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  32. package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -1
  33. package/dist/services/actionflow/components/custom_trigger.js +2 -0
  34. package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
  35. package/dist/services/actionflow/components/event_button.d.ts.map +1 -1
  36. package/dist/services/actionflow/components/event_button.js +2 -0
  37. package/dist/services/actionflow/components/event_button.js.map +1 -1
  38. package/dist/services/actionflow/components/event_form_data.d.ts.map +1 -1
  39. package/dist/services/actionflow/components/event_form_data.js +2 -0
  40. package/dist/services/actionflow/components/event_form_data.js.map +1 -1
  41. package/dist/services/actionflow/components/form_data_builder.d.ts +23 -0
  42. package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -0
  43. package/dist/services/actionflow/components/form_data_builder.js +106 -0
  44. package/dist/services/actionflow/components/form_data_builder.js.map +1 -0
  45. package/dist/services/actionflow/components/hrm_actions.d.ts +1 -0
  46. package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
  47. package/dist/services/actionflow/components/hrm_actions.js +136 -44
  48. package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
  49. package/dist/services/actionflow/components/inner_mq_listener.d.ts.map +1 -1
  50. package/dist/services/actionflow/components/inner_mq_listener.js +2 -0
  51. package/dist/services/actionflow/components/inner_mq_listener.js.map +1 -1
  52. package/dist/services/actionflow/components/webhook_trigger.d.ts.map +1 -1
  53. package/dist/services/actionflow/components/webhook_trigger.js +6 -5
  54. package/dist/services/actionflow/components/webhook_trigger.js.map +1 -1
  55. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  56. package/dist/services/actionflow/components/workflow_actions.js +6 -3
  57. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  58. package/dist/services/actionflow/formula_service.d.ts +1 -1
  59. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  60. package/dist/services/actionflow/formula_service.js +14 -7
  61. package/dist/services/actionflow/formula_service.js.map +1 -1
  62. package/dist/services/actionflow/hrm_source.d.ts +2 -0
  63. package/dist/services/actionflow/hrm_source.d.ts.map +1 -1
  64. package/dist/services/actionflow/hrm_source.js +4 -0
  65. package/dist/services/actionflow/hrm_source.js.map +1 -1
  66. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  67. package/dist/services/actionflow/preflight_service.js +62 -0
  68. package/dist/services/actionflow/preflight_service.js.map +1 -1
  69. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  70. package/dist/services/actionflow/workflow_compiler.js +19 -22
  71. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  72. package/dist/services/form-layout-copy-default.d.ts +94 -0
  73. package/dist/services/form-layout-copy-default.d.ts.map +1 -0
  74. package/dist/services/form-layout-copy-default.js +157 -0
  75. package/dist/services/form-layout-copy-default.js.map +1 -0
  76. package/dist/services/form-layout-insert.js +1 -1
  77. package/dist/services/form-layout-insert.js.map +1 -1
  78. package/dist/services/form-view-populate.d.ts +76 -0
  79. package/dist/services/form-view-populate.d.ts.map +1 -0
  80. package/dist/services/form-view-populate.js +171 -0
  81. package/dist/services/form-view-populate.js.map +1 -0
  82. package/dist/services/form-view.d.ts +4 -0
  83. package/dist/services/form-view.d.ts.map +1 -1
  84. package/dist/services/form-view.js +49 -90
  85. package/dist/services/form-view.js.map +1 -1
  86. package/dist/services/org-department.d.ts +30 -17
  87. package/dist/services/org-department.d.ts.map +1 -1
  88. package/dist/services/org-department.js +45 -65
  89. package/dist/services/org-department.js.map +1 -1
  90. package/package.json +1 -1
  91. package/skill-docs/SKILL.md +278 -282
  92. package/skill-docs/_catalog.md +87 -86
  93. package/skill-docs/actionflows/references/components/personnel/HrmEmployeeUpdate.md +3 -1
  94. package/skill-docs/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
  95. package/skill-docs/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -34
  96. package/skill-docs/actionflows/references/components/trigger/WebHookTrigger.md +4 -2
  97. package/skill-docs/references/common/guide-plan-template.md +12 -4
  98. package/skill-docs/references/common/map.md +152 -0
  99. package/skill-docs/references/common/ref-cli-commands.md +8 -2
  100. package/skill-docs/references/form/guide-form-view.md +28 -0
  101. package/skill-docs/references/workflow/guide-workflow.md +20 -2
@@ -1,10 +1,13 @@
1
1
  import { Command } from 'commander';
2
2
  /**
3
- * 组织架构(HRM):部门。
3
+ * 组织架构(HRM):**部门**与**分部**。
4
4
  *
5
- * 新建是四步链(模板 → 布局 → 数据 → 组织树),细节见 `services/org-department.ts` 文件头。
6
- * 每一步都**回读确认**再往下走 —— 链太长,中途静默失败会留下半拉子部门(组织树里没有、
7
- * 但表单数据已经落了),比直接报错难查得多。
5
+ * 两者是同一套接口、同一个报文,只差两个值:`getForm` 的 `flag` 与保存报文的 `type`。
6
+ * 新建是**两步**:拿模板 → 落组织树。细节见 `services/org-department.ts` 文件头。
7
+ *
8
+ * 「上级部门」与「所属分部」**至少填一个**,建部门与建分部各填其中一半:
9
+ * - 建**部门** → 填「所属分部」(`subcompany`),上级留空
10
+ * - 建**分部** → 填「上级分部」(`parent`),所属分部留空
8
11
  */
9
12
  export declare function registerOrgCommands(program: Command): void;
10
13
  //# sourceMappingURL=org.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAma1D"}
1
+ {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0c1D"}
@@ -3,82 +3,89 @@ import { extname } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { AuthSession } from '../core/auth.js';
5
5
  import { ApiClient } from '../core/client.js';
6
- import { buildDeleteDepartmentPayload, buildSaveFormDataPayload, buildSaveFormPayload, buildUpdateDepartmentPayload, extractOrgFormTemplate, extractRecordId, fetchCurrentUser, getOrgDetailPath, resolveCurrentUserSubCompany, } from '../services/org-department.js';
6
+ import { buildDeleteDepartmentPayload, buildSaveFormPayload, buildUpdateDepartmentPayload, extractOrgFormTemplate, fetchCurrentUser, getOrgDetailPath, resolveCurrentUserSubCompany, ORG_TYPE_DEPARTMENT, ORG_TYPE_SUBCOMPANY, } from '../services/org-department.js';
7
7
  import { buildGetExcelDataPath, buildImportExcelDataPath, buildPreUploadForm, buildUploadFileIdPayload, buildUploadForm, downloadErrorFile, extractFileId, extractImportParam, extractPreUploadId, extractPreview, extractTaskId, fetchTaskResult, isTaskSettled, parseErrorFileReasons, readFileMeta, resolveUploadSet, waitTaskResult, } from '../services/org-employee.js';
8
8
  /**
9
- * 组织架构(HRM):部门。
9
+ * 组织架构(HRM):**部门**与**分部**。
10
10
  *
11
- * 新建是四步链(模板 → 布局 → 数据 → 组织树),细节见 `services/org-department.ts` 文件头。
12
- * 每一步都**回读确认**再往下走 —— 链太长,中途静默失败会留下半拉子部门(组织树里没有、
13
- * 但表单数据已经落了),比直接报错难查得多。
11
+ * 两者是同一套接口、同一个报文,只差两个值:`getForm` 的 `flag` 与保存报文的 `type`。
12
+ * 新建是**两步**:拿模板 → 落组织树。细节见 `services/org-department.ts` 文件头。
13
+ *
14
+ * 「上级部门」与「所属分部」**至少填一个**,建部门与建分部各填其中一半:
15
+ * - 建**部门** → 填「所属分部」(`subcompany`),上级留空
16
+ * - 建**分部** → 填「上级分部」(`parent`),所属分部留空
14
17
  */
15
18
  export function registerOrgCommands(program) {
16
19
  const org = program.command('org').description('组织架构(部门 / 岗位等)');
17
- const dept = org.command('department').description('部门管理');
18
- dept.command('create')
19
- .description('新建部门')
20
- .argument('<name>', '部门名称')
21
- .option('--code <code>', '部门编号')
22
- .option('--parent <id>', '父部门 id(顶层部门不传,默认挂在当前机构下)')
23
- .option('--subcompany <id>', '所属机构 id(不传则自动解析当前用户的机构)')
24
- .action(async (name, cmdOpts) => {
20
+ /**
21
+ * 新建组织节点 —— **部门与分部共用这一条链**。
22
+ *
23
+ * 只有两处按类型分叉:`getForm` 的 `flag`、保存报文的 `type`;以及父级栏位怎么填
24
+ * (部门填「所属分部」,分部填「上级分部」)。
25
+ */
26
+ const createOrgNode = async (name, cmdOpts, type) => {
25
27
  const opts = program.opts();
26
28
  const auth = await AuthSession.fromOptions(opts);
27
29
  if (!auth)
28
30
  process.exit(1);
29
31
  const client = new ApiClient(auth);
30
32
  const baseUrl = auth.getBaseUrl();
33
+ const isSubcompany = type === ORG_TYPE_SUBCOMPANY;
31
34
  const subcompanyId = cmdOpts.subcompany
32
35
  || await resolveCurrentUserSubCompany(baseUrl, auth.eteamsId);
33
- if (!subcompanyId) {
36
+ if (!isSubcompany && !subcompanyId) {
34
37
  console.error('无法解析所属机构:当前用户没有机构上下文,请用 --subcompany <机构id> 显式指定');
35
38
  process.exit(1);
36
39
  }
37
- // getForm 的 parentId:顶层部门传机构 id,子部门传父部门 id
38
- const parentId = cmdOpts.parent || subcompanyId;
40
+ // 建部门:顶层传机构 id、子部门传父部门 id。建分部:必须给「上级分部」—— 分部总得挂在某个分部下。
41
+ const parentId = cmdOpts.parent || (isSubcompany ? '' : subcompanyId);
42
+ if (isSubcompany && !parentId) {
43
+ console.error('建分部需要指定上级分部:--parent <分部id>(在平台组织架构页能查到现有分部 id)');
44
+ process.exit(1);
45
+ }
39
46
  try {
40
- // ① 模板(含现生成的 targetId)
41
- const formRes = await client.get(`${baseUrl}/api/bs/hrm/organization/getForm?parentId=${encodeURIComponent(parentId)}&flag=department&virtualId=1&isMobile=false`, { ebbusinessid: subcompanyId });
47
+ // ① 模板(含平台为新节点现生成的 targetId)
48
+ const formRes = await client.get(`${baseUrl}/api/bs/hrm/organization/getForm?parentId=${encodeURIComponent(parentId)}&flag=${type}&virtualId=1&isMobile=false`, { ebbusinessid: subcompanyId || parentId });
42
49
  const tpl = extractOrgFormTemplate(formRes);
43
- // ② 布局 id(保存数据那步要用)
44
- const layoutRes = await client.post(`${baseUrl}/api/hrm/form/core/getFormLayout`, {
45
- terminalType: 'PC', formId: tpl.formId, module: 'hrm', newLayout: true,
46
- dataCrossLayout: false, initialDatas: [], needPermission: true, cost: false, orgAsyncPageQuery: true,
47
- });
48
- const formLayoutId = String(layoutRes?.data?.formLayout?.id ?? '');
49
- const multipleLayoutId = String(layoutRes?.data?.formLayoutMultiple?.id ?? '');
50
- if (!formLayoutId || !multipleLayoutId) {
51
- throw new Error('getFormLayout 未返回布局 id(formLayout / formLayoutMultiple)');
52
- }
53
- // ③ 落表单数据 → recordId
54
- const dataRes = await client.post(`${baseUrl}/api/hrm/form/core/saveFormData?formId=${encodeURIComponent(tpl.formId)}`, buildSaveFormDataPayload(tpl, formLayoutId, multipleLayoutId));
55
- if (dataRes?.code !== 200 || !dataRes?.status) {
56
- throw new Error(`落表单数据失败: ${dataRes?.msg || '未知错误'}`);
57
- }
58
- const recordId = extractRecordId(dataRes);
59
- // ④ 落组织树
50
+ // ② 落组织树(扁平报文;背后的表单记录平台会自己补 —— 建完 getForm?id= 读回能看到完整 formdata)
60
51
  const payload = buildSaveFormPayload(tpl, {
61
- name, code: cmdOpts.code, parentId, recordId,
52
+ name, code: cmdOpts.code, parentId, subcompanyId, type,
62
53
  });
63
- const saveRes = await client.post(`${baseUrl}/api/bs/hrm/organization/saveForm`, payload);
54
+ const saveRes = await client.post(`${baseUrl}/api/hrm/organization/saveForm`, payload);
64
55
  if (saveRes?.code !== 200 || !saveRes?.status) {
65
- throw new Error(`保存部门失败: ${saveRes?.msg || '未知错误'}`);
56
+ throw new Error(`保存失败: ${saveRes?.msg || '未知错误'}`);
66
57
  }
67
- const deptId = tpl.targetId;
58
+ const nodeId = tpl.targetId;
59
+ const label = isSubcompany ? '分部' : '部门';
68
60
  if (opts.json) {
69
- console.log(JSON.stringify({ success: true, id: deptId, name, parent: parentId, subcompany: subcompanyId, recordId }));
61
+ console.log(JSON.stringify({ success: true, type, id: nodeId, name, parent: parentId, subcompany: subcompanyId }));
70
62
  }
71
63
  else {
72
- console.log(`部门已创建: ${name}`);
73
- console.log(` id ${deptId}`);
74
- console.log(` 父级 ${parentId === subcompanyId ? `机构 ${subcompanyId}` : parentId}`);
64
+ console.log(`${label}已创建: ${name}`);
65
+ console.log(` id ${nodeId}`);
66
+ console.log(` 父级 ${isSubcompany ? `分部 ${parentId}` : (parentId === subcompanyId ? `机构 ${subcompanyId}` : parentId)}`);
75
67
  }
76
68
  }
77
69
  catch (e) {
78
70
  console.error(` ❌ ${e?.message || e}`);
79
71
  process.exit(1);
80
72
  }
81
- });
73
+ };
74
+ const dept = org.command('department').description('部门管理');
75
+ dept.command('create')
76
+ .description('新建部门(顶层不传 --parent,自动挂在当前机构下)')
77
+ .argument('<name>', '部门名称')
78
+ .option('--code <code>', '部门编号')
79
+ .option('--parent <id>', '父部门 id(顶层部门不传,默认挂在当前机构下)')
80
+ .option('--subcompany <id>', '所属机构 id(不传则自动解析当前用户的机构)')
81
+ .action((name, cmdOpts) => createOrgNode(name, cmdOpts, ORG_TYPE_DEPARTMENT));
82
+ const sub = org.command('subcompany').description('分部管理(机构;部门挂在它下面)');
83
+ sub.command('create')
84
+ .description('新建分部(必须用 --parent 指定上级分部)')
85
+ .argument('<name>', '分部名称')
86
+ .option('--code <code>', '分部编号')
87
+ .option('--parent <id>', '上级分部 id(必填;在平台组织架构页能查到现有分部 id)')
88
+ .action((name, cmdOpts) => createOrgNode(name, cmdOpts, ORG_TYPE_SUBCOMPANY));
82
89
  dept.command('edit')
83
90
  .description('编辑部门(改名 / 改编号 / 移动父级 / 改排序)')
84
91
  .argument('<id>', '部门 id')
@@ -137,35 +144,66 @@ export function registerOrgCommands(program) {
137
144
  process.exit(1);
138
145
  }
139
146
  });
140
- dept.command('delete')
141
- .description('删除部门')
142
- .argument('<id>', '部门 id')
143
- .option('--parent <id>', '父部门 id(顶层部门的父是机构 id;不传则按当前机构解析)')
144
- .option('--subcompany <id>', '所属机构 id(配合 --parent 缺省时使用)')
145
- .action(async (id, cmdOpts) => {
147
+ /**
148
+ * 删除组织节点(部门 / 分部共用;平台同一个端点)。
149
+ *
150
+ * 平台的硬规则:**下面还有人就删不掉**(在职、非在职都算)。CLI 侧只能做**预警** ——
151
+ * 从组织树上读该节点的 `count` 打出来(组织树里每个节点都带这个数),但**不阻断**:
152
+ * 这个字段的确切口径(是否含下级部门、是否含停用人员)没有权威说明,拿它当否决条件
153
+ * 会变成自造的规则。最终仍以平台为准 —— 被拒时把平台原话打出来。
154
+ */
155
+ const deleteOrgNode = async (id, cmdOpts, type) => {
146
156
  const opts = program.opts();
147
157
  const auth = await AuthSession.fromOptions(opts);
148
158
  if (!auth)
149
159
  process.exit(1);
150
160
  const client = new ApiClient(auth);
151
161
  const baseUrl = auth.getBaseUrl();
162
+ const isSubcompany = type === ORG_TYPE_SUBCOMPANY;
163
+ const label = isSubcompany ? '分部' : '部门';
152
164
  const parent = cmdOpts.parent
153
165
  || cmdOpts.subcompany
154
166
  || await resolveCurrentUserSubCompany(baseUrl, auth.eteamsId);
155
167
  if (!parent) {
156
- console.error('无法确定父级:请用 --parent <父部门id> 或 --subcompany <机构id> 指定');
168
+ console.error(`无法确定父级:请用 --parent <${isSubcompany ? '上级分部' : '父部门'}id> 指定`);
157
169
  process.exit(1);
158
170
  }
171
+ // 预警:节点下的人数(读不到就跳过,不当成错误)
172
+ try {
173
+ const rootId = await resolveCurrentUserSubCompany(baseUrl, auth.eteamsId);
174
+ if (rootId) {
175
+ const treeRes = await client.get(`${baseUrl}/api/hrm/common/getOrgTree?menuCode=organizationSetting&onlySubcompany=false`
176
+ + `&containDisableDept=false&moduleCode=HRM&virtualId=1&includeSub=true&containDls=false`
177
+ + `&targetId=${encodeURIComponent(rootId)}&isMobile=false`);
178
+ const list = Array.isArray(treeRes?.data) ? treeRes.data : (Array.isArray(treeRes?.data?.list) ? treeRes.data.list : []);
179
+ const node = list.find((n) => String(n?.id) === String(id));
180
+ if (node && Number(node.count) > 0) {
181
+ console.error(` ⚠ 该${label}下还有约 ${node.count} 人(组织树统计)——平台的规则是「下面还有人就不能删」,继续提交大概率会被拒`);
182
+ }
183
+ }
184
+ }
185
+ catch { /* 预警读不到就算了,不阻塞删除 */ }
159
186
  const res = await client.post(`${baseUrl}/api/bs/hrm/department/delete`, buildDeleteDepartmentPayload(id, parent));
160
187
  if (res?.code !== 200 || !res?.status) {
161
188
  console.error(`删除失败: ${res?.msg || '未知错误'}`);
162
189
  process.exit(1);
163
190
  }
164
191
  if (opts.json)
165
- console.log(JSON.stringify({ success: true, id, parent }));
192
+ console.log(JSON.stringify({ success: true, type, id, parent }));
166
193
  else
167
- console.log(`部门已删除: ${id}`);
168
- });
194
+ console.log(`${label}已删除: ${id}`);
195
+ };
196
+ dept.command('delete')
197
+ .description('删除部门(下面还有人时平台会拒绝)')
198
+ .argument('<id>', '部门 id')
199
+ .option('--parent <id>', '父部门 id(顶层部门的父是机构 id;不传则按当前机构解析)')
200
+ .option('--subcompany <id>', '所属机构 id(配合 --parent 缺省时使用)')
201
+ .action((id, cmdOpts) => deleteOrgNode(id, cmdOpts, ORG_TYPE_DEPARTMENT));
202
+ sub.command('delete')
203
+ .description('删除分部(下面还有人时平台会拒绝)')
204
+ .argument('<id>', '分部 id')
205
+ .option('--parent <id>', '上级分部 id(不传则按当前机构解析)')
206
+ .action((id, cmdOpts) => deleteOrgNode(id, cmdOpts, ORG_TYPE_SUBCOMPANY));
169
207
  const emp = org.command('employee').description('人员管理');
170
208
  emp.command('template')
171
209
  .description('导出人员导入模板(xlsx,直接填好就能导)')
@@ -1 +1 @@
1
- {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-node-validate.d.ts","sourceRoot":"","sources":["../../src/commands/workflow-node-validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oCAAoC,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA+RxF"}
1
+ {"version":3,"file":"workflow-node-validate.d.ts","sourceRoot":"","sources":["../../src/commands/workflow-node-validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oCAAoC,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAgYxF"}
@@ -1,5 +1,22 @@
1
1
  import { AuthSession } from '../core/auth.js';
2
2
  import { ApiClient } from '../core/client.js';
3
+ import { readFileSync } from 'node:fs';
4
+ import { SYSTEM_FIELDS } from '../services/condition-rules.js';
5
+ function parseRuleTree(input) {
6
+ const raw = input.startsWith('@') ? readFileSync(input.slice(1), 'utf8') : input;
7
+ const tree = JSON.parse(raw);
8
+ const check = (node) => {
9
+ if ('rules' in node) {
10
+ if (!['AND', 'OR'].includes(node.relation) || !Array.isArray(node.rules) || !node.rules.length)
11
+ throw new Error('组合条件需有 relation=AND|OR 和非空 rules');
12
+ node.rules.forEach(check);
13
+ }
14
+ else if (!node.field || !node.op)
15
+ throw new Error('条件需有 field 和 op');
16
+ };
17
+ check(tree);
18
+ return tree;
19
+ }
3
20
  /**
4
21
  * workflow node validate — 节点提交校验(智能审批规则 / 节点字段校验)。
5
22
  *
@@ -29,6 +46,13 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
29
46
  .option('--name <name>', '规则名称(默认 "节点校验")', '节点校验')
30
47
  .option('--rule <rule...>', '校验条件(可多个,AND 关系):\"主题字段 操作 值字段或字面值\",如 "付款信息.付款金额(合计) 等于 项目金额" "付款信息.付款比例(合计) 等于 100"。**操作符支持 大于/大于等于/小于/小于等于/等于/不等于/为空/不为空**(为空、不为空 无需值)。**明细字段可加量词**:主题末尾写 \":任一\"(任一行,缺省)或 \":所有\"(所有行),如 "货品明细.货品名称:所有 不为空"。缺省替换本节点已有规则(幂等),--append 才保留旧规则')
31
48
  .option('--append', '与 --rule 同用:保留节点已有规则,新规则追加(旧行为,会累积)')
49
+ .option('--rules-json <jsonOrFile>', '组合条件 JSON 或 @文件;组用 relation=AND|OR、rules,叶子用 source/field/op/value/detail/upperOp/upperValue')
50
+ .option('--pass-tip <text>', '合规提示语(可含平台字段标签/值占位符)')
51
+ .option('--fail-tip <text>', '不合规提示语')
52
+ .option('--on-fail <mode>', '不合规处理:禁止提交 或 仅做提醒')
53
+ .option('--relation <mode>', '节点多条规则关系:AND 或 OR')
54
+ .option('--pass-popup <mode>', '校验通过时显示结果:on/off')
55
+ .option('--fail-popup <mode>', '不合规仅提醒时显示结果:on/off')
32
56
  .option('--disable', '关闭节点校验(openNodeCheck=0)')
33
57
  .option('--view', '查看当前校验配置与规则列表(表达式/启用状态)')
34
58
  .option('--delete <nameOrId>', '删除指定规则(按规则名称或规则行 id)')
@@ -49,6 +73,21 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
49
73
  const cfg = cfgRes?.data || {};
50
74
  const existingId = String(cfg.conformanceId || '0');
51
75
  const openNodeCheck = cfg?.formData?.data?.openNodeCheck;
76
+ const boolMode = (value, fallback) => {
77
+ if (value === undefined)
78
+ return fallback;
79
+ if (value === 'on')
80
+ return 1;
81
+ if (value === 'off')
82
+ return 0;
83
+ throw new Error('显示开关只能是 on 或 off');
84
+ };
85
+ const relation = cmdOpts.relation === undefined ? Number(cfg.ruleRelation ?? 0) : cmdOpts.relation === 'AND' ? 0 : cmdOpts.relation === 'OR' ? 1 : NaN;
86
+ if (!Number.isFinite(relation))
87
+ throw new Error('--relation 只能是 AND 或 OR');
88
+ const processType = cmdOpts.onFail === undefined ? undefined : { '禁止提交': '1', '仅做提醒': '2' }[cmdOpts.onFail];
89
+ if (cmdOpts.onFail !== undefined && !processType)
90
+ throw new Error('--on-fail 只能是 禁止提交 或 仅做提醒');
52
91
  // 规则列表 / 删除(浏览器抓包 2026-09:list → data.data 行;delete 只需规则行 id)
53
92
  const listRules = async () => {
54
93
  const res = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeConformance/getConformanceSetListConfigInfo`, {
@@ -78,6 +117,7 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
78
117
  }
79
118
  for (const r of rows) {
80
119
  console.log(` [${r.open ? '启用' : '停用'}] ${r.ruleName || '(未命名)'}: ${r.conditionKey || ''} (id=${r.id})`);
120
+ console.log(` 合规: ${r.rulePassTipCn || r.rulePassTip || '未设置'};不合规: ${r.ruleNoPassTipCn || r.ruleNoPassTip || '未设置'};处理: ${Number(r.processTypeId) === 1 ? '禁止提交' : Number(r.processTypeId) === 2 ? '仅做提醒' : (r.processType || '未设置')}`);
81
121
  }
82
122
  return;
83
123
  }
@@ -109,7 +149,7 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
109
149
  const baseBody = {
110
150
  workflowId, nodeId, showAddChoseSmart: false, choseUserId: '',
111
151
  workflowName: cfg.workflowName || '',
112
- ruleRelation: 0,
152
+ ruleRelation: relation,
113
153
  remarkAndTitle: '节点字段规则校验结果如下(需全部校验通过)',
114
154
  remarkOrTitle: '节点字段规则校验结果如下(有一个规则通过即可)',
115
155
  remarkShowTitle: '节点字段规则校验结果如下',
@@ -123,7 +163,7 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
123
163
  if (cmdOpts.disable) {
124
164
  const off = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeConformance/saveConformance`, {
125
165
  ...baseBody, conformanceId: existingId, saveType: 'base', openNodeCheck: 0, openNodeCheckRemark: 0,
126
- passPopUpPrompt: 1, noPassPrompt: 1, ruleRelation: 0, data: [],
166
+ passPopUpPrompt: boolMode(cmdOpts.passPopup, Number(cfg?.formData?.data?.passPopUpPrompt ?? 1)), noPassPrompt: boolMode(cmdOpts.failPopup, Number(cfg?.formData?.data?.noPassPrompt ?? 1)), ruleRelation: relation, data: [],
127
167
  });
128
168
  if (off?.code === 200 && off?.status) {
129
169
  console.log(`已关闭节点 ${nodeId} 提交校验`);
@@ -134,10 +174,12 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
134
174
  }
135
175
  return;
136
176
  }
137
- if (!cmdOpts.rule || cmdOpts.rule.length === 0) {
138
- console.error('需要 --rule "主题字段 操作 值字段"(可多个 AND),或 --view / --disable');
177
+ if ((!cmdOpts.rule || cmdOpts.rule.length === 0) && !cmdOpts.rulesJson) {
178
+ console.error('需要 --rule、--rules-json,或 --view / --disable');
139
179
  process.exit(1);
140
180
  }
181
+ if (cmdOpts.rule?.length && cmdOpts.rulesJson)
182
+ throw new Error('--rule 与 --rules-json 只能选一种');
141
183
  // 解析规则(可多个 AND):每条 "主题字段 操作 值字段或字面值"
142
184
  // 与 workflow-condition(出口条件)**同一套算子码**:5=等于 6=不等于 13=为空 14=不为空。
143
185
  const OP = {
@@ -214,7 +256,8 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
214
256
  const ft = String(subjectField.fieldType || subjectField.componentKey || '');
215
257
  const isNumber = /Number|Money|Float|Integer/i.test(ft);
216
258
  const isDate = /Date|Time/i.test(ft) && !isNumber;
217
- const prefix = isNumber ? 'Number' : isDate ? 'Date' : 'String';
259
+ const isBrowser = /Employee|Department|Subcompany|Role|Browser|Select|RadioBox|CheckBox|Ebuilder|Flow/i.test(ft);
260
+ const prefix = isNumber ? 'Number' : isDate ? 'Date' : isBrowser ? 'Browser' : 'String';
218
261
  // 平台自己的客户端在 Number 系 leaf 上发的是**数字**(NumberCompareOptionLeft: 1),
219
262
  // String 系才是字符串(StringCompareOptionLeft: "5")。此前一律发字符串。
220
263
  const cmp = prefix === 'Number' ? Number(OP[opName]) : OP[opName];
@@ -252,16 +295,83 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
252
295
  leaf.typeHrm = '16'; // 日期类需 typeHrm;String/Number 不需要
253
296
  return leaf;
254
297
  };
255
- const childrens = cmdOpts.rule.map(buildLeaf);
256
- // 默认替换:先清掉节点已有规则再建(saveCondition 的 mapBaseId 总是新建 condition,
257
- // 直接重跑会把规则越堆越多——浏览器编辑同样是先删旧再建新)。--append 保留旧行为。
298
+ const buildSpecLeaf = async (spec) => {
299
+ const source = spec.source || 'form';
300
+ if (source === 'form' && !['属于', '不属于'].includes(spec.op) && typeof spec.value !== 'object') {
301
+ const subject = `${spec.field}${spec.detail ? ':' + spec.detail : ''}`;
302
+ const leaf = buildLeaf(`${subject} ${spec.op}${spec.value === undefined ? '' : ' ' + spec.value}`);
303
+ if (spec.upperOp) {
304
+ if (!['小于', '小于等于'].includes(spec.upperOp) || spec.upperValue === undefined || !('NumberCompareOptionLeft' in leaf))
305
+ throw new Error('upperOp 仅支持数值字段的小于/小于等于,且需 upperValue');
306
+ leaf.NumberCompareOptionRight = Number(OP[spec.upperOp]);
307
+ leaf.NumberValueOptionRight = 1;
308
+ leaf.NumberTextValueRight1 = Number(spec.upperValue);
309
+ }
310
+ return leaf;
311
+ }
312
+ const sf = source === 'system' ? SYSTEM_FIELDS[spec.field] : undefined;
313
+ const ff = source === 'form' ? resolveField(spec.field) : undefined;
314
+ if (source === 'system' && (!sf || sf.family !== 'Browser'))
315
+ throw new Error(`系统字段 ${spec.field} 尚不支持此节点校验条件`);
316
+ if (source === 'form' && !ff)
317
+ throw new Error(`找不到表单字段: ${spec.field}`);
318
+ if (!['属于', '不属于', '为空', '不为空'].includes(spec.op))
319
+ throw new Error(`浏览字段 ${spec.field} 不支持 ${spec.op}`);
320
+ const leaf = { selectType: source === 'system' ? '3' : '4', BrowserCompareOptionLeft: OP[spec.op] || (spec.op === '属于' ? '9' : '10'), elementValue1Id: '', elementValue2Id: '', expressionBaseId: '', dataValueId: '' };
321
+ if (sf)
322
+ leaf.systemVariable = sf.id;
323
+ if (ff) {
324
+ leaf.formField = [ff];
325
+ if (ff.detail)
326
+ leaf.detailOption = spec.detail === '所有' ? '2' : '1';
327
+ }
328
+ if (spec.op === '为空' || spec.op === '不为空')
329
+ return leaf;
330
+ if (spec.value === undefined)
331
+ throw new Error(`${spec.field} ${spec.op} 需要 value`);
332
+ let value;
333
+ if (typeof spec.value === 'object')
334
+ value = spec.value;
335
+ else if (['发起人分部', '发起人部门'].includes(spec.field)) {
336
+ const browser = spec.field === '发起人分部' ? 'subcompany' : 'department';
337
+ const res = await client.post(`${baseUrl}/api/workflow/pathdef/common/browser/data/${browser}`, { browserMultiple: true, virtualType: 'ALL', cmd: 'tree', pageSize: 100, current: 1, searchValue: String(spec.value) });
338
+ const flatten = (items) => items.flatMap((x) => [x, ...flatten(x.children || [])]);
339
+ const matches = flatten(res?.data?.data || []).filter((x) => x.content === String(spec.value));
340
+ if (matches.length !== 1)
341
+ throw new Error(`${spec.field}「${spec.value}」匹配 ${matches.length} 项,请用 value:{id,content} 明确指定`);
342
+ value = matches[0];
343
+ }
344
+ else if (['发起人', '当前操作人'].includes(spec.field) || /Employee/i.test(String(ff?.fieldType || ''))) {
345
+ const res = await client.post(`${baseUrl}/api/hrm/common/browser/data/resource`, { browserMultiple: true, cmd: 'recently', pageSize: 100, current: 1, searchValue: String(spec.value) });
346
+ const matches = (res?.data?.data || []).filter((x) => x.content === String(spec.value) || x.name === String(spec.value));
347
+ if (matches.length !== 1)
348
+ throw new Error(`人员「${spec.value}」匹配 ${matches.length} 项,请用 value:{id,content} 明确指定`);
349
+ value = matches[0];
350
+ }
351
+ else
352
+ throw new Error(`浏览值「${spec.value}」需要用 value:{id,content} 明确指定`);
353
+ leaf.BrowserValueOptionLeft = '1';
354
+ leaf.BrowserTextValueLeft1 = [value];
355
+ leaf.containType = '1';
356
+ if (['发起人', '当前操作人'].includes(spec.field) || /Employee/i.test(String(ff?.fieldType || '')))
357
+ leaf.typeHrm = '1';
358
+ return leaf;
359
+ };
360
+ const buildTree = async (tree) => {
361
+ if ('rules' in tree)
362
+ return { relation: tree.relation === 'AND' ? 1 : 2, childrens: await Promise.all(tree.rules.map(buildTree)) };
363
+ return buildSpecLeaf(tree);
364
+ };
365
+ const parsedTree = cmdOpts.rulesJson ? parseRuleTree(cmdOpts.rulesJson) : undefined;
366
+ const childrens = parsedTree ? ('rules' in parsedTree && parsedTree.relation === 'AND' ? await Promise.all(parsedTree.rules.map(buildTree)) : [await buildTree(parsedTree)]) : cmdOpts.rule.map(buildLeaf);
367
+ // 同名替换只影响目标规则;其余规则留在节点上。
258
368
  if (!cmdOpts.append) {
259
369
  const { rows } = await listRules();
260
- if (rows.length) {
261
- const ok = await deleteRules(rows);
262
- console.error(` 已清理原有 ${ok}/${rows.length} 条校验规则(--append 可保留追加)`);
263
- if (ok !== rows.length)
264
- console.error(' ⚠ 部分旧规则清理失败,将与新规则并存');
370
+ const sameName = rows.filter((r) => r.ruleName === cmdOpts.name);
371
+ if (sameName.length) {
372
+ const ok = await deleteRules(sameName);
373
+ if (ok !== sameName.length)
374
+ throw new Error(`同名规则清理失败: ${ok}/${sameName.length}`);
265
375
  }
266
376
  }
267
377
  // mapBaseId 必须后台生成(19 位雪花),不能 tid() 造假——eteams 新版平台校验 id,
@@ -302,15 +412,49 @@ export function registerWorkflowNodeValidateCommands(wf, program) {
302
412
  // step1 返回 conformanceSetId(condition 在节点校验集里的记录 id),step2 必须带 data:[{id,open:true}]
303
413
  // 才真正启用该校验条件(data:[] 空会导致「规则加了但没启用」——抓包确认)。
304
414
  const conformanceSetId = step1?.data?.conformanceSetId || reverseSetId;
415
+ if (cmdOpts.passTip !== undefined || cmdOpts.failTip !== undefined) {
416
+ const tips = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeConformance/saveConformance`, {
417
+ ...baseBody, conformanceId, saveType: 'set', conformanceSetId, reverseConformanceSetId: conformanceSetId,
418
+ currentSteps: 2, orderId: 2, srcType: 1, showAddConformanceSet: 1, hasEditWorkflowPath: 0,
419
+ rulePassTip: cmdOpts.passTip || '', ruleNoPassTip: cmdOpts.failTip || '',
420
+ });
421
+ if (tips?.code !== 200 || !tips?.status)
422
+ throw new Error(`保存校验提示语失败: ${tips?.msg || '未知错误'}`);
423
+ for (const [field, value] of [['rulePassTip', cmdOpts.passTip], ['ruleNoPassTip', cmdOpts.failTip]]) {
424
+ if (value === undefined)
425
+ continue;
426
+ const tablefield = `wfp_cpt_set.${field}`;
427
+ const read = await client.post(`${baseUrl}/api/bs/workflow/pathdef/multilang/getMultilangData`, { tablefield, targetId: conformanceSetId, otherParams: {}, versionEnable: false });
428
+ if (read?.code !== 200 || !read?.status)
429
+ throw new Error(`读取 ${field} 多语言记录失败`);
430
+ const tableData = (read?.data?.usernamePerLangs || []).map((r) => ({ id: r.id, langid: r.langid, langtype: r.langtype, langName: r.langName, value: r.langtype === 'zh_CN' ? value : (r.value || ''), content: r.langName }));
431
+ const saved = await client.post(`${baseUrl}/api/bs/workflow/pathdef/multilang/saveMultilangDataSensitive`, { tableData, targetId: conformanceSetId, tablefield, otherParams: {} });
432
+ if (saved?.code !== 200 || !saved?.status)
433
+ throw new Error(`保存 ${field} 多语言记录失败`);
434
+ }
435
+ }
436
+ const handling = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeConformance/saveConformance`, {
437
+ ...baseBody, conformanceId, saveType: 'set', conformanceSetId, reverseConformanceSetId: conformanceSetId,
438
+ currentSteps: 3, orderId: 2, srcType: 1, showAddConformanceSet: 1, hasEditWorkflowPath: 0,
439
+ processType: processType || '1',
440
+ });
441
+ if (handling?.code !== 200 || !handling?.status)
442
+ throw new Error(`保存不合规处理方式失败: ${handling?.msg || '未知错误'}`);
443
+ const remaining = await listRules();
444
+ const enabled = remaining.rows.filter((r) => r.open && String(r.id) !== String(conformanceSetId))
445
+ .map((r) => ({ id: String(r.id), open: true }));
446
+ enabled.push({ id: String(conformanceSetId), open: true });
305
447
  const step2 = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeConformance/saveConformance`, {
306
448
  ...baseBody, conformanceId, saveType: 'base', openNodeCheck: 1, openNodeCheckRemark: 0,
307
- passPopUpPrompt: 1, noPassPrompt: 1, ruleRelation: 0, data: [{ id: conformanceSetId, open: true }],
449
+ passPopUpPrompt: boolMode(cmdOpts.passPopup, Number(cfg?.formData?.data?.passPopUpPrompt ?? 1)),
450
+ noPassPrompt: boolMode(cmdOpts.failPopup, Number(cfg?.formData?.data?.noPassPrompt ?? 1)),
451
+ ruleRelation: relation, data: enabled,
308
452
  });
309
453
  if (step0?.code !== 200 || step1?.code !== 200 || step2?.code !== 200 || !step2?.status) {
310
454
  console.error(`保存校验规则失败: step0=${step0?.code} step1=${step1?.code} step2=${step2?.code} (${step2?.msg || ''})`);
311
455
  process.exit(1);
312
456
  }
313
- console.log(`节点校验已启用: ${cmdOpts.rule.map((r) => `「${r}」`).join(' AND ')} (conformanceId=${conformanceId})`);
457
+ console.log(`节点校验已启用: ${cmdOpts.rulesJson ? '组合条件' : cmdOpts.rule.map((r) => `「${r}」`).join(' AND ')} (conformanceId=${conformanceId})`);
314
458
  });
315
459
  }
316
460
  //# sourceMappingURL=workflow-node-validate.js.map