后续考虑 - 审批中心与审批流程需求

本文仅作为二期方案储备,不属于后台管理一期范围、一期原型导航或一期验收依据。一期退费减免按专项权限、服务端复验、幂等、审计和对账执行,不创建审批实例或审批任务。

1. 文档结论

后台管理需要建设统一审批中心,承接客户减免、客服退款、后台配置变更、敏感数据导出、资金类操作等高风险流程。

推荐实施路线:

  1. P0 自建审批内核,负责审批实例、审批任务、审批流版本、状态机、权限、SLA、审计和业务回调。
  2. Feishu/Lark 不作为唯一审批状态源,首期作为可选外部审批入口和待办同步渠道。
  3. 多公司主体按 company_entity + collaboration_tenant + app_scope 建模,不同主体可选择后台自建审批、Feishu 审批或 Lark 审批。
  4. 业务系统只能依赖后台审批内核的最终结果,不能直接依赖 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 处理第三方审批任务后,回调第三方系统。

参考:

6.2 推荐接入方式

优先接入“第三方审批”模式,而不是把业务规则完全搬到 Feishu/Lark 原生审批定义中。

原因:

  • 后台仍是审批实例、任务、状态和业务执行的主系统。
  • Feishu/Lark 只承载待办展示、提醒和快捷审批动作。
  • 后台可以同步业务摘要、金额、风险标签、详情链接和当前待办人。
  • Feishu/Lark 回调只触发后台审批动作,后台仍需鉴权、验签、职责分离和业务复验。

6.3 多公司主体可行性

可行,但必须按主体做隔离配置。

建议模型:

维度说明
公司主体法人或业务经营主体,如 Nigeria Entity、Kenya Entity、集团主体
协作租户对应 Feishu 或 Lark 的 tenant/app,可能一个公司主体一个租户,也可能多个主体共用一个租户
审批通道INTERNALFEISHU_EXTERNALLARK_EXTERNALFEISHU_NATIVELARK_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_channelFeishu/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.read
  • approval.task.decide
  • approval.task.transfer
  • approval.task.add_sign
  • approval.task.delegate
  • approval.flow.read
  • approval.flow.manage
  • approval.external_channel.manage
  • approval.monitor.read
  • approval.audit.read

审计事件:

  • APPROVAL_INSTANCE_CREATED
  • APPROVAL_TASK_CREATED
  • APPROVAL_TASK_APPROVED
  • APPROVAL_TASK_RETURNED
  • APPROVAL_TASK_REJECTED
  • APPROVAL_TASK_TRANSFERRED
  • APPROVAL_TASK_ADDED_SIGN
  • APPROVAL_FLOW_PUBLISHED
  • APPROVAL_EXTERNAL_SYNCED
  • APPROVAL_EXTERNAL_CALLBACK_RECEIVED
  • APPROVAL_EXTERNAL_SYNC_FAILED

12. 验收标准

  • 提交客户减免或客服退款后,必须生成审批实例和首个审批任务。
  • 非当前任务审批人不能通过接口审批。
  • 同一人员不能作为申请人和最终审批人。
  • 审批流新版本只影响新实例,历史实例按旧版本继续。
  • 客服主管通过后生成财务待办;财务最终通过后业务系统才允许进入执行前复验。
  • 外部通道同步失败时,后台审批仍可继续处理。
  • Feishu/Lark 回调必须落入后台审批动作日志,且重复回调不重复推进状态。
  • 多公司主体之间的审批实例、外部通道、用户映射和数据范围互相隔离。
  • 所有审批动作、外部同步和业务回调均可审计。

13. 实施优先级

P0:

  • 自建审批实例、任务、流版本、状态机和审批中心页面。
  • 接入客户减免、客服退款。
  • 完成权限、职责分离、SLA 基础字段和审计日志。
  • 预留外部通道表和字段,但不强依赖 Feishu/Lark。

P1:

  • 接入 Feishu/Lark 第三方审批同步和快捷审批回调。
  • 建设公司主体、租户、用户映射和外部同步重试。
  • 审批流配置页面支持发布、停用和版本对比。

P2:

  • 扩展到用户管理、敏感导出、后台配置变更、催收减免。
  • 增加会签、或签、加签、委托、超时升级和审批报表。