3. 审批链基础
在费用报销场景中,审批链并不是简单的“谁点同意”列表,而是一套由节点、角色、权限、流转规则和异常分支共同构成的决策网络。异常检测的第一步,就是把这套网络显式建模出来。只有先理解“正常审批链应该长什么样”,才能识别“谁跳过了节点”“谁越权审批”“谁在非工作时间批量通过”等异常。
一、核心原理:审批链的五个构成要素
一条完整的审批链可以拆解为五个要素:审批节点、角色权限、流转规则、会签/转签机制以及典型审批模式。它们共同决定了单据从提交到归档的路径。
- 审批节点:审批链上的一个处理位置,例如“部门经理审批”“财务复核”“CFO审批”。节点是逻辑位置,不是具体的人。
- 角色权限:节点绑定角色,角色绑定权限。例如“部门经理”可审批本部门≤5000元,“财务总监”可审批≤50000元。
- 流转规则:决定单据在节点之间如何前进、退回、终止或并行。常见规则包括金额阈值、部门归属、费用类型、时间条件。
- 会签与转签:会签是多人共同决策(全部通过或按比例通过),转签是审批人将任务委托给他人。
- 典型审批模式:串行、并行、条件分支、混合模式,决定了审批链的整体拓扑。
异常检测视角:审批链的“正常”由规则定义,“异常”往往表现为规则被绕过、节点被跳过、权限被越界使用或流转路径与配置不符。
二、方法流程:从配置到可检测的审批链模型
要把审批链用于异常检测,需要经过四个步骤:建模、实例化、路径还原、规则比对。
- 建模:将审批链配置抽象为节点集合、角色集合、权限矩阵和流转条件。
- 实例化:每张报销单提交后,根据金额、部门、费用类型生成一条实际审批路径。
- 路径还原:从审批日志中提取节点顺序、审批人、时间戳、操作类型(通过/退回/转签)。
- 规则比对:将实际路径与配置路径比对,标记缺失节点、多余节点、越权审批、异常转签等。
下面是一个简化的审批链配置示例,用 JSON 描述节点与流转条件:
{
"chain_id": "EXP-2024-001",
"nodes": [
{"node": "submit", "role": "employee"},
{"node": "dept_mgr", "role": "dept_manager", "condition": "amount <= 5000"},
{"node": "fin_review", "role": "finance", "condition": "amount > 5000"},
{"node": "cfo", "role": "cfo", "condition": "amount > 50000"}
],
"flow": "serial",
"sign_type": "or_sign"
}
在实际系统中,审批日志通常包含以下字段,用于路径还原:
2024-06-12 09:15:22 | EXP-2024-001 | submit | emp_1024 | submit
2024-06-12 10:02:11 | EXP-2024-001 | dept_mgr | mgr_2048 | approve
2024-06-12 10:05:33 | EXP-2024-001 | fin_review | fin_3011 | approve
2024-06-12 10:06:01 | EXP-2024-001 | cfo | cfo_4001 | approve
三、典型审批模式与异常对照
不同审批模式对应不同的异常形态。下表列出常见模式、结构特征与典型异常:
| 审批模式 | 结构特征 | 典型异常 |
|---|---|---|
| 串行审批 | 节点依次执行,前一个通过后进入下一个 | 跳过中间节点、越级审批 |
| 并行审批 | 多个节点同时处理,全部通过后继续 | 部分节点未处理即通过、会签人数不足 |
| 条件分支 | 按金额/类型走不同路径 | 条件判断错误、高金额走低金额路径 |
| 会签 | 多人共同决策,需全部或比例通过 | 代签、重复签、未达比例即通过 |
| 转签 | 审批人将任务转交他人 | 转给无权限人、转签后原审批人仍操作 |
会签与转签是异常检测的高发区。会签关注“人数与比例”,转签关注“权限继承与责任归属”。
四、案例与场景:一次被跳过的财务复核
某公司规定:报销金额超过5000元必须经过财务复核。员工A提交了一张6800元的差旅报销单,审批日志显示:
2024-07-03 14:20:10 | submit | emp_1024
2024-07-03 14:35:22 | dept_mgr | mgr_2048 | approve
2024-07-03 14:36:05 | cfo | cfo_4001 | approve
2024-07-03 14:36:40 | archive | system | done
对比配置路径,缺少了 fin_review 节点。进一步检查发现,部门经理在审批时使用了“转签”功能,将财务复核节点转给了CFO,而CFO同时拥有终审权限,导致财务复核被合并。这就是典型的转签导致节点合并异常。
另一个场景:某员工在周五23:47连续审批了12张报销单,全部通过。从审批链看节点完整,但时间分布异常集中,属于批量操作异常,需要结合行为特征进一步判断。
五、误区与复盘
误区一:只看审批人是否在角色列表,忽略“权限范围”。同角色不同金额上限,越界审批仍是异常。
误区二:把转签当作正常委托,忽略转签后的权限继承。转签给无权限人,等于绕过控制。
误区三:只检查最终结果,不还原完整路径。节点缺失可能被“合并审批”掩盖。
复盘时建议建立三张清单:节点清单(应有哪些节点)、权限清单(每个角色的金额与类型边界)、路径清单(实际发生的审批序列)。三张清单交叉比对,才能稳定输出异常信号。