@yss123/cage-approval 0.4.0 → 0.4.1
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/README.md +12 -73
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,87 +1,26 @@
|
|
|
1
1
|
# @yss123/cage-approval
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
提供代码审批路由、待办与结论桥接。支持顺序、条件、结构化 AND 并行、字段选人、候选领取、委派/转办、前后/并行必签及站内时效运营。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 接入现有业务
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
```powershell
|
|
10
|
-
pnpm add @yss123/cage-approval @yss123/cage-kernel
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
标准 `@yss123/cage-http` 装配审批接口,worker 消费审批启动/取消事件。只启动 API 不会完成后台事件消费。
|
|
14
|
-
|
|
15
|
-
## 将已有业务接到审批
|
|
16
|
-
|
|
17
|
-
以下是采购模板可用的组合片段。`PurchaseOrder`、事件和结论命令来自业务文件;结论命令须声明正确的状态迁移、process 调用身份及业务硬约束。
|
|
7
|
+
在 domain 安装 pnpm add @yss123/cage-approval @yss123/cage-kernel。领域先提供提交事件和 process 结论,再使用 kernel 的 approval 绑定,并导出本包 route:
|
|
18
8
|
|
|
19
9
|
```ts
|
|
20
|
-
|
|
21
|
-
import { approval } from '@yss123/cage-kernel';
|
|
22
|
-
import { approver, gt, route, step, when } from '@yss123/cage-approval';
|
|
23
|
-
import {
|
|
24
|
-
PurchaseOrder, OrderSubmitted, OrderCancelled, approve, reject,
|
|
25
|
-
} from './purchase-order.js';
|
|
26
|
-
|
|
27
|
-
/** 提交启动、取消撤回;只允许金额和部门字段用于流程路由。 */
|
|
28
|
-
export const poApproval = approval(PurchaseOrder, {
|
|
29
|
-
process: 'po-approval',
|
|
30
|
-
start: OrderSubmitted,
|
|
31
|
-
cancelOn: [OrderCancelled],
|
|
32
|
-
routable: ['amount', 'deptId'],
|
|
33
|
-
onApproved: approve,
|
|
34
|
-
onRejected: reject,
|
|
35
|
-
});
|
|
10
|
+
import { approver, route, step } from '@yss123/cage-approval';
|
|
36
11
|
|
|
37
|
-
/**
|
|
38
|
-
export const
|
|
39
|
-
step('
|
|
40
|
-
when(
|
|
41
|
-
gt('amount', 50000),
|
|
42
|
-
step('财务审批', approver.role('finance'), { mode: 'any' }),
|
|
43
|
-
),
|
|
12
|
+
/** 与同名 approval 配合,由真实部门字段选择负责人;不在声明时创建人员或授予能力。 */
|
|
13
|
+
export const requestRoute = route('department-request', [
|
|
14
|
+
step('部门审核', approver.deptLeader('deptId')),
|
|
44
15
|
]);
|
|
45
16
|
```
|
|
46
17
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
`routable` 是允许路由读取的字段清单,不是权限列表。被流程选为审批人也必须具备实际结论命令能力和数据范围,并满足业务声明的职责分离等约束;路由选人不会自动授予权限。金额只是本采购示例的分支条件,其他业务可使用不同字段或不设置条件。
|
|
50
|
-
|
|
51
|
-
## 主要入口
|
|
52
|
-
|
|
53
|
-
| 入口 | 用途 |
|
|
54
|
-
| --- | --- |
|
|
55
|
-
| `route`、`step`、`when` | 声明步骤和条件;顺序执行,条件只读取允许路由的字段 |
|
|
56
|
-
| `approver` | 角色、部门负责人等选人规则 |
|
|
57
|
-
| `gt/gte/lt/lte/eq/ne/isIn` | 可被分析的条件表达式 |
|
|
58
|
-
| `InCodeEngine`、`TaskView` | 内置流程执行器及待办视图,通常由 HTTP/worker 装配 |
|
|
59
|
-
| `bindApproval`、`applyOutcome` | 适配器把审批结论桥接回领域命令 |
|
|
60
|
-
| `ApprovalAdapter` 等适配类型 | 对接外部审批实现时遵守的生命周期协议 |
|
|
61
|
-
| `approvalRoutes` | 受认证保护的 HTTP 审批接口装配 |
|
|
62
|
-
| `AiStepOptions`、`approvalRoleContext` | AI 节点配置与自动执行角色上下文 |
|
|
63
|
-
| `TaskActionPolicy`、`TaskActionInput`、`InCodeEngine.act` | 人工节点显式开放转办、委派归还、当前节点并行必签;版本与操作记录共同提交 |
|
|
64
|
-
| `InCodeEngine.taskHistory` | 当前单据授权读者按游标读取人工操作记录 |
|
|
65
|
-
| `approvalOperations()` | 显式启用框架持久站内提醒、申请人催办与已读,复用现有 worker |
|
|
66
|
-
|
|
67
|
-
领域绑定原语 `approval()` 从 `@yss123/cage-kernel` 导入;不要与本包的路由原语混淆。
|
|
68
|
-
|
|
69
|
-
AI 审批使用同一个 `step` 的 `kind: 'ai'` 选项,配置模型、材料范围、策略、handoff 和预算;结果为 `pass/return/manual`。需要 domain 启用 `@yss123/cage-ai`,退回需声明 `onReturned`,自动结论需显式配置 `automatedBy` 对应角色权限。模型失败不会被当成自动批准。
|
|
70
|
-
|
|
71
|
-
## 文档
|
|
18
|
+
deptId 进入 binding.routable,开始/取消事件和结论命令从 domain 一起导出。迁移后运行 API/worker,配置实际负责人、结论能力和单据范围。页面通过当前任务 revision 决定,最后由领域命令保存结果。
|
|
72
19
|
|
|
73
|
-
|
|
74
|
-
委派未归还不能批准;前、后及并行加签在 any/all 模式下都必须全部通过。候选任务先领取再决定,任务操作及启用候选/流转节点的决定须携带 revision。
|
|
75
|
-
不能把任务管理理解为授予角色能力。升级需执行追加系统迁移,旧实例保持原政策。
|
|
20
|
+
## 高级能力与边界
|
|
76
21
|
|
|
77
|
-
|
|
78
|
-
`route` 第三参配置 `reminders: { requesterField: 'createdBy', cooldownMinutes: 15 }`,申请人字段必须进入 `approval.routable`。
|
|
79
|
-
框架负责持久提醒、去重、当前接收人授权、冷却和已读;Admin 提供“我的申请”和“流程提醒”,业务应用无需自行实现通知表或定时器。
|
|
80
|
-
节点时限采用自然分钟,加签、转办和领取不重置;尚无工作日历、自动升级、外部通知、并行网关或流程设计器。
|
|
22
|
+
parallel/branch 创建 AND 分支,节点内 any/all 和 addSign 是不同层。assignment/actions 在实例启动时保存,代码更新不改旧实例;结构化路由不等于任意 BPMN 图或在途迁移。
|
|
81
23
|
|
|
82
|
-
|
|
83
|
-
- [标准采购审批链路](https://github.com/shunshunyue/cage/blob/main/docs/development/examples/purchase-example.md)
|
|
84
|
-
- [AI 审批三态、转人工和授权](https://github.com/shunshunyue/cage/blob/main/docs/development/guides/intelligence.md)
|
|
85
|
-
- [采购审批完整源码](https://github.com/shunshunyue/cage/blob/main/examples/purchase-admin/packages/domain/src/modules/purchase/approvals.ts)
|
|
24
|
+
approvalOperations 启用自然分钟 SLA、站内提醒和申请人催办。AI 使用 step 的 kind: 'ai' 重载并另启 ai 运行时。无选人或执行失败不能自动当作通过。
|
|
86
25
|
|
|
87
|
-
|
|
26
|
+
[完整审批课程](https://github.com/shunshunyue/cage/blob/main/docs/development/guides/approvals.md) · [参数、任务和时效](https://github.com/shunshunyue/cage/blob/main/docs/development/reference/approval.md)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yss123/cage-approval",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "审批适配接口、桥接与代码内封闭路由(可选)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"fastify": "^5.6.0",
|
|
19
19
|
"kysely": "^0.28.5",
|
|
20
20
|
"zod": "^4.1.5",
|
|
21
|
-
"@yss123/cage-kernel": "0.4.
|
|
21
|
+
"@yss123/cage-kernel": "0.4.1"
|
|
22
22
|
},
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"repository": {
|