weaver-e10-builder 1.5.12 → 1.5.13

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 (58) hide show
  1. package/dist/commands/designer-common.d.ts.map +1 -1
  2. package/dist/commands/designer-common.js +91 -0
  3. package/dist/commands/designer-common.js.map +1 -1
  4. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  5. package/dist/commands/form-add-detail-table.js +97 -1
  6. package/dist/commands/form-add-detail-table.js.map +1 -1
  7. package/dist/commands/form-formula.d.ts.map +1 -1
  8. package/dist/commands/form-formula.js +21 -4
  9. package/dist/commands/form-formula.js.map +1 -1
  10. package/dist/commands/form.d.ts.map +1 -1
  11. package/dist/commands/form.js +333 -25
  12. package/dist/commands/form.js.map +1 -1
  13. package/dist/commands/workflow.d.ts.map +1 -1
  14. package/dist/commands/workflow.js +18 -4
  15. package/dist/commands/workflow.js.map +1 -1
  16. package/dist/services/actionflow/context_preflight.d.ts +5 -0
  17. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  18. package/dist/services/actionflow/context_preflight.js +88 -34
  19. package/dist/services/actionflow/context_preflight.js.map +1 -1
  20. package/dist/services/actionflow/filter_rules.d.ts.map +1 -1
  21. package/dist/services/actionflow/filter_rules.js +9 -8
  22. package/dist/services/actionflow/filter_rules.js.map +1 -1
  23. package/dist/services/actionflow/formula_service.d.ts +2 -1
  24. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  25. package/dist/services/actionflow/formula_service.js +34 -15
  26. package/dist/services/actionflow/formula_service.js.map +1 -1
  27. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  28. package/dist/services/actionflow/preflight_service.js +3 -3
  29. package/dist/services/actionflow/preflight_service.js.map +1 -1
  30. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  31. package/dist/services/actionflow/workflow_compiler.js +25 -13
  32. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  33. package/dist/services/form-linkage-condition.d.ts +15 -0
  34. package/dist/services/form-linkage-condition.d.ts.map +1 -1
  35. package/dist/services/form-linkage-condition.js +19 -10
  36. package/dist/services/form-linkage-condition.js.map +1 -1
  37. package/dist/services/form-sub-detail.d.ts +25 -0
  38. package/dist/services/form-sub-detail.d.ts.map +1 -1
  39. package/dist/services/form-sub-detail.js +64 -0
  40. package/dist/services/form-sub-detail.js.map +1 -1
  41. package/dist/services/workflow-operator.d.ts +12 -5
  42. package/dist/services/workflow-operator.d.ts.map +1 -1
  43. package/dist/services/workflow-operator.js +41 -16
  44. package/dist/services/workflow-operator.js.map +1 -1
  45. package/package.json +1 -1
  46. package/skill-docs/SKILL.md +37 -173
  47. package/skill-docs/_catalog.md +3 -1
  48. package/skill-docs/references/coding/guide-page-code.md +2 -0
  49. package/skill-docs/references/coding/ref-compile-rules.md +2 -0
  50. package/skill-docs/references/common/capability-boundaries.md +15 -0
  51. package/skill-docs/references/common/guide-install.md +44 -0
  52. package/skill-docs/references/common/guide-plan-template.md +167 -167
  53. package/skill-docs/references/common/map.md +9 -0
  54. package/skill-docs/references/common/ref-cli-commands.md +650 -648
  55. package/skill-docs/references/form/guide-field-linkage.md +56 -14
  56. package/skill-docs/references/form/guide-form-formula-functions.md +354 -343
  57. package/skill-docs/references/form/guide-form-linkage.md +56 -66
  58. package/skill-docs/references/workflow/guide-workflow.md +1 -1
@@ -65,6 +65,14 @@ export function contextTableNameForRoot(root) {
65
65
  : root && isComponentContextRoot(root) ? root
66
66
  : '表单数据';
67
67
  }
68
+ function requireResolvedContextRoot(meta, componentType, paramKey) {
69
+ const root = String(meta?._context_table_primary_key || '').trim();
70
+ if (root)
71
+ return root;
72
+ if (componentType === 'CustomTrigger')
73
+ return 'SelectParams';
74
+ throw new Error(`[context] 字段 '${paramKey}' 缺少 getComponentContext 返回的 tablePrimaryKey,拒绝猜测上下文根`);
75
+ }
68
76
  /**
69
77
  * 自定义触发的来源 key 只保存业务路径,不能把公式根节点混进 paramKey。
70
78
  * 主表与明细表必须共用同一个主表路径,例如:
@@ -227,7 +235,7 @@ function resolveFormSettingSubKey(paramKey, meta) {
227
235
  */
228
236
  function resolveBasisSubKey(paramKey, basisParamKey, basisType, meta, resolved) {
229
237
  const kind = String(basisType || '').toLowerCase();
230
- const root = resolvedContextRoot(resolved, String(resolved.componentType || meta?._context_component_type || ''), '');
238
+ const root = resolvedContextRoot(resolved, String(resolved.componentType || meta?._context_component_type || ''));
231
239
  const selected = protocolParamKey(String(paramKey || ''), root, String(resolved.componentType || meta?._context_component_type || ''));
232
240
  const basis = protocolParamKey(String(basisParamKey || ''), root, String(resolved.componentType || meta?._context_component_type || ''));
233
241
  if (!basis || selected === basis)
@@ -287,7 +295,7 @@ export function contextMetaForReference(meta, reference, componentType = '') {
287
295
  : normalizeContextParamKey(selectedRaw, type);
288
296
  return projected;
289
297
  }
290
- export function resolvedContextRoot(resolved, componentType, fallback = '') {
298
+ export function resolvedContextRoot(resolved, componentType) {
291
299
  const supplied = String(resolved.tablePrimaryKey || '').trim();
292
300
  if (supplied)
293
301
  return supplied;
@@ -301,7 +309,9 @@ export function resolvedContextRoot(resolved, componentType, fallback = '') {
301
309
  if (SERVERLESS_CONTEXT_TABLES.has(key))
302
310
  return key;
303
311
  }
304
- return fallback || contextRootForComponent(componentType);
312
+ if (componentType === 'CustomTrigger')
313
+ return 'SelectParams';
314
+ throw new Error(`[context] ${String(resolved.paramKey || resolved.key || '上下文字段')} 缺少 getComponentContext 返回的 tablePrimaryKey,拒绝按 ${componentType || '未知组件'} 猜测上下文根`);
305
315
  }
306
316
  export function protocolParamKey(paramKey, root, componentType) {
307
317
  const raw = String(paramKey || '');
@@ -572,7 +582,11 @@ export function formulaContext(sourceComponentId, fieldKey, opts = {}) {
572
582
  const fieldName = String(opts.name || fieldKey);
573
583
  const componentType = opts.componentType || 'ApproveTrigger';
574
584
  const fieldType = opts.fieldType || 'string';
575
- const contextRoot = contextRootForComponent(componentType);
585
+ const resolvedRoot = String(opts.meta?._context_table_primary_key || '').trim();
586
+ if (opts.requireResolvedRoot && !resolvedRoot && componentType !== 'CustomTrigger') {
587
+ throw new Error(`[context] 字段 '${fieldKey}' 缺少 getComponentContext 返回的 tablePrimaryKey,拒绝猜测上下文根`);
588
+ }
589
+ const contextRoot = resolvedRoot || (componentType === 'CustomTrigger' ? 'SelectParams' : contextRootForComponent(componentType));
576
590
  const tableName = contextTableNameForRoot(contextRoot);
577
591
  const parentName = alignContextParentName(fieldKey, opts.parentName || fieldName, fieldName, opts.meta || null, { componentType });
578
592
  return {
@@ -873,11 +887,20 @@ export function buildPersonFormula(personRef, meta, appId = '', forSendMessage =
873
887
  return formulaFixed(pid || personRef.name || '');
874
888
  }
875
889
  if (directPerson) {
876
- if (ptype === 'context')
890
+ if (ptype === 'context') {
891
+ const componentType = String(personRef._resolvedContext?.componentType || personRef.componentType || meta?._context_component_type || 'ApproveTrigger');
892
+ const contextRoot = String(personRef._resolvedContext?.tablePrimaryKey || meta?._context_table_primary_key || '').trim();
893
+ if (!contextRoot && componentType !== 'CustomTrigger') {
894
+ throw new Error(`[context] 人员字段 '${pid}' 缺少 getComponentContext 返回的 tablePrimaryKey,拒绝猜测上下文根`);
895
+ }
877
896
  return formulaContext('', pid, {
878
897
  name: String(personRef.name || personRef.label || pid),
879
898
  frontId: personRef.frontId || personRef.fieldId || personRef._resolvedContext?.fieldId,
899
+ componentType,
900
+ meta: contextRoot ? { ...meta, _context_table_primary_key: contextRoot } : meta,
901
+ requireResolvedRoot: true,
880
902
  });
903
+ }
881
904
  const pname = String(personRef.name || personRef.label || '');
882
905
  if (pid && pname && pid !== '{userid}' && pid !== 'currentUser') {
883
906
  const personObj = buildPersonObject(pid, pname);
@@ -1525,7 +1548,7 @@ export function assignFlatContext(paramKey, fieldLabel, sourceId, appId, fieldTy
1525
1548
  const fid = genSfId();
1526
1549
  const src = String(sourceId) || '0';
1527
1550
  const componentType = String(meta?._context_component_type || meta?._upstream_component_type || '');
1528
- const contextRoot = contextRootForComponent(componentType);
1551
+ const contextRoot = requireResolvedContextRoot(meta, componentType, paramKey);
1529
1552
  const tableName = contextTableNameForRoot(contextRoot);
1530
1553
  const val = valueFull
1531
1554
  ? String(valueFull).replace(/^(?:FormData|ApprovalData|SelectParams)\./, `${contextRoot}.`)
@@ -1604,7 +1627,7 @@ export function assignFlatContextDirect(paramKey, fieldLabel, sourceId, appId, f
1604
1627
  }
1605
1628
  const componentType = String(meta?._context_component_type || meta?._upstream_component_type || '');
1606
1629
  const explicitContextRoot = String(meta?._context_table_primary_key || '').trim();
1607
- const contextRoot = explicitContextRoot || contextRootForComponent(componentType);
1630
+ const contextRoot = explicitContextRoot || requireResolvedContextRoot(meta, componentType, requestedPkey);
1608
1631
  const parameterContext = isParameterContext(componentType, requestedPkey, contextRoot);
1609
1632
  const parameterTable = parameterContext
1610
1633
  ? contextRoot
@@ -1728,9 +1751,7 @@ function assignFlatEsbChild(paramKey, fieldLabel, sourceId, appId, fieldType = '
1728
1751
  const sourceComponent = String(resolved.componentType || componentType || 'ApproveTrigger');
1729
1752
  // EsbFormDataDto/CustSetFormDto 的依据值下级协议使用表单设置根;
1730
1753
  // 只有 API 已回填 tablePrimaryKey 时才采用来源组件的实际参数根。
1731
- const contextRoot = resolvedContextRoot(resolved, sourceComponent, sourceComponent === 'CustomTrigger'
1732
- ? 'SelectParams'
1733
- : parameterContextRoot(paramKey, sourceComponent) || 'FormData');
1754
+ const contextRoot = resolvedContextRoot(resolved, sourceComponent);
1734
1755
  const sourceMeta = contextMetaForReference(meta, { paramKey, _resolvedContext: resolved }, sourceComponent);
1735
1756
  const rawField = resolved.rawField && typeof resolved.rawField === 'object' ? resolved.rawField : {};
1736
1757
  const rawDetailPk = detailParamKey || basisParamKey || (paramKey.includes('[]') ? paramKey.slice(0, paramKey.indexOf('[]')) + '[]' : '');
@@ -1790,9 +1811,7 @@ function assignFlatEsbChild(paramKey, fieldLabel, sourceId, appId, fieldType = '
1790
1811
  function assignBasisFormulaArgument(paramKey, fieldLabel, sourceId, appId, fieldType, basisParamKey, basisType, meta, resolvedContext = {}) {
1791
1812
  const fid = genSfId();
1792
1813
  const sourceComponent = String(resolvedContext.componentType || meta?._context_component_type || meta?._upstream_component_type || 'ApproveTrigger');
1793
- const contextRoot = resolvedContextRoot(resolvedContext, sourceComponent, sourceComponent === 'CustomTrigger'
1794
- ? 'SelectParams'
1795
- : parameterContextRoot(paramKey, sourceComponent) || 'FormData');
1814
+ const contextRoot = resolvedContextRoot(resolvedContext, sourceComponent);
1796
1815
  const selectedParamKey = protocolParamKey(String(paramKey), contextRoot, sourceComponent);
1797
1816
  const selectedBasisKey = protocolParamKey(String(basisParamKey), contextRoot, sourceComponent);
1798
1817
  const relative = selectedParamKey.startsWith(`${selectedBasisKey}.`)
@@ -1855,8 +1874,9 @@ function assignBasisFormulaArgument(paramKey, fieldLabel, sourceId, appId, field
1855
1874
  function formulaIndexedWorkflowDetailArgument(paramKey, fieldLabel, sourceId, appId, fieldType = 'string', detailLabel = '', meta = {}, resolvedFrontId = '', resolvedContext = {}) {
1856
1875
  const fid = genSfId();
1857
1876
  const sourceComponent = String(resolvedContext.componentType || meta?._context_component_type || meta?._upstream_component_type || 'ApproveTrigger');
1877
+ const contextRoot = resolvedContextRoot(resolvedContext, sourceComponent);
1858
1878
  const parameterRoot = (sourceComponent === 'WebHookTrigger' || sourceComponent === 'ServerlessAction')
1859
- ? String(resolvedContext.tablePrimaryKey || resolvedContext.tableKey || meta?._context_table_primary_key || parameterContextRoot(paramKey, sourceComponent) || '')
1879
+ ? contextRoot
1860
1880
  : '';
1861
1881
  const normalizedParamKey = parameterRoot
1862
1882
  ? protocolParamKey(String(paramKey), parameterRoot, sourceComponent)
@@ -1879,7 +1899,6 @@ function formulaIndexedWorkflowDetailArgument(paramKey, fieldLabel, sourceId, ap
1879
1899
  index.name = '0';
1880
1900
  index.position = genSfId();
1881
1901
  index.parentId = fid;
1882
- const contextRoot = parameterRoot || contextRootForComponent(sourceComponent);
1883
1902
  const tableName = parameterRoot
1884
1903
  ? String(resolvedContext.tableName || meta?._context_table_name || contextRoot)
1885
1904
  : contextTableNameForRoot(contextRoot);