多级审批流程规则
适用于校园后勤、物资申请、采购审批等按金额或类型分层审批场景。
规则文件内容
请复制以下内容,保存为 .cursor/rules/multi-level-approval-flow.mdc:
markdown
---
description: 多级审批分层、超时升级与通知留痕业务规则
globs: src/modules/approvals/**, src/modules/applications/**, src/modules/notifications/**
---
# 多级审批流程业务规则
## 1. 核心原则
- **先定级后审批**:先根据申请属性确定审批链路,再执行状态流转。
- **超时可升级**:每级审批必须有时限,超时自动提醒或升级。
- **结果可追踪**:每次审批动作必须记录操作人、时间、意见。
## 2. 申请分层规则
- `AUTO_APPROVE`:普通申请,金额 `< 100`
- `LEVEL_1`:金额 `100~500`,辅导员审批
- `LEVEL_2`:金额 `> 500`,系主任审批
- `SPECIAL`:特殊物资,后勤主管审批
如有项目差异,阈值与角色映射必须配置化,不可硬编码。
## 3. 状态定义
- `draft`:草稿
- `submitted`:已提交
- `in_approval`:审批中
- `approved`:已通过
- `rejected`:已驳回
- `cancelled`:已取消
- `expired`:审批超时失效
## 4. 状态流转规则
- `draft -> submitted`
- `submitted -> in_approval`
- `in_approval -> approved`
- `in_approval -> rejected`
- `in_approval -> expired`
- `submitted|in_approval -> cancelled`(申请人撤回或管理员取消)
```ts
type ApprovalLevel = 'AUTO_APPROVE' | 'LEVEL_1' | 'LEVEL_2' | 'SPECIAL';
function resolveApprovalLevel(amount: number, isSpecial: boolean): ApprovalLevel {
if (isSpecial) return 'SPECIAL';
if (amount < 100) return 'AUTO_APPROVE';
if (amount <= 500) return 'LEVEL_1';
return 'LEVEL_2';
}5. 审批时限与升级规则
LEVEL_1:24小时内处理LEVEL_2:48小时内处理SPECIAL:72小时内处理- 任一级超时先提醒当前审批人,超过
72小时自动置为expired或升级上级审批(按配置)
6. 通知规则
- 提交申请后通知首级审批人。
- 状态变更时通知申请人和下一审批人。
rejected/expired必须附带原因并通知申请人。
7. 审计与幂等规则
- 同一审批节点重复提交必须幂等,防止重复写审批记录。
- 审批动作写入
approval_logs,包含from_status,to_status,operator_id,comment。 - 审批流重试时禁止跳级通过。
8. 数据模型约束
approval_applications必须包含:applicant_id,amount,application_type,approval_level,status,submitted_atapproval_nodes必须包含:application_id,node_order,approver_role,status,deadline_atapproval_logs必须包含:application_id,node_id,action,operator_id,comment,created_at
9. 实施注意事项
- 审批链建议使用事务写入,确保节点创建与状态变更原子一致。
- 组织架构变更时,审批角色映射应支持热更新。
- 审批通知建议支持站内信 + 短信双通道兜底。
## 适用场景
- 校园物资申请审批
- 采购与费用报销审批
- 企业内部分级授权审批
