Skip to content

多级审批流程规则

适用于校园后勤、物资申请、采购审批等按金额或类型分层审批场景。

规则文件内容

请复制以下内容,保存为 .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_124 小时内处理
  • LEVEL_248 小时内处理
  • SPECIAL72 小时内处理
  • 任一级超时先提醒当前审批人,超过 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_at
  • approval_nodes 必须包含:application_id, node_order, approver_role, status, deadline_at
  • approval_logs 必须包含:application_id, node_id, action, operator_id, comment, created_at

9. 实施注意事项

  • 审批链建议使用事务写入,确保节点创建与状态变更原子一致。
  • 组织架构变更时,审批角色映射应支持热更新。
  • 审批通知建议支持站内信 + 短信双通道兜底。

## 适用场景

- 校园物资申请审批
- 采购与费用报销审批
- 企业内部分级授权审批

基于 AI 辅助开发,快速、灵活、可靠