Browse Source

docs: add approval flow feature specification (Web 2.4.50 / API 1.0.14)

Made-with: Cursor
skygu 1 month ago
parent
commit
dc97d160ce

+ 1 - 1
Web/package.json

@@ -1,7 +1,7 @@
 {
 	"name": "admin.net",
 	"type": "module",
-	"version": "2.4.49",
+	"version": "2.4.50",
 	"packageManager": "pnpm@10.32.1",
 	"lastBuildTime": "2026.03.15",
 	"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",

+ 313 - 0
doc/审批流功能说明.md

@@ -0,0 +1,313 @@
+# 审批流功能说明
+
+## 一、功能概述
+
+审批流模块为 Ai-DOP 平台提供可视化的流程审批能力,支持管理员自定义审批流程,业务人员在线提交、审批、跟踪各类业务单据。
+
+**核心能力:**
+
+- 可视化流程设计(拖拽式画布)
+- 多种审批人配置(指定用户 / 角色 / 部门 / 发起人本人)
+- 条件分支(排他网关,按业务字段自动路由)
+- 多人会签 / 或签
+- 审批操作:同意、拒绝、转办、退回、加签、催办、撤回
+- 审批中心:集中管理所有待办、已办、已发起的审批
+- 业务类型管理:管理员自助注册新业务类型
+- 实时通知(SignalR 站内消息)
+- 完整审批时间线与操作日志
+
+---
+
+## 二、菜单入口
+
+所有审批流相关功能位于:**Ai-DOP → 流程管理**
+
+| 菜单 | 功能 | 主要使用者 |
+|---|---|---|
+| 业务类型 | 管理审批业务类型编码(如订单评审、合同评审) | 管理员 |
+| 审批流程 | 管理和设计各业务类型的审批流程 | 管理员 |
+| 审批中心 | 处理待办审批、查看已办和已发起的流程 | 所有用户 |
+
+---
+
+## 三、业务类型管理
+
+**入口:** Ai-DOP → 流程管理 → 业务类型
+
+业务类型是审批流与具体业务的关联标识。每个需要审批的业务场景对应一个业务类型编码。
+
+### 功能说明
+
+| 操作 | 说明 |
+|---|---|
+| 查看列表 | 展示所有已注册的业务类型,包含编码、名称、来源、状态 |
+| 新增 | 添加新的业务类型,填写编码(唯一)和名称 |
+| 编辑 | 修改业务类型名称、备注、启用状态 |
+| 删除 | 删除手动添加的业务类型(代码注册的类型不可删除) |
+
+### 来源说明
+
+| 来源 | 含义 |
+|---|---|
+| 代码注册 | 由开发人员在后端代码中通过 `IFlowBizHandler` 注册,不可删除 |
+| 手动添加 | 由管理员在此页面手动添加,可编辑和删除 |
+
+### 预置业务类型
+
+| 编码 | 名称 | 用途 |
+|---|---|---|
+| ORDER_REVIEW | 订单评审 | 销售订单提交评审审批 |
+| CONTRACT_REVIEW | 合同评审 | 合同评审审批 |
+
+---
+
+## 四、审批流程管理
+
+**入口:** Ai-DOP → 流程管理 → 审批流程
+
+### 4.1 流程列表
+
+展示所有审批流程定义,支持以下操作:
+
+| 操作 | 说明 |
+|---|---|
+| 新增 | 创建新的审批流程,选择关联的业务类型 |
+| 编辑 | 修改流程基本信息(名称、业务类型、备注) |
+| 流程(设计) | 进入可视化流程设计器,编辑流程图 |
+| 发布 | 将流程设为已发布状态,发布后业务端可使用该流程 |
+| 删除 | 删除流程定义 |
+
+**列表字段说明:**
+
+| 字段 | 说明 |
+|---|---|
+| 流程名称 | 审批流程的名称 |
+| 业务类型 | 关联的业务类型编码 |
+| 版本 | 流程版本号,每次发布自动递增 |
+| 是否发布 | 标识流程是否已发布可用 |
+| 创建时间 | 流程创建时间 |
+
+### 4.2 流程设计器
+
+点击流程列表中的"流程"按钮进入可视化设计器。
+
+#### 节点类型
+
+| 节点 | 图标 | 用途 |
+|---|---|---|
+| 开始节点 | 圆形 | 流程起点,每个流程有且仅有一个 |
+| 审批节点(用户任务) | 矩形 | 配置审批人、审批方式 |
+| 排他网关 | 菱形 | 条件分支,根据业务数据走不同路径 |
+| 结束节点 | 双圆形 | 流程终点 |
+
+#### 审批节点配置
+
+选中审批节点后,在右侧属性面板配置:
+
+| 配置项 | 说明 |
+|---|---|
+| 节点名称 | 如"部门经理审批"、"总经理审批" |
+| 审批人类型 | 指定用户 / 指定角色 / 指定部门 / 发起人本人 |
+| 选择审批人 | 根据类型选择具体的用户、角色或部门(支持多选) |
+| 多人审批方式 | **或签**(任一人通过即可)/ **会签**(所有人通过才行) |
+
+**审批人类型详解:**
+
+| 类型 | 行为 |
+|---|---|
+| 指定用户 | 流程到达此节点时,固定分配给选定的用户 |
+| 指定角色 | 分配给该角色下所有成员 |
+| 指定部门 | 分配给该部门下所有成员 |
+| 发起人本人 | 分配给提交审批的用户自己(常用于确认环节) |
+
+#### 排他网关配置
+
+选中网关的**出线(连线)**后,在属性面板配置条件表达式:
+
+**表达式语法:**
+
+```
+字段名 运算符 值
+```
+
+- 支持运算符:`==`、`!=`、`>`、`<`、`>=`、`<=`
+- 多条件用 `&&` 连接:`urgent == 1 && customLevel >= 3`
+- 将某条出线设为 `default` 作为默认路径
+
+**示例(订单评审):**
+
+| 出线 | 条件 | 含义 |
+|---|---|---|
+| → 加急审批 | `urgent == 1` | 加急订单走快速审批 |
+| → 普通审批 | `default` | 其他订单走常规审批 |
+
+#### 设计器工具栏
+
+| 按钮 | 功能 |
+|---|---|
+| 放大 / 缩小 | 调整画布缩放 |
+| 适应画布 | 自动缩放至全部节点可见 |
+| 撤销 / 重做 | 撤销或恢复上一步操作 |
+| 保存 | 保存当前流程设计 |
+
+---
+
+## 五、审批中心
+
+**入口:** Ai-DOP → 流程管理 → 审批中心
+
+审批中心是所有用户处理和跟踪审批任务的统一入口,包含三个 Tab 页。
+
+### 5.1 我的待办
+
+展示当前登录用户需要审批的任务列表。
+
+| 列 | 说明 |
+|---|---|
+| 流程标题 | 审批流程标题(如"订单评审-SO20260415001") |
+| 业务类型 | 业务类型名称 |
+| 发起人 | 提交审批的用户 |
+| 发起时间 | 审批提交时间 |
+| 操作 | 同意、拒绝、更多(转办/退回/加签/催办)、详情 |
+
+**可执行操作:**
+
+| 操作 | 说明 |
+|---|---|
+| 同意 | 通过当前节点审批,流程进入下一步 |
+| 拒绝 | 拒绝审批,流程终止 |
+| 转办 | 将此任务转交给其他用户处理 |
+| 退回上一步 | 将流程退回至上一个审批节点 |
+| 加签 | 在当前节点增加一位审批人 |
+| 催办 | 向所有待审批人发送催办通知 |
+| 详情 | 查看完整审批时间线 |
+
+### 5.2 我的已办
+
+展示当前用户已经处理过的审批任务。
+
+| 列 | 说明 |
+|---|---|
+| 流程标题 | 审批流程标题 |
+| 业务类型 | 业务类型名称 |
+| 审批动作 | 用户执行的操作(同意/拒绝/转办等) |
+| 审批时间 | 操作时间 |
+| 操作 | 详情(查看时间线) |
+
+### 5.3 我发起的
+
+展示当前用户主动发起的所有审批流程。
+
+| 列 | 说明 |
+|---|---|
+| 流程标题 | 审批流程标题 |
+| 业务类型 | 业务类型名称 |
+| 当前审批人 | 当前正在等待谁审批(仅审批中状态显示) |
+| 状态 | 审批中 / 已通过 / 已拒绝 / 已撤销 |
+| 发起时间 | 提交审批时间 |
+| 操作 | 详情、催办(审批中可用)、撤回(审批中可用) |
+
+**发起人专属操作:**
+
+| 操作 | 说明 |
+|---|---|
+| 催办 | 向当前审批人发送催办通知 |
+| 撤回 | 撤回审批,取消所有待审批任务,流程终止 |
+
+### 5.4 筛选功能
+
+三个 Tab 页均支持按**业务类型**下拉筛选,快速定位特定业务的审批记录。
+
+### 5.5 审批时间线
+
+点击任意记录的"详情"按钮,弹出审批时间线弹窗,展示该流程从发起到当前的完整操作记录:
+
+| 信息 | 说明 |
+|---|---|
+| 节点名称 | 该操作所在的审批节点(如"部门经理审批") |
+| 操作类型 | 提交 / 同意 / 拒绝 / 转办 / 退回 / 加签 / 催办 / 撤回 |
+| 操作人 | 执行操作的用户 |
+| 操作时间 | 操作发生的时间 |
+| 审批意见 | 操作时填写的备注 |
+
+---
+
+## 六、业务表单内的审批面板
+
+除审批中心外,审批功能还可直接嵌入到具体的业务表单中(如订单详情页)。
+
+### 面板状态与行为
+
+| 业务状态 | 面板显示 |
+|---|---|
+| 未发起审批 | 显示"提交审批"按钮 |
+| 已发起、当前用户是审批人 | 显示审批意见输入框 + 同意/拒绝/转办/退回/加签 按钮 |
+| 已发起、当前用户是发起人 | 显示催办/撤回按钮 |
+| 审批已结束 | 显示最终状态(已通过/已拒绝/已撤销) |
+| 所有状态 | 底部展示可折叠的审批时间线 |
+
+### 当前已集成的业务
+
+| 业务页面 | 业务类型 | 位置 |
+|---|---|---|
+| 订单评审表单 | ORDER_REVIEW | 订单详情页底部 |
+
+---
+
+## 七、通知机制
+
+审批流在以下场景自动发送通知:
+
+| 触发时机 | 通知内容 | 通知对象 |
+|---|---|---|
+| 新任务创建 | "您有一条新的审批任务" | 被分配的审批人 |
+| 审批通过/拒绝 | "您的审批已通过/已被拒绝" | 流程发起人 |
+| 转办 | "有一条审批任务已转交给您" | 转办目标用户 |
+| 退回 | "审批已被退回" | 上一节点审批人 |
+| 加签 | "有一条审批任务需要您处理" | 加签目标用户 |
+| 催办 | "请尽快处理待审批任务" | 当前待审批人 |
+| 撤回 | "审批流程已被发起人撤回" | 原待审批人 |
+
+**通知渠道:** 当前默认通过 SignalR 推送站内实时消息。系统预留了钉钉、企业微信、邮件、短信等扩展渠道,可在配置文件中开启。
+
+---
+
+## 八、审批流程生命周期
+
+一个完整的审批流程经历以下状态:
+
+```
+               ┌──────────┐
+               │  提交审批  │
+               └─────┬────┘
+                     ▼
+               ┌──────────┐
+          ┌────│  审批中    │────┐
+          │    └─────┬────┘    │
+          │          │         │
+    ┌─────▼──┐  ┌────▼───┐  ┌─▼───────┐
+    │ 已拒绝  │  │ 已通过  │  │ 已撤销   │
+    └────────┘  └────────┘  └─────────┘
+```
+
+| 状态 | 说明 |
+|---|---|
+| 审批中 | 流程已发起,等待审批人处理 |
+| 已通过 | 所有审批节点通过,流程正常结束 |
+| 已拒绝 | 某个审批节点拒绝,流程终止 |
+| 已撤销 | 发起人主动撤回,流程终止 |
+
+---
+
+## 九、权限说明
+
+| 功能 | 所需权限 |
+|---|---|
+| 业务类型管理 | 管理员(superAdmin 或有菜单权限的角色) |
+| 审批流程设计 | 管理员 |
+| 审批流程发布 | 管理员 |
+| 提交审批 | 有对应业务操作权限的用户 |
+| 审批操作(同意/拒绝等) | 被分配为审批人的用户 |
+| 查看审批中心 | 所有有菜单权限的用户 |
+| 催办 / 撤回 | 仅流程发起人 |
+| 转办 / 加签 | 当前审批人 |

+ 3 - 3
server/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj

@@ -11,9 +11,9 @@
     <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
     <Copyright>Admin.NET</Copyright>
     <Description>Admin.NET 通用权限开发平台</Description>
-    <AssemblyVersion>1.0.13</AssemblyVersion>
-    <FileVersion>1.0.13</FileVersion>
-    <Version>1.0.13</Version>
+    <AssemblyVersion>1.0.14</AssemblyVersion>
+    <FileVersion>1.0.14</FileVersion>
+    <Version>1.0.14</Version>
   </PropertyGroup>
 
   <ItemGroup>