后续考虑 - 审批中心与审批流程需求
本文仅作为二期方案储备,不属于后台管理一期范围、一期原型导航或一期验收依据。一期退费减免按专项权限、服务端复验、幂等、审计和对账执行,不创建审批实例或审批任务。
1. 文档结论
后台管理需要建设统一审批中心,承接客户减免、客服退款、后台配置变更、敏感数据导出、资金类操作等高风险流程。
推荐实施路线:
- P0 自建审批内核,负责审批实例、审批任务、审批流版本、状态机、权限、SLA、审计和业务回调。
- Feishu/Lark 不作为唯一审批状态源,首期作为可选外部审批入口和待办同步渠道。
- 多公司主体按
company_entity + collaboration_tenant + app_scope建模,不同主体可选择后台自建审批、Feishu 审批或 Lark 审批。 - 业务系统只能依赖后台审批内核的最终结果,不能直接依赖 Feishu/Lark 页面状态执行资金、账务或权限变更。
该方案可以先保证后台业务闭环、账务一致性和审计可控,再逐步接入 Feishu/Lark 的移动端待办、消息提醒和组织审批体验。
2. 背景
后台管理从只读查询进入写操作后,会出现多类高风险动作:
- 资金和账务:客户减免、客服退款、补放款、调账、退款重试。
- 权限和安全:账号启停、角色变更、敏感字段明文查看、批量导出。
- 业务配置:App 注册、数据源路由、产品参数、催收策略、通道配置。
- 运营处理:异常关闭、批量任务、人工纠偏。
这些动作不能只靠页面按钮和角色权限控制,还需要审批流、职责分离、过程留痕、超时处理、版本化规则和可回放的审计证据。
3. 建设目标
- 提供统一的审批待办、已办、发起记录、业务监控和审批详情。
- 支持按业务类型、App、公司主体、金额、风险等级和字段变更动态匹配审批流。
- 支持通过、退回、拒绝、转交、加签、委托、催办、撤回和超时升级。
- 支持审批流版本化,历史审批实例按创建时的流程继续执行。
- 支持后台自建审批和 Feishu/Lark 外部审批入口并存。
- 支持多公司主体、多 Feishu/Lark 租户、多业务线的身份映射和权限隔离。
- 审批结果能可靠驱动业务系统执行,且每次执行都可追踪到审批实例。
4. 范围
4.1 P0 范围
- 审批中心页面:我的待办、已办记录、我发起的、业务监控、审批详情。
- 审批流配置:业务类型、触发条件、节点、角色、SLA、升级规则、启停和版本发布。
- 审批内核:实例、任务、动作日志、状态机、职责分离、幂等和审计。
- 业务接入:客户减免、客服退款。
- 外部接入预留:Feishu/Lark 租户配置、用户映射、外部实例编号、回调验签字段。
4.2 P1 范围
- Feishu/Lark 第三方审批同步:后台自建实例同步到 Feishu/Lark 审批中心,用户可在 Feishu/Lark 处理待办。
- 多公司主体配置:不同主体绑定不同 Feishu/Lark 租户、审批定义和回调地址。
- 审批委托、代理人、加签、会签、或签、超时自动升级。
- 审批报表、流程耗时分析和异常告警。
4.3 不在首期范围
- 完全依赖 Feishu/Lark 原生审批作为唯一流程引擎。
- 让业务前端选择具体审批人。
- 通过审批消息直接执行资金或账务动作。
- 物理删除审批实例、任务和操作日志。
5. 审批模式评估
5.1 方案 A:完全自建审批流程
做法:后台自建审批流、待办、状态机和通知,所有审批动作在后台完成。
优势:
- 业务状态、资金执行、审计、权限和数据范围完全可控。
- 多 App、多库、多公司主体可以统一建模。
- 更容易支持复杂条件、金额阈值、职责分离、账务幂等和执行回调。
- 不受外部组织架构、租户边界和审批模板变更影响。
不足:
- 需要自建消息提醒、移动端体验、委托代理等协作能力。
- 内部用户可能需要在后台和办公软件之间切换。
结论:适合作为后台审批内核,必须建设。
5.2 方案 B:完全使用 Feishu/Lark 原生审批
做法:每类业务在 Feishu/Lark 创建原生审批定义,后台发起审批实例并等待审批结果。
优势:
- 用户熟悉办公软件审批体验。
- 移动端、通知、组织架构、审批消息能力成熟。
- 对简单行政类流程建设成本低。
不足:
- 多公司主体可能对应多个 Feishu/Lark 租户,需要分别建应用、授权、用户映射和审批定义。
- 原生审批表单和流程难以承载后台业务的复杂状态机、实时余额复验、账务幂等和执行异常。
- 资金和权限类动作不能把外部审批状态作为唯一可信依据,仍需后台二次校验。
- 若审批定义由办公软件管理员调整,可能影响业务规则一致性。
结论:不建议作为后台高风险业务的唯一审批引擎。
5.3 方案 C:自建审批内核 + Feishu/Lark 外部入口
做法:后台自建审批实例和任务,将待办同步到 Feishu/Lark;审批人在后台或 Feishu/Lark 处理时,最终都回写后台审批内核。业务执行只读取后台审批结果。
优势:
- 后台保持业务状态、账务执行和审计主导权。
- 可以复用 Feishu/Lark 的审批中心、消息、移动端和组织触达。
- 多公司主体可以按租户配置接入,不影响未接入主体继续使用后台审批。
- 后续可按业务类型逐步开放外部审批入口。
不足:
- 需要建设外部审批适配层,处理租户、用户、回调、幂等和同步异常。
- 需要清晰定义后台与 Feishu/Lark 的状态主从关系。
结论:推荐采用。P0 自建,P1 接入 Feishu/Lark 外部审批入口。
6. Feishu/Lark 可行性
6.1 官方能力依据
Feishu/Lark 开放平台提供审批相关接口,能力包括:
- 查询和创建审批实例,用于企业已有平台与 Feishu/Lark 审批打通。
- 创建审批定义,配置审批基础信息、表单和流程。
- 第三方审批定义,用于把外部系统审批接入 Feishu/Lark 审批中心。
- 第三方审批实例同步,把外部系统生成的审批实例、任务和抄送数据同步到审批中心。
- 快捷审批回调,用户在 Feishu/Lark 处理第三方审批任务后,回调第三方系统。
参考:
- Feishu Approval overview: https://open.larkoffice.com/document/server-docs/approval-v4/approval-overview
- Feishu create approval definition: https://open.feishu.cn/document/server-docs/approval-v4/approval/create
- Feishu create approval instance: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/instance/create
- Feishu third-party approval definition: https://open.feishu.cn/document/server-docs/approval-v4/external_approval/create
- Feishu third-party quick approval callback: https://open.feishu.cn/document/server-docs/approval-v4/external_approval/quick-approval-callback
- Lark third-party approval access guide: https://open.larksuite.com/document/ukTMukTMukTM/uAzNyYjLwcjM24CM3IjN
- Lark sync external approval instances: https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/approval-v4/external_instance/create
6.2 推荐接入方式
优先接入“第三方审批”模式,而不是把业务规则完全搬到 Feishu/Lark 原生审批定义中。
原因:
- 后台仍是审批实例、任务、状态和业务执行的主系统。
- Feishu/Lark 只承载待办展示、提醒和快捷审批动作。
- 后台可以同步业务摘要、金额、风险标签、详情链接和当前待办人。
- Feishu/Lark 回调只触发后台审批动作,后台仍需鉴权、验签、职责分离和业务复验。
6.3 多公司主体可行性
可行,但必须按主体做隔离配置。
建议模型:
| 维度 | 说明 |
|---|---|
| 公司主体 | 法人或业务经营主体,如 Nigeria Entity、Kenya Entity、集团主体 |
| 协作租户 | 对应 Feishu 或 Lark 的 tenant/app,可能一个公司主体一个租户,也可能多个主体共用一个租户 |
| 审批通道 | INTERNAL、FEISHU_EXTERNAL、LARK_EXTERNAL、FEISHU_NATIVE、LARK_NATIVE |
| 审批定义 | 每个主体、业务类型、环境绑定不同 approval code 或 external approval code |
| 用户映射 | 后台用户 ID 绑定 Feishu/Lark open_id、union_id、邮箱和所属租户 |
| 数据范围 | 审批同步到外部时只展示必要摘要,敏感字段仍在后台查看并审计 |
关键限制:
- Feishu 中国版和 Lark 国际版租户、域名、应用凭证和用户 ID 体系不同,不能假设单一 open_id 全局可用。
- 一个审批人在多个公司主体任职时,需要按主体和租户选择审批身份。
- 外部审批通知不能绕过后台权限,回调到后台后仍要校验当前审批任务是否属于该外部用户映射。
- 若公司主体没有接入 Feishu/Lark,仍必须可走后台自建审批。
7. 功能需求
7.1 审批中心
菜单位置:统一后台门户或权限与审计中心下,业务页面只展示审批状态和入口链接。
页面包含:
- 我的待办:待我处理的审批任务。
- 已办记录:我已处理的任务。
- 我发起的:我提交或代提交的审批实例。
- 业务监控:按业务类型、公司主体、App、状态、SLA、风险等级查看审批积压。
- 审批详情:业务摘要、证据、审批轨迹、执行结果和外部审批同步状态。
筛选条件:
- 公司主体、业务线、App、业务类型、状态、当前节点、申请人、审批人、时间范围、SLA 状态、外部通道。
列表字段:
- 审批编号、业务类型、业务单号、公司主体、App、申请人、当前节点、待办角色、状态、SLA 到期时间、外部同步状态、更新时间。
7.2 审批动作
审批动作必须由服务端校验:
- 通过:进入下一节点或最终通过。
- 退回:退回申请人补充材料,保留当前审批轮次。
- 拒绝:终止审批实例,业务单进入拒绝状态。
- 转交:将任务转给同权限或更高权限人员。
- 加签:增加临时审批节点。
- 委托:按有效委托关系由代理人处理。
- 催办:发送提醒,不改变审批状态。
- 撤回:申请人在未最终审批前撤回,已执行业务不得撤回。
7.3 审批流配置
配置项:
- 业务类型:如客户减免、客服退款、后台用户变更、敏感导出。
- 适用范围:公司主体、业务线、App、产品、国家、环境。
- 触发条件:金额区间、账户变更、敏感字段、风险等级、累计次数、累计金额。
- 节点配置:审批角色、是否会签、是否或签、SLA、超时动作、是否允许转交/加签。
- 生效规则:草稿、待发布、已发布、已停用、版本号、生效时间。
审批流发布后只影响新创建的审批实例,历史实例继续按创建时的流程版本执行。
7.4 默认审批流
| 业务类型 | 条件 | 审批节点 | 外部通道建议 |
|---|---|---|---|
| 客户减免 | 任意金额 | 客服主管 → 财务运营 | P0 内部,P1 可同步 Feishu/Lark |
| 客服退款 | 任意金额 | 客服主管 → 财务运营 | P0 内部,P1 可同步 Feishu/Lark |
| 客服退款 | 账户变更或高金额 | 财务运营 → 财务负责人 | 建议同步 Feishu/Lark 并保留后台复验 |
| 后台用户角色变更 | 敏感角色 | 系统管理员 → 审计负责人 | 可同步 Feishu/Lark |
| 敏感数据导出 | 批量或明文字段 | 直属主管 → 数据负责人 | 可同步 Feishu/Lark |
| 催收减免(后续) | 催收系统传入 | 催收主管 → 规则指定角色 | 由催收系统接入同一审批内核 |
8. 状态机
审批实例状态:
| 状态 | 说明 |
|---|---|
| DRAFT | 草稿,未进入审批 |
| SUBMITTED | 已提交,等待创建首个任务 |
| PENDING | 审批中 |
| RETURNED | 已退回申请人 |
| RE_SUBMITTED | 退回后重新提交 |
| APPROVED | 最终通过 |
| REJECTED | 已拒绝 |
| CANCELLED | 已撤回或取消 |
| EXPIRED | 超时终止 |
| SYNC_FAILED | 外部通道同步失败,内部审批仍可继续 |
审批任务状态:
| 状态 | 说明 |
|---|---|
| PENDING | 待处理 |
| APPROVED | 已通过 |
| RETURNED | 已退回 |
| REJECTED | 已拒绝 |
| TRANSFERRED | 已转交 |
| DELEGATED | 由代理人处理 |
| ADDED | 加签任务 |
| CANCELLED | 因实例撤回或流程结束取消 |
业务执行规则:
- 只有审批实例
APPROVED后,业务系统才允许进入执行阶段。 - 外部同步失败不等于审批失败,后台内部待办仍可处理。
- Feishu/Lark 回调不能直接修改业务执行状态,只能形成审批动作请求。
9. 技术实现方案
9.1 服务划分
后台前端
├─ 审批中心页面
├─ 审批流配置页面
└─ 业务详情审批组件
审批服务
├─ 审批实例
├─ 审批任务
├─ 审批流版本
├─ 规则匹配
├─ SLA 与催办
├─ 外部审批适配
└─ 审计事件
业务系统
├─ 客户减免
├─ 客服退款
├─ 用户管理
├─ 导出中心
└─ 后续催收系统
外部协作平台
├─ Feishu 审批
└─ Lark 审批9.2 核心表
| 表 | 说明 |
|---|---|
approval_instance | 审批实例,记录业务引用、公司主体、当前状态、流程版本和最终结果 |
approval_task | 审批任务,记录节点、待办角色、待办人、SLA、处理状态 |
approval_action_log | 审批动作不可变日志 |
approval_flow_definition | 审批流版本主表 |
approval_flow_node | 审批节点配置 |
approval_flow_condition | 审批流匹配条件 |
approval_external_channel | Feishu/Lark 租户、应用、审批定义和回调配置 |
approval_external_mapping | 内部实例/任务与外部实例/任务编号映射 |
approval_identity_mapping | 后台用户与 Feishu/Lark 用户身份映射 |
approval_sla_event | 催办、超时、升级事件 |
9.3 接口
审批实例:
POST /admin/approvals/instances:业务系统创建审批实例。GET /admin/approvals/instances:查询审批实例。GET /admin/approvals/instances/{id}:查询审批详情。POST /admin/approvals/instances/{id}/cancel:撤回或取消。
审批任务:
GET /admin/approvals/tasks:查询当前人待办、已办和代理待办。POST /admin/approvals/tasks/{id}/approve:通过。POST /admin/approvals/tasks/{id}/return:退回。POST /admin/approvals/tasks/{id}/reject:拒绝。POST /admin/approvals/tasks/{id}/transfer:转交。POST /admin/approvals/tasks/{id}/add-sign:加签。POST /admin/approvals/tasks/{id}/urge:催办。
审批流:
GET /admin/approval-flows:查询审批流。POST /admin/approval-flows:创建草稿。POST /admin/approval-flows/{id}/publish:发布新版本。POST /admin/approval-flows/{id}/disable:停用。POST /admin/approval-flows/match:业务提交前试算审批路径。
外部通道:
GET /admin/approval-external-channels:查询公司主体外部通道配置。POST /admin/approval-external-channels:配置 Feishu/Lark 通道。POST /admin/approvals/external/callback/{channelCode}:接收 Feishu/Lark 回调。POST /admin/approvals/instances/{id}/sync-external:重试同步外部审批。
9.4 业务接入协议
业务系统创建审批实例时必须传入:
businessType:业务类型。businessId:业务单号。companyEntity:公司主体。appId:App 范围。applicantUserId:申请人。amount:金额,使用最小货币单位或高精度十进制。riskTags:风险标签。summary:审批列表展示摘要。detailUrl:后台详情链接。payloadDigest:业务关键字段摘要,用于防篡改。idempotencyKey:幂等键。
审批服务回调业务系统:
APPROVED:最终通过,业务系统可进入执行前复验。REJECTED:拒绝,业务单终止。RETURNED:退回,业务单回到待补充。CANCELLED:撤回,业务单关闭。
10. Feishu/Lark 外部审批适配
10.1 同步方向
业务系统提交
-> 后台审批服务创建实例和任务
-> 审批服务按公司主体选择外部通道
-> 同步第三方审批实例/任务到 Feishu 或 Lark
-> 审批人在 Feishu/Lark 点击通过或拒绝
-> Feishu/Lark 回调后台
-> 后台校验并执行审批动作
-> 后台同步最新实例和任务状态到 Feishu/Lark
-> 业务系统按后台最终审批结果执行10.2 外部通道配置
每个公司主体可以配置:
- 通道类型:Feishu 或 Lark。
- 租户标识、应用 ID、密钥引用、回调验签配置。
- 外部审批定义编号。
- 默认详情页跳转地址。
- 可同步字段白名单。
- 是否允许在外部端快捷审批。
- 同步失败后的降级策略。
10.3 安全规则
- 回调必须验签、验时间戳和防重放。
- 外部用户必须映射到后台用户,且该后台用户仍具备当前任务审批权限。
- 回调动作必须使用审批任务幂等键,重复回调不重复推进状态。
- 外部审批内容只展示必要业务摘要,不展示完整银行卡、身份证、手机号等敏感字段。
- 外部审批结果不能直接触发资金执行,必须经后台审批服务落库后由业务系统执行前复验。
10.4 降级策略
- 外部同步失败:实例状态进入
SYNC_FAILED,后台审批继续可用。 - 回调失败:外部端提示稍后重试,后台保留待办不变。
- 用户映射缺失:不推送外部审批,改为后台待办并生成配置告警。
- 租户不可用:该公司主体临时切换为内部审批通道。
11. 权限与审计
权限点:
approval.center.readapproval.task.decideapproval.task.transferapproval.task.add_signapproval.task.delegateapproval.flow.readapproval.flow.manageapproval.external_channel.manageapproval.monitor.readapproval.audit.read
审计事件:
APPROVAL_INSTANCE_CREATEDAPPROVAL_TASK_CREATEDAPPROVAL_TASK_APPROVEDAPPROVAL_TASK_RETURNEDAPPROVAL_TASK_REJECTEDAPPROVAL_TASK_TRANSFERREDAPPROVAL_TASK_ADDED_SIGNAPPROVAL_FLOW_PUBLISHEDAPPROVAL_EXTERNAL_SYNCEDAPPROVAL_EXTERNAL_CALLBACK_RECEIVEDAPPROVAL_EXTERNAL_SYNC_FAILED
12. 验收标准
- 提交客户减免或客服退款后,必须生成审批实例和首个审批任务。
- 非当前任务审批人不能通过接口审批。
- 同一人员不能作为申请人和最终审批人。
- 审批流新版本只影响新实例,历史实例按旧版本继续。
- 客服主管通过后生成财务待办;财务最终通过后业务系统才允许进入执行前复验。
- 外部通道同步失败时,后台审批仍可继续处理。
- Feishu/Lark 回调必须落入后台审批动作日志,且重复回调不重复推进状态。
- 多公司主体之间的审批实例、外部通道、用户映射和数据范围互相隔离。
- 所有审批动作、外部同步和业务回调均可审计。
13. 实施优先级
P0:
- 自建审批实例、任务、流版本、状态机和审批中心页面。
- 接入客户减免、客服退款。
- 完成权限、职责分离、SLA 基础字段和审计日志。
- 预留外部通道表和字段,但不强依赖 Feishu/Lark。
P1:
- 接入 Feishu/Lark 第三方审批同步和快捷审批回调。
- 建设公司主体、租户、用户映射和外部同步重试。
- 审批流配置页面支持发布、停用和版本对比。
P2:
- 扩展到用户管理、敏感导出、后台配置变更、催收减免。
- 增加会签、或签、加签、委托、超时升级和审批报表。