@rytass/bpm-core-shared 0.23.0 → 0.24.0

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
1
+ ## 0.24.0 (2026-11-14)
2
+
3
+ ### 🚀 Features
4
+
5
+ - **bpm-core:** page the stuck approval instance list ([6cd50975](https://github.com/Rytass/BPMCore/commit/6cd50975))
6
+ - **bpm-core-react:** mount the stuck approval instances page like the other admin pages ([fc19c298](https://github.com/Rytass/BPMCore/commit/fc19c298))
7
+ - let reassignMemberTasks take an optional list of task ids ([4b3c22a1](https://github.com/Rytass/BPMCore/commit/4b3c22a1))
8
+ - **shared:** let a manager chain continue an earlier chain or skip when its start already qualifies ([fbcd813c](https://github.com/Rytass/BPMCore/commit/fbcd813c))
9
+
10
+ ### 🩹 Fixes
11
+
12
+ - **bpm-core:** tell the initiator of an administrator cancel only after it commits ([2fca97e7](https://github.com/Rytass/BPMCore/commit/2fca97e7))
13
+ - **bpm-core:** export the administrator cancel input like the other workflow inputs ([988981ae](https://github.com/Rytass/BPMCore/commit/988981ae))
14
+
15
+ ### 🔥 Performance
16
+
17
+ - **workflow-engine:** index the ADVANCE_FAILED rows the stuck list reads ([2cf16d8d](https://github.com/Rytass/BPMCore/commit/2cf16d8d))
18
+
19
+ ### ❤️ Thank You
20
+
21
+ - Chia Yu Pai @fantasywind
22
+ - Kai-Chieh Yang
23
+
1
24
  ## 0.23.0 (2026-11-14)
2
25
 
3
26
  ### 🚀 Features
package/README.md CHANGED
@@ -70,10 +70,20 @@ without a `mode` normalize to `single`; `radio` is always single and
70
70
  `POSITION`). The `POSITION` fallback type is not released yet (it landed after
71
71
  `v0.16.2`); older engines reject it at run time.
72
72
  `ORG_MANAGER_CHAIN` also takes `startFrom` (`OrgManagerChainStart`: the
73
- initiator, the person picked in a form field, or the person who approved an
74
- earlier stage) and `startPositionLevel` (managers below it are walked past);
75
- both are optional, and an older engine ignores them and climbs from the
76
- initiator.
73
+ initiator, the person picked in a form field, the person who approved an
74
+ earlier stage, or `CHAIN_CONTINUATION` to continue an earlier manager-chain
75
+ stage by `nodeId`), `startPositionLevel` (managers below it are walked past)
76
+ and `skipWhenStartReached` (skip the whole stage when the start person's own
77
+ position level already reaches `minPositionLevel`); all are optional. A
78
+ continuation only signs managers above the level the earlier stage actually
79
+ reached, and skips the stage when that level already reaches its own
80
+ `minPositionLevel`. `CHAIN_CONTINUATION` and `skipWhenStartReached: true`
81
+ exclude each other, and a notify node may use neither
82
+ (`readOrgManagerChainIssue`); `readChainContinuationSourceIssues` checks the
83
+ earlier stage. An engine that knows `startFrom` but not `CHAIN_CONTINUATION`
84
+ refuses it by name; an engine from before `startFrom` ignores `startFrom` and
85
+ `startPositionLevel` and climbs from the initiator, and one from before
86
+ `skipWhenStartReached` ignores that key and runs the stage as before.
77
87
  - Service task actions (`ServiceAction`) have three types. The workflow engine
78
88
  executes all three at run time:
79
89
  - `NOTIFY`: `channels`, `recipients` (an `ApproverResolver`), optional
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rytass/bpm-core-shared",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "Shared TypeScript contracts for the Rytass BPM approval workflow stack (workflow, form, condition, identity, organization, status types).",
5
5
  "keywords": [
6
6
  "bpm",
@@ -11,7 +11,7 @@ export { isOnOwnParallelBranch, readReachableWorkflowNodeIds, readWorkflowParall
11
11
  * filled it in) stays in the backend: it needs the expression sources of
12
12
  * every node, which the matrix does not show.
13
13
  */
14
- export type FieldAccessIssueCode = 'applicantRuleReadsApproverFilled' | 'approverFilledFieldDataSource' | 'approverFilledFieldFileUpload' | 'approverFilledFieldFormRule' | 'approverFilledMultipleFillNodesOnPath' | 'approverFilledTableDataSourceColumn' | 'fieldAccessAutoApprove' | 'fieldAccessDuplicate' | 'fieldAccessFillHidden' | 'fieldAccessGroupPolicy' | 'fieldAccessInvalid' | 'fieldAccessSkipNode' | 'fieldAccessUnknownField' | 'legacyFieldPermissions' | 'setFormFieldApproverFilled';
14
+ export type FieldAccessIssueCode = 'applicantRuleReadsApproverFilled' | 'approverFilledFieldDataSource' | 'approverFilledFieldFileUpload' | 'approverFilledFieldFormRule' | 'approverFilledMultipleFillNodesOnPath' | 'approverFilledTableDataSourceColumn' | 'fieldAccessAutoApprove' | 'fieldAccessDuplicate' | 'fieldAccessFillHidden' | 'fieldAccessGroupPolicy' | 'fieldAccessInvalid' | 'fieldAccessManagerChainReached' | 'fieldAccessSkipNode' | 'fieldAccessUnknownField' | 'legacyFieldPermissions' | 'setFormFieldApproverFilled';
15
15
  export interface FieldAccessIssue {
16
16
  readonly code: FieldAccessIssueCode;
17
17
  /** The top-level fields the issue is about, the offending one first. */
@@ -25,9 +25,11 @@ export interface FieldAccessIssue {
25
25
  * Why a user task node cannot let its approver fill fields in: a decision
26
26
  * shared by several approvers (`PARALLEL_ALL` / `QUORUM`) has no single
27
27
  * filler, and a node that can approve or skip itself would pass without
28
- * anybody filling anything in.
28
+ * anybody filling anything in. A manager chain that skips itself when its
29
+ * start person already reaches its level (`skipWhenStartReached`, or a
30
+ * continuation of an earlier chain) can pass the same way.
29
31
  */
30
- export type UserTaskFillConflict = 'autoApprove' | 'groupPolicy' | 'skipNode';
32
+ export type UserTaskFillConflict = 'autoApprove' | 'groupPolicy' | 'managerChainReached' | 'skipNode';
31
33
  export declare function readUserTaskFillConflicts(node: UserTaskNode): readonly UserTaskFillConflict[];
32
34
  export declare const FIELD_ACCESS_DISPLAYS: readonly FieldAccessDisplay[];
33
35
  export declare const FIELD_ACCESS_FILLS: readonly FieldAccessFill[];
@@ -30,6 +30,9 @@ function readUserTaskFillConflicts(node) {
30
30
  ...(((_d = node.data.excludeInitiator) === null || _d === void 0 ? void 0 : _d.whenEmpty) === 'SKIP_NODE'
31
31
  ? ['skipNode']
32
32
  : []),
33
+ ...((0, workflow_graph_1.canUserTaskBeSkippedByManagerChain)(node)
34
+ ? ['managerChainReached']
35
+ : []),
33
36
  ];
34
37
  }
35
38
  const FILL_CONFLICT_ISSUES = {
@@ -41,6 +44,10 @@ const FILL_CONFLICT_ISSUES = {
41
44
  code: 'fieldAccessGroupPolicy',
42
45
  message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.fieldAccessGroupPolicy,
43
46
  },
47
+ managerChainReached: {
48
+ code: 'fieldAccessManagerChainReached',
49
+ message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.fieldAccessManagerChainReached,
50
+ },
44
51
  skipNode: {
45
52
  code: 'fieldAccessSkipNode',
46
53
  message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.fieldAccessSkipNode,
@@ -1 +1 @@
1
- {"version":3,"file":"field-access-lint.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/field-access-lint.ts"],"names":[],"mappings":";;;AAoFA,8DAeC;AA+FD,0DAWC;AAmBD,8DA6EC;AAUD,8DA4BC;AAiBD,0EAqEC;AAWD,0DAkCC;AAcD,kDAKC;AAyDD,0EA6CC;AAWD,8DA2FC;AArrBD,iCAMgB;AAChB,iDAOwB;AAQxB,qDAI0B;AAC1B,mEAIiC;AAK/B,sGARA,6CAAqB,OAQA;AACrB,6GARA,oDAA4B,OAQA;AAC5B,+GARA,sDAA8B,OAQA;AA8ChC,SAAgB,yBAAyB,CACvC,IAAkB;;IAElB,OAAO;QACL,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,cAAc,0CAAE,IAAI,MAAK,cAAc;YACrD,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,cAAc,0CAAE,IAAI,MAAK,QAAQ;YACzC,CAAC,CAAE,CAAC,aAAa,CAAW;YAC5B,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,SAAS,MAAK,cAAc;YAC7C,CAAC,CAAE,CAAC,aAAa,CAAW;YAC5B,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,0CAAE,SAAS,MAAK,WAAW;YACvD,CAAC,CAAE,CAAC,UAAU,CAAW;YACzB,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GAQtB;IACF,WAAW,EAAE;QACX,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,uCAAsB,CAAC,sBAAsB;KACvD;IACD,WAAW,EAAE;QACX,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,uCAAsB,CAAC,sBAAsB;KACvD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,uCAAsB,CAAC,mBAAmB;KACpD;CACF,CAAC;AAEF,SAAS,aAAa,CACpB,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAEY,QAAA,qBAAqB,GAAkC;IAClE,MAAM;IACN,MAAM;CACP,CAAC;AAEW,QAAA,kBAAkB,GAA+B;IAC5D,MAAM;IACN,UAAU;IACV,UAAU;CACX,CAAC;AAEF;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC9D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAe,EAAE,EAAE,CACjD,aAAa,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ;QAC9D,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QACrB,CAAC,CAAC,SAAS,CACd,CAAC;IAEF,OAAO,CACL,OAAO,CAAC,KAAK,CACX,CAAC,MAAe,EAAE,EAAE,CAClB,aAAa,CAAC,MAAM,CAAC;QACrB,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ;QACvC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QACjC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CACnE,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,CACpD,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CACzB,IAAgC,EAChC,KAAiC,EACxB,EAAE,CACX,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACvB,KAAK,CAAC,IAAI,CACR,CAAC,WAAW,EAAE,EAAE,CACd,UAAU,KAAK,IAAI;IACnB,WAAW,KAAK,IAAI;IACpB,UAAU,KAAK,WAAW,CAC7B,CACF,CAAC;AAEJ;;;;GAIG;AACH,SAAgB,uBAAuB,CACrC,KAAc;IAEd,OAAO,CACL,aAAa,CAAC,KAAK,CAAC;QACpB,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ;QACrC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAC/B,6BAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;QACrE,0BAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,yBAAyB,CACvC,IAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACvB,MAAM,MAAM,GAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACnD,MAAM,YAAY,GAChB,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,uCAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC;gBAC9D,OAAO,EAAE,CAAC,MAAM,CAAC;aAClB;SACF,CAAC;IACR,MAAM,GAAG,GAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAE3C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAmC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAChE,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACrE,OAAO;YACL,GAAG,YAAY;YACf;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,uCAAsB,CAAC,kBAAkB,CAAC,MAAM,CAAC;gBAC1D,OAAO,EAAE,CAAC,MAAM,CAAC;aAClB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,iBAAiB,GAAG,IAAA,yCAA0B,EAAC,IAAI,CAAC,CAAC;IAE3D,OAAO;QACL,GAAG,YAAY;QACf,GAAG,SAAS;aACT,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC;aAClE,MAAM,CACL,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK,CACpE;aACA,GAAG,CAAC,CAAC,QAAQ,EAAoB,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,sBAAsB;YAC5B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,uCAAsB,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC;YACtE,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC,CAAC;QACL,GAAG,IAAA,kCAAmB,EAAC,IAAI,CAAC;aACzB,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CACpE;aACA,GAAG,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,uBAAuB;YAC7B,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC3B,OAAO,EAAE,uCAAsB,CAAC,qBAAqB,CACnD,MAAM,EACN,KAAK,CAAC,QAAQ,CACf;YACD,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC,CAAC;QACL,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CACxE,CAAC,QAAQ,EAAoB,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IAAI;YACzC,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACvD,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC,CACH;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,yBAAyB,CACvC,UAA8B;IAE9B,MAAM,cAAc,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC9D,MAAM,aAAa,GAAG,CAAC,MAAc,EAAuB,EAAE;QAC5D,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,oDAA4B,EAAC,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3E,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEtC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAA,sDAA8B,EACrD,UAAU,EACV,aAAa,CACd,CAAC;IAEF,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAC7B,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;QACtC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QACtC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACjC,IAAA,6CAAqB,EAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CACrD,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,+BAA+B,CAC7C,UAA8B;IAE9B,MAAM,cAAc,GAAG,IAAA,0CAA2B,EAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK;SACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;SAC7C,OAAO,CAAC,CAAC,IAAI,EAA+B,EAAE;QAC7C,MAAM,MAAM,GAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,QAAQ,GACZ,aAAa,CAAC,MAAM,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,KAAK,gBAAgB;YACnC,OAAO,SAAS,KAAK,QAAQ;YAC3B,CAAC,CAAC,IAAA,2CAA4B,EAAC,SAAS,CAAC;YACzC,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC3D,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,4BAA4B;oBAClC,SAAS,EAAE,CAAC,QAAQ,CAAC;oBACrB,OAAO,EAAE,uCAAsB,CAAC,0BAA0B,CACxD,IAAI,CAAC,EAAE,EACP,QAAQ,CACT;oBACD,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;iBACnB;aACF;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IACL,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CACvC,CAAC,IAAI,EAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CACzD,CAAC;IACF,MAAM,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC1D,oEAAoE;QACpE,kEAAkE;QAClE,MAAM,OAAO,GAAG,SAAS;aACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,UAAU,EAAE,IAAA,gCAAiB,EAAC,IAAI,CAAC;iBAChC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;iBAC5C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;SACjC,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEpD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACvC,OAAO;aACJ,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;aAChB,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAC9B,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;YACvD,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAC1C;aACA,GAAG,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,uCAAuC;YAC7C,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,uCAAsB,CAAC,qCAAqC,CACnE,QAAQ,EACR,MAAM,CAAC,MAAM,EACb,KAAK,CAAC,MAAM,CACb;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;SACvC,CAAC,CAAC,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,uBAAuB,CACrC,KAA0B;IAE1B,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,CACZ,IAA0B,EAC1B,OAAe,EACG,EAAE,CAAC,CAAC;QACtB,IAAI;QACJ,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,OAAO;QACP,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,2CAA0B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAW,EAAE,CACrD,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,QAAQ;YACtC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI;YACtB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAC9B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,KAAK,CACH,6BAA6B,EAC7B,uCAAsB,CAAC,2BAA2B,CAAC,QAAQ,EAAE,IAAI,CAAC,CACnE,CACF;QACD,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;YAC9B,CAAC,CAAC;gBACE,KAAK,CACH,+BAA+B,EAC/B,uCAAsB,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAC/D;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,mBAAmB,CACjC,UAAkB,EAClB,QAAgB;IAEhB,OAAO,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAC1B,UAAkB,EAClB,IAAY,EACZ,GAAW;IAEX,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,wBAAwB,IAAI,MAAM,CAAC;IAEvD,OAAO;QACL,IAAI,MAAM,CAAC,GAAG,WAAW,UAAU,UAAU,qBAAqB,EAAE,GAAG,CAAC;QACxE,IAAI,MAAM,CAAC,GAAG,WAAW,cAAc,UAAU,aAAa,EAAE,GAAG,CAAC;KACrE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAChD,CAAC;AAcD,MAAM,uBAAuB,GAAG,CAC9B,KAA2B,EAC3B,eAAuB,EACJ,EAAE,CACrB,KAAK,CAAC,OAAO;KACV,MAAM,CACL,CAAC,MAAM,EAAW,EAAE,CAClB,IAAA,sCAA+B,EAAC,MAAM,CAAC;IACvC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAW,EAAE,CACpD,IAAI,CAAC,IAAI,KAAK,WAAW;QACvB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,eAAe;QACpC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY;YAC1B,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,CACjE,CACJ;KACA,GAAG,CAAC,CAAC,MAAM,EAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE9C;;;;;;GAMG;AACH,SAAgB,+BAA+B,CAC7C,MAAmC,EACnC,KAAqC;IAErC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,KAAK;SACF,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAW,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC;SACtD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAU,EAAE,CAAC,QAAQ,CAAC,CAC3C,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAC1B,CAAC,KAAK,EAAyC,EAAE;QAC/C,IACE,CAAC,IAAA,6BAAsB,EAAC,KAAK,CAAC;YAC9B,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAClC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAqB,EAAE,CAC3D,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CACF,CAAC;QAEF,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC,OAAO,CAChC,CAAC,eAAe,EAAyC,EAAE,CACzD,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC;aAC5C,MAAM,CACL,CAAC,kBAAkB,EAAW,EAAE,CAC9B,kBAAkB,KAAK,eAAe;YACtC,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAC1C;aACA,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC5B,kBAAkB;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,eAAe;SAChB,CAAC,CAAC,CACR,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,yBAAyB,CACvC,UAA8B,EAC9B,MAAmC;;IAEnC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,EAAE,CAAC,CAAC,GAAG,CACxB,CAAC,KAAK,EAA0C,EAAE,CAAC;QACjD,KAAK,CAAC,QAAQ;QACd,KAAK;KACN,CACF,CACF,CAAC;IACF,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CACvC,CAAC,IAAI,EAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CACzD,CAAC;IACF,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAC1C,CAAC,IAAI,EAA+B,EAAE,CACpC,IAAA,kCAAmB,EAAC,IAAI,CAAC;SACtB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAW,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,IAAI,EAAE,yBAAyB;QAC/B,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,OAAO,EAAE,uCAAsB,CAAC,uBAAuB,CACrD,IAAI,CAAC,EAAE,EACP,QAAQ,CACT;QACD,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KACnB,CAAC,CAAC,CACR,CAAC;IACF,MAAM,cAAc,GAAG,IAAA,0CAA2B,EAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,mBAAmB,GAAG,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,EAAE,CAAC;SAC/C,MAAM,CAAC,CAAC,KAAK,EAAW,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC/D,OAAO,CAAC,CAAC,KAAK,EAA+B,EAAE,CAC9C,gDAA+B,CAAC,OAAO,CACrC,CAAC,IAAI,EAA+B,EAAE;QACpC,MAAM,UAAU,GAAY,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,OAAO,OAAO,UAAU,KAAK,QAAQ;YACnC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;iBAChB,MAAM,CAAC,CAAC,QAAQ,EAAW,EAAE,CAC5B,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAC1C;iBACA,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAClB,IAAI,EAAE,kCAAkC;gBACxC,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACrC,OAAO,EACL,uCAAsB,CAAC,gCAAgC,CACrD,KAAK,CAAC,QAAQ,EACd,IAAI,EACJ,QAAQ,CACT;gBACH,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC;YACP,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CACF,CACF,CAAC;IACJ,MAAM,WAAW,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,OAAO,CAC7C,CAAC,QAAQ,EAA+B,EAAE;QACxC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,2EAA2E;IAC3E,mDAAmD;IACnD,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CACxC,CAAC,IAAI,EAA+B,EAAE,CACpC,+BAA+B,CAAC,MAAM,EAAE,IAAA,gCAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAClE,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,EAAE,qCAAqC;QAC3C,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,OAAO,EAAE,uCAAsB,CAAC,mCAAmC,CACjE,IAAI,CAAC,EAAE,EACP,QAAQ,EACR,eAAe,EACf,kBAAkB,CACnB;QACD,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KACnB,CAAC,CACH,CACJ,CAAC;IAEF,OAAO;QACL,GAAG,kBAAkB;QACrB,GAAG,WAAW;QACd,GAAG,gBAAgB;QACnB,GAAG,mBAAmB;KACvB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"field-access-lint.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/field-access-lint.ts"],"names":[],"mappings":"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"}
@@ -87,6 +87,7 @@ export declare const WORKFLOW_LINT_MESSAGES: Readonly<{
87
87
  fieldAccessFillHidden: (nodeId: string, fieldKey: string) => string;
88
88
  fieldAccessGroupPolicy: (nodeId: string) => string;
89
89
  fieldAccessInvalid: (nodeId: string) => string;
90
+ fieldAccessManagerChainReached: (nodeId: string) => string;
90
91
  fieldAccessSkipNode: (nodeId: string) => string;
91
92
  fieldAccessUnknownField: (nodeId: string, fieldKey: string) => string;
92
93
  legacyFieldPermissions: (nodeId: string) => string;
@@ -317,9 +318,11 @@ export declare function readExcludeNodeActorsIssues(definition: WorkflowDefiniti
317
318
  */
318
319
  export declare function isOrgManagerChainDecisionPolicyInvalid(resolver: ApproverResolver, decisionPolicy: DecisionPolicy | undefined): boolean;
319
320
  /**
320
- * The designer-facing issue with the two optional settings of an
321
- * `ORG_MANAGER_CHAIN` (`minPositionLevel`, `startFrom`, `startPositionLevel`),
322
- * or `null` when all are well-formed. `subject` names the node kind in the
321
+ * The designer-facing issue with the optional settings of an
322
+ * `ORG_MANAGER_CHAIN` (`minPositionLevel`, `startFrom`, `startPositionLevel`,
323
+ * `skipWhenStartReached`), or `null` when all are well-formed. A
324
+ * `CHAIN_CONTINUATION` start and `skipWhenStartReached` exclude each other,
325
+ * and a notify node may use neither. `subject` names the node kind in the
323
326
  * sentence; a notify node's chain may only start at the initiator (it has no
324
327
  * earlier stage and no form pick to start from). Reads defensively: on the
325
328
  * backend the definition is parsed JSON that no DTO has validated. The form
@@ -341,14 +344,24 @@ export declare function readApproverResolverIssue(resolver: ApproverResolver): s
341
344
  * - `skipNodeByNodeActors`: `excludeNodeActors.whenEmpty: 'SKIP_NODE'` skips
342
345
  * it when removing an earlier stage's approvers leaves nobody;
343
346
  * - `autoApprove`: `sla.onTimeout: 'AUTO_APPROVE'` lets the timeout approve
344
- * it, and the engine does not count an SLA approval as anyone's signature.
347
+ * it, and the engine does not count an SLA approval as anyone's signature;
348
+ * - `managerChainReached`: a manager chain with `skipWhenStartReached: true`,
349
+ * or one that continues an earlier chain (`CHAIN_CONTINUATION`), skips the
350
+ * whole stage when the start person already reaches its level.
345
351
  *
346
352
  * `[]` means the node always has a real signer once it has run. The designer's
347
353
  * stage pickers, `readNodeActorSourceIssues` and
348
354
  * `readExcludeNodeActorsIssues` all read this list, so they cannot disagree on
349
355
  * which stages qualify.
350
356
  */
351
- export type NodeActorSourceSkipReason = 'autoApprove' | 'entryCondition' | 'skipNode' | 'skipNodeByNodeActors';
357
+ export type NodeActorSourceSkipReason = 'autoApprove' | 'entryCondition' | 'managerChainReached' | 'skipNode' | 'skipNodeByNodeActors';
358
+ /**
359
+ * `true` when an `ORG_MANAGER_CHAIN` user task can skip its whole stage
360
+ * because the start person already reaches the chain's level: it sets
361
+ * `skipWhenStartReached: true`, or continues an earlier chain. Reads the raw
362
+ * resolver, which can be missing or malformed on a draft.
363
+ */
364
+ export declare function canUserTaskBeSkippedByManagerChain(node: UserTaskNode): boolean;
352
365
  export declare function readNodeActorSourceSkipReasons(node: UserTaskNode): readonly NodeActorSourceSkipReason[];
353
366
  /**
354
367
  * The graph checks behind a `NODE_ACTOR` / `NODE_ACTOR_MANAGER` node: the
@@ -412,6 +425,49 @@ export declare function canUserTaskHaveMultipleApprovers(node: UserTaskNode): bo
412
425
  * user task is reported there, not here.
413
426
  */
414
427
  export declare function readSingleApproverSourceIssues(definition: WorkflowDefinition, sourceNodeIds: readonly string[]): readonly string[];
428
+ /**
429
+ * The publish-time issues with a manager-chain stage that continues an earlier
430
+ * one (`startFrom: { type: 'CHAIN_CONTINUATION', nodeId }`); `[]` when `nodeId`
431
+ * is not such a stage or everything is sound. Returns Chinese issue lines for
432
+ * the designer and the publish lint. `nodeId` is the continuing stage (T); the
433
+ * stage it names is S. The shape of the start itself is
434
+ * {@link readOrgManagerChainIssue}'s.
435
+ *
436
+ * About S, and reported on its own (nothing else about S is read once one of
437
+ * them fails):
438
+ *
439
+ * 1. it is not T itself, exists and is a `userTask`;
440
+ * 2. its approver is an `ORG_MANAGER_CHAIN`;
441
+ * 3. it is not a continuation itself: stages are not chained more than once;
442
+ * 4. its start is the initiator or an earlier stage's approver
443
+ * (`INITIATOR` / `NODE_ACTOR`, absent reads as the initiator). A
444
+ * `FORM_MEMBER` start can change when the applicant revises the form, while
445
+ * the approvals T reads are those of the old start.
446
+ *
447
+ * Then, reported together:
448
+ *
449
+ * 5. S may not be skipped by `entryCondition`, `skipNode` or
450
+ * `skipNodeByNodeActors`. This deliberately does **not** reuse
451
+ * {@link readNodeActorSourceSkipReasons} as a whole, which
452
+ * {@link readExcludeNodeActorsIssues} does: S skipped for
453
+ * `managerChainReached` is read by the engine as "nobody reached a level"
454
+ * and S with an SLA auto-approval is not counted, so both stay allowed;
455
+ * 6. every path from the start to T goes through S, and S is upstream of T
456
+ * (the coverage and upstream rules of {@link readExcludeNodeActorsIssues}).
457
+ *
458
+ * About T itself, always reported:
459
+ *
460
+ * 7. T's `minPositionLevel` is higher than S's: at or below it, any S that
461
+ * reaches its own level would skip T every time, which is almost never
462
+ * intended;
463
+ * 8. T may not hand over to the initiator's manager when it runs out of people
464
+ * (`whenEmpty: INITIATOR_MANAGER` of `excludeInitiator` or
465
+ * `excludeNodeActors`): that manager ignores the level S reached and may be
466
+ * the person who just signed.
467
+ *
468
+ * The graph is a DAG: the publish lint refuses cycles before this runs.
469
+ */
470
+ export declare function readChainContinuationSourceIssues(definition: WorkflowDefinition, nodeId: string): readonly string[];
415
471
  export declare function hasConfiguredConditionEdges(definition: WorkflowDefinition): boolean;
416
472
  export declare function readServiceTaskMemberIds(action: ServiceAction): readonly string[];
417
473
  export declare const NOTIFY_WEBHOOK_TARGET_LIMIT = 10;
@@ -40,10 +40,12 @@ exports.readExcludeNodeActorsIssues = readExcludeNodeActorsIssues;
40
40
  exports.isOrgManagerChainDecisionPolicyInvalid = isOrgManagerChainDecisionPolicyInvalid;
41
41
  exports.readOrgManagerChainIssue = readOrgManagerChainIssue;
42
42
  exports.readApproverResolverIssue = readApproverResolverIssue;
43
+ exports.canUserTaskBeSkippedByManagerChain = canUserTaskBeSkippedByManagerChain;
43
44
  exports.readNodeActorSourceSkipReasons = readNodeActorSourceSkipReasons;
44
45
  exports.readNodeActorSourceIssues = readNodeActorSourceIssues;
45
46
  exports.canUserTaskHaveMultipleApprovers = canUserTaskHaveMultipleApprovers;
46
47
  exports.readSingleApproverSourceIssues = readSingleApproverSourceIssues;
48
+ exports.readChainContinuationSourceIssues = readChainContinuationSourceIssues;
47
49
  exports.hasConfiguredConditionEdges = hasConfiguredConditionEdges;
48
50
  exports.readServiceTaskMemberIds = readServiceTaskMemberIds;
49
51
  exports.defaultNotifyWebhookTargetId = defaultNotifyWebhookTargetId;
@@ -169,6 +171,7 @@ exports.WORKFLOW_LINT_MESSAGES = Object.freeze({
169
171
  fieldAccessFillHidden: (nodeId, fieldKey) => `workflow.nodes.${nodeId}.fieldAccess cannot let a field be filled in while it is hidden: ${fieldKey}`,
170
172
  fieldAccessGroupPolicy: (nodeId) => `workflow.nodes.${nodeId}.fieldAccess cannot make fields fillable on a PARALLEL_ALL or QUORUM node`,
171
173
  fieldAccessInvalid: (nodeId) => `workflow.nodes.${nodeId}.fieldAccess is invalid`,
174
+ fieldAccessManagerChainReached: (nodeId) => `workflow.nodes.${nodeId}.approverResolver cannot set skipWhenStartReached or continue another chain on a node with fillable fields`,
172
175
  fieldAccessSkipNode: (nodeId) => `workflow.nodes.${nodeId}.excludeInitiator.whenEmpty cannot be SKIP_NODE on a node with fillable fields`,
173
176
  fieldAccessUnknownField: (nodeId, fieldKey) => `workflow.nodes.${nodeId}.fieldAccess must name a field of the bound form: ${fieldKey}`,
174
177
  legacyFieldPermissions: (nodeId) => `workflow.nodes.${nodeId}.fieldPermissions is no longer supported: remove it and use fieldAccess instead`,
@@ -881,9 +884,11 @@ function isOrgManagerChainDecisionPolicyInvalid(resolver, decisionPolicy) {
881
884
  (decisionPolicy === null || decisionPolicy === void 0 ? void 0 : decisionPolicy.type) !== 'PARALLEL_ALL');
882
885
  }
883
886
  /**
884
- * The designer-facing issue with the two optional settings of an
885
- * `ORG_MANAGER_CHAIN` (`minPositionLevel`, `startFrom`, `startPositionLevel`),
886
- * or `null` when all are well-formed. `subject` names the node kind in the
887
+ * The designer-facing issue with the optional settings of an
888
+ * `ORG_MANAGER_CHAIN` (`minPositionLevel`, `startFrom`, `startPositionLevel`,
889
+ * `skipWhenStartReached`), or `null` when all are well-formed. A
890
+ * `CHAIN_CONTINUATION` start and `skipWhenStartReached` exclude each other,
891
+ * and a notify node may use neither. `subject` names the node kind in the
887
892
  * sentence; a notify node's chain may only start at the initiator (it has no
888
893
  * earlier stage and no form pick to start from). Reads defensively: on the
889
894
  * backend the definition is parsed JSON that no DTO has validated. The form
@@ -913,11 +918,29 @@ function readOrgManagerChainIssue(resolver, subject) {
913
918
  (!Array.isArray(start.nodeIds) || start.nodeIds.length === 0)) {
914
919
  return `${subject}需要指定主管鏈起點的前面簽核關卡。`;
915
920
  }
921
+ if (start.type === 'CHAIN_CONTINUATION' &&
922
+ (typeof start.nodeId !== 'string' || !start.nodeId.trim())) {
923
+ return `${subject}需要指定要接續的前一段主管鏈關卡。`;
924
+ }
925
+ }
926
+ const rawSkip = resolver.skipWhenStartReached;
927
+ if (rawSkip !== undefined &&
928
+ rawSkip !== null &&
929
+ typeof rawSkip !== 'boolean') {
930
+ return `${subject}的「起點本人已達簽到職等時略過」只能是勾選或不勾選。`;
916
931
  }
917
932
  if (subject === '知會節點' &&
918
933
  !(0, workflow_1.isOrgManagerChainStartedFromInitiator)(resolver)) {
919
934
  return '知會節點的主管鏈只能從發起人開始。';
920
935
  }
936
+ if (subject === '知會節點' &&
937
+ (0, workflow_1.isOrgManagerChainSkippingWhenStartReached)(resolver)) {
938
+ return '知會節點的主管鏈不能設定「起點本人已達簽到職等時略過」。';
939
+ }
940
+ if ((0, workflow_1.isOrgManagerChainContinuation)(resolver) &&
941
+ (0, workflow_1.isOrgManagerChainSkippingWhenStartReached)(resolver)) {
942
+ return `${subject}不能同時接續前一段主管鏈又設定「起點本人已達簽到職等時略過」。`;
943
+ }
921
944
  const rawStartLevel = resolver.startPositionLevel;
922
945
  if (rawStartLevel === undefined || rawStartLevel === null) {
923
946
  return null;
@@ -994,6 +1017,18 @@ function readApproverResolverIssue(resolver) {
994
1017
  }
995
1018
  return null;
996
1019
  }
1020
+ /**
1021
+ * `true` when an `ORG_MANAGER_CHAIN` user task can skip its whole stage
1022
+ * because the start person already reaches the chain's level: it sets
1023
+ * `skipWhenStartReached: true`, or continues an earlier chain. Reads the raw
1024
+ * resolver, which can be missing or malformed on a draft.
1025
+ */
1026
+ function canUserTaskBeSkippedByManagerChain(node) {
1027
+ const resolver = node.data.approverResolver;
1028
+ return ((resolver === null || resolver === void 0 ? void 0 : resolver.type) === 'ORG_MANAGER_CHAIN' &&
1029
+ ((0, workflow_1.isOrgManagerChainSkippingWhenStartReached)(resolver) ||
1030
+ (0, workflow_1.isOrgManagerChainContinuation)(resolver)));
1031
+ }
997
1032
  function readNodeActorSourceSkipReasons(node) {
998
1033
  var _a, _b, _c, _d;
999
1034
  return [
@@ -1007,11 +1042,15 @@ function readNodeActorSourceSkipReasons(node) {
1007
1042
  ...(((_d = node.data.sla) === null || _d === void 0 ? void 0 : _d.onTimeout) === 'AUTO_APPROVE'
1008
1043
  ? ['autoApprove']
1009
1044
  : []),
1045
+ ...(canUserTaskBeSkippedByManagerChain(node)
1046
+ ? ['managerChainReached']
1047
+ : []),
1010
1048
  ];
1011
1049
  }
1012
1050
  const NODE_ACTOR_SOURCE_SKIP_ISSUES = {
1013
1051
  autoApprove: (label) => `簽核來源的前面關卡 ${label} 設有逾時自動核准,可能沒有人實際簽核。`,
1014
1052
  entryCondition: (label) => `簽核來源的前面關卡 ${label} 設有進入條件,可能被跳過、沒有人簽核。`,
1053
+ managerChainReached: (label) => `簽核來源的前面關卡 ${label} 的主管鏈在起點本人已達簽到職等時會整關略過,可能沒有人簽核。`,
1015
1054
  skipNode: (label) => `簽核來源的前面關卡 ${label} 在排除發起人後沒人時會跳過此關,可能沒有人簽核。`,
1016
1055
  skipNodeByNodeActors: (label) => `簽核來源的前面關卡 ${label} 在排除前面關卡的簽核者後沒人時會跳過此關,可能沒有人簽核。`,
1017
1056
  };
@@ -1026,6 +1065,7 @@ const EXCLUDE_NODE_ACTORS_STAGE_TEXTS = {
1026
1065
  skip: {
1027
1066
  autoApprove: (stageLabel) => `排除對象的前面關卡 ${stageLabel} 設有逾時自動核准,可能沒有人實際簽核,這一關就排除不到任何人。請移除逾時自動核准,或改選其他關卡。`,
1028
1067
  entryCondition: (stageLabel) => `排除對象的前面關卡 ${stageLabel} 設有進入條件,可能被跳過;被跳過時會改讀到上一輪的簽核者。請改用分流,把兩關放在同一條路線上。`,
1068
+ managerChainReached: (stageLabel) => `排除對象的前面關卡 ${stageLabel} 的主管鏈在起點本人已達簽到職等時會整關略過,可能被跳過;被跳過時會改讀到上一輪的簽核者。請改選其他關卡。`,
1029
1069
  skipNode: (stageLabel) => `排除對象的前面關卡 ${stageLabel} 在排除發起人後沒人時會跳過此關,可能被跳過;被跳過時會改讀到上一輪的簽核者。請改選其他處理方式。`,
1030
1070
  skipNodeByNodeActors: (stageLabel) => `排除對象的前面關卡 ${stageLabel} 在排除前面關卡的簽核者後沒人時會跳過此關,可能被跳過;被跳過時會改讀到上一輪的簽核者。請改選其他處理方式。`,
1031
1071
  },
@@ -1057,6 +1097,21 @@ function readSourceStageIssues(definition, nodeId, stageIds, coverageGroups, tex
1057
1097
  ? readNodeActorSourceSkipReasons(node).map((reason) => texts.skip[reason](labelOf(node.id)))
1058
1098
  : [];
1059
1099
  });
1100
+ return [
1101
+ ...skippableIssues,
1102
+ ...readSourceStagePositionIssues(definition, nodeId, stageIds, coverageGroups, texts),
1103
+ ];
1104
+ }
1105
+ /**
1106
+ * The coverage and upstream halves of {@link readSourceStageIssues}, without
1107
+ * its skip-reason rule: for a reader (the manager-chain continuation) that
1108
+ * accepts some of the reasons a stage may be skipped for and brings its own.
1109
+ */
1110
+ function readSourceStagePositionIssues(definition, nodeId, stageIds, coverageGroups, texts) {
1111
+ const labelOf = (id) => {
1112
+ const node = definition.nodes.find((candidate) => candidate.id === id);
1113
+ return (node === null || node === void 0 ? void 0 : node.data.label) ? `「${node.data.label}」` : `「${id}」`;
1114
+ };
1060
1115
  const startNodeIds = definition.nodes
1061
1116
  .filter((node) => node.type === 'startEvent')
1062
1117
  .map((node) => node.id);
@@ -1066,7 +1121,7 @@ function readSourceStageIssues(definition, nodeId, stageIds, coverageGroups, tex
1066
1121
  const notUpstreamIssues = stageIds
1067
1122
  .filter((id) => !(0, workflow_reachability_1.readReachableWorkflowNodeIds)(definition.edges, [id]).has(nodeId))
1068
1123
  .map((id) => texts.notUpstream(labelOf(id), labelOf(nodeId)));
1069
- return [...skippableIssues, ...coverageIssues, ...notUpstreamIssues];
1124
+ return [...coverageIssues, ...notUpstreamIssues];
1070
1125
  }
1071
1126
  /**
1072
1127
  * The graph checks behind a `NODE_ACTOR` / `NODE_ACTOR_MANAGER` node: the
@@ -1195,6 +1250,155 @@ function readSingleApproverSourceIssues(definition, sourceNodeIds) {
1195
1250
  ];
1196
1251
  });
1197
1252
  }
1253
+ /**
1254
+ * The reasons a previous chain stage may be skipped that a continuation still
1255
+ * refuses: in each of them the stage did not run this round, so the approvals
1256
+ * the continuation would read belong to an earlier round. A stage skipped for
1257
+ * `managerChainReached` is accepted (the engine reads its skip record and
1258
+ * treats the reached level as unknown), and so is an SLA auto-approval (the
1259
+ * engine does not count it).
1260
+ */
1261
+ const CHAIN_CONTINUATION_REFUSED_SKIP_REASONS = ['entryCondition', 'skipNode', 'skipNodeByNodeActors'];
1262
+ const CHAIN_CONTINUATION_SKIP_ISSUES = {
1263
+ entryCondition: (stageLabel) => `接續的前一段主管鏈 ${stageLabel} 設有進入條件,可能被跳過;被跳過時會讀到上一輪的簽核紀錄。請改用分流,把兩關放在同一條路線上。`,
1264
+ skipNode: (stageLabel) => `接續的前一段主管鏈 ${stageLabel} 在排除發起人後沒人時會跳過此關;被跳過時會讀到上一輪的簽核紀錄。請改選其他處理方式。`,
1265
+ skipNodeByNodeActors: (stageLabel) => `接續的前一段主管鏈 ${stageLabel} 在排除前面關卡的簽核者後沒人時會跳過此關;被跳過時會讀到上一輪的簽核紀錄。請改選其他處理方式。`,
1266
+ };
1267
+ const CHAIN_CONTINUATION_POSITION_TEXTS = {
1268
+ coverage: (stageLabels, nodeLabel) => `有一條路徑不會經過接續的前一段主管鏈 ${stageLabels.join('、')} 就走到 ${nodeLabel},那一趟沒有可以接續的簽核紀錄。請改用分流,把兩關放在同一條路線上。`,
1269
+ notUpstream: (stageLabel, nodeLabel) => `接續的前一段主管鏈 ${stageLabel} 不在 ${nodeLabel} 的上游,走不到這個節點,無法接續。`,
1270
+ };
1271
+ /**
1272
+ * The publish-time issues with a manager-chain stage that continues an earlier
1273
+ * one (`startFrom: { type: 'CHAIN_CONTINUATION', nodeId }`); `[]` when `nodeId`
1274
+ * is not such a stage or everything is sound. Returns Chinese issue lines for
1275
+ * the designer and the publish lint. `nodeId` is the continuing stage (T); the
1276
+ * stage it names is S. The shape of the start itself is
1277
+ * {@link readOrgManagerChainIssue}'s.
1278
+ *
1279
+ * About S, and reported on its own (nothing else about S is read once one of
1280
+ * them fails):
1281
+ *
1282
+ * 1. it is not T itself, exists and is a `userTask`;
1283
+ * 2. its approver is an `ORG_MANAGER_CHAIN`;
1284
+ * 3. it is not a continuation itself: stages are not chained more than once;
1285
+ * 4. its start is the initiator or an earlier stage's approver
1286
+ * (`INITIATOR` / `NODE_ACTOR`, absent reads as the initiator). A
1287
+ * `FORM_MEMBER` start can change when the applicant revises the form, while
1288
+ * the approvals T reads are those of the old start.
1289
+ *
1290
+ * Then, reported together:
1291
+ *
1292
+ * 5. S may not be skipped by `entryCondition`, `skipNode` or
1293
+ * `skipNodeByNodeActors`. This deliberately does **not** reuse
1294
+ * {@link readNodeActorSourceSkipReasons} as a whole, which
1295
+ * {@link readExcludeNodeActorsIssues} does: S skipped for
1296
+ * `managerChainReached` is read by the engine as "nobody reached a level"
1297
+ * and S with an SLA auto-approval is not counted, so both stay allowed;
1298
+ * 6. every path from the start to T goes through S, and S is upstream of T
1299
+ * (the coverage and upstream rules of {@link readExcludeNodeActorsIssues}).
1300
+ *
1301
+ * About T itself, always reported:
1302
+ *
1303
+ * 7. T's `minPositionLevel` is higher than S's: at or below it, any S that
1304
+ * reaches its own level would skip T every time, which is almost never
1305
+ * intended;
1306
+ * 8. T may not hand over to the initiator's manager when it runs out of people
1307
+ * (`whenEmpty: INITIATOR_MANAGER` of `excludeInitiator` or
1308
+ * `excludeNodeActors`): that manager ignores the level S reached and may be
1309
+ * the person who just signed.
1310
+ *
1311
+ * The graph is a DAG: the publish lint refuses cycles before this runs.
1312
+ */
1313
+ function readChainContinuationSourceIssues(definition, nodeId) {
1314
+ var _a, _b;
1315
+ const self = definition.nodes.find((node) => node.id === nodeId);
1316
+ const selfResolver = ((self === null || self === void 0 ? void 0 : self.type) === 'userTask' ? self.data.approverResolver : undefined);
1317
+ if ((self === null || self === void 0 ? void 0 : self.type) !== 'userTask' ||
1318
+ (selfResolver === null || selfResolver === void 0 ? void 0 : selfResolver.type) !== 'ORG_MANAGER_CHAIN' ||
1319
+ !(0, workflow_1.isOrgManagerChainContinuation)(selfResolver)) {
1320
+ return [];
1321
+ }
1322
+ const selfStart = selfResolver.startFrom;
1323
+ const sourceId = selfStart
1324
+ .nodeId;
1325
+ // A missing id is the shape rule's to report (`readOrgManagerChainIssue`).
1326
+ if (typeof sourceId !== 'string' || sourceId.trim() === '') {
1327
+ return [];
1328
+ }
1329
+ const labelOf = (id) => {
1330
+ const node = definition.nodes.find((candidate) => candidate.id === id);
1331
+ return (node === null || node === void 0 ? void 0 : node.data.label) ? `「${node.data.label}」` : `「${id}」`;
1332
+ };
1333
+ const handOverIssues = [
1334
+ ...(((_a = self.data.excludeInitiator) === null || _a === void 0 ? void 0 : _a.whenEmpty) === 'INITIATOR_MANAGER'
1335
+ ? [
1336
+ `接續關卡 ${labelOf(nodeId)} 的「申請人不可簽核自己的單」不能選擇改派給申請人的直屬主管,這會繞過前一段已簽到的職等。`,
1337
+ ]
1338
+ : []),
1339
+ ...(((_b = self.data.excludeNodeActors) === null || _b === void 0 ? void 0 : _b.whenEmpty) === 'INITIATOR_MANAGER'
1340
+ ? [
1341
+ `接續關卡 ${labelOf(nodeId)} 的「不可與前面關卡同一人」不能選擇改派給申請人的直屬主管,這會繞過前一段已簽到的職等。`,
1342
+ ]
1343
+ : []),
1344
+ ];
1345
+ const source = definition.nodes.find((node) => node.id === sourceId);
1346
+ if (sourceId === nodeId) {
1347
+ return ['接續的前一段主管鏈不可以是自己。', ...handOverIssues];
1348
+ }
1349
+ if (source === undefined) {
1350
+ return [`接續的前一段主管鏈「${sourceId}」不存在。`, ...handOverIssues];
1351
+ }
1352
+ if (source.type !== 'userTask') {
1353
+ return [
1354
+ `接續的前一段主管鏈 ${labelOf(sourceId)} 不是簽核關卡。`,
1355
+ ...handOverIssues,
1356
+ ];
1357
+ }
1358
+ const sourceResolver = source.data.approverResolver;
1359
+ if ((sourceResolver === null || sourceResolver === void 0 ? void 0 : sourceResolver.type) !== 'ORG_MANAGER_CHAIN') {
1360
+ return [
1361
+ `接續的前一段 ${labelOf(sourceId)} 的簽核來源不是「沿主管鏈簽核」。`,
1362
+ ...handOverIssues,
1363
+ ];
1364
+ }
1365
+ if ((0, workflow_1.isOrgManagerChainContinuation)(sourceResolver)) {
1366
+ return [
1367
+ `接續的前一段主管鏈 ${labelOf(sourceId)} 本身也是接續型主管鏈,不支援多段串接。`,
1368
+ ...handOverIssues,
1369
+ ];
1370
+ }
1371
+ const sourceStart = sourceResolver.startFrom;
1372
+ const sourceStartType = typeof sourceStart === 'object' && sourceStart !== null
1373
+ ? sourceStart.type
1374
+ : undefined;
1375
+ if (sourceStart !== undefined &&
1376
+ sourceStart !== null &&
1377
+ sourceStartType !== 'INITIATOR' &&
1378
+ sourceStartType !== 'NODE_ACTOR') {
1379
+ return [
1380
+ `接續的前一段主管鏈 ${labelOf(sourceId)} 的起點只能是申請人或前面關卡的簽核者,不能是表單欄位或其他起點。`,
1381
+ ...handOverIssues,
1382
+ ];
1383
+ }
1384
+ const skipIssues = readNodeActorSourceSkipReasons(source)
1385
+ .filter((reason) => CHAIN_CONTINUATION_REFUSED_SKIP_REASONS.includes(reason))
1386
+ .flatMap((reason) => {
1387
+ const text = CHAIN_CONTINUATION_SKIP_ISSUES[reason];
1388
+ return text === undefined ? [] : [text(labelOf(sourceId))];
1389
+ });
1390
+ const positionIssues = readSourceStagePositionIssues(definition, nodeId, [sourceId], [[sourceId]], CHAIN_CONTINUATION_POSITION_TEXTS);
1391
+ const selfLevel = selfResolver.minPositionLevel;
1392
+ const sourceLevel = sourceResolver.minPositionLevel;
1393
+ const levelIssues = Number.isInteger(selfLevel) &&
1394
+ Number.isInteger(sourceLevel) &&
1395
+ selfLevel <= sourceLevel
1396
+ ? [
1397
+ `接續關卡 ${labelOf(nodeId)} 的職等門檻(${String(selfLevel)})必須高於前一段主管鏈 ${labelOf(sourceId)} 的職等門檻(${String(sourceLevel)});否則前一段只要簽到自己的職等,這一關就一定被略過。`,
1398
+ ]
1399
+ : [];
1400
+ return [...skipIssues, ...positionIssues, ...levelIssues, ...handOverIssues];
1401
+ }
1198
1402
  function hasConfiguredConditionEdges(definition) {
1199
1403
  return definition.edges.some((edge) => isExclusiveGatewaySourceEdge(edge, definition.nodes) &&
1200
1404
  Boolean(edge.data.condition ||