Files
X-Financial/document/development/费用审批动态路由/CONCEPT.md
caoxiaozhu 92444e7eae feat: 扩展风险规则体系、审批动态路由与预算中心列表化改造
- 新增 25+ 条风险规则(预算/报销/申请/通用类),完善风险规则模拟与反馈发布机制
- 引入费用审批动态路由、平台风险分级、预审与风险阶段管理
- 预算中心列表化改造,优化票据夹仪表盘与数字员工工作看板
- 新增 Hermes 风险线索收集器、Agent 链路追踪中心
- 扩展数字员工能力库(18 个领域 Skill)与交通费用自动预估
- 完善报销申请快速预览、权限控制与前端测试覆盖
2026-06-01 17:07:14 +08:00

4.4 KiB
Raw Blame History

费用审批动态路由概念文档

功能一句话

让费用申请和报账在直属领导审批后,按预算风险、规则风险和员工历史风险动态决定是否进入预算管理者复核。

背景与问题

当前申请单默认进入预算管理者审批,报账单默认进入财务审批,审批路径偏固定。业务上更合理的方式是:预算充足、当前无风险、历史画像正常的单据减少审批层级;存在超预算、规则命中、超标或历史风险异常的单据交给预算管理者做二次确认。

目标与非目标

目标:

  • 申请环节:低风险且预算充足时,直属领导审批后直接完成申请并生成报销草稿。
  • 申请环节:超预算、预算预警、当前风险或历史风险异常时,进入预算管理者审批。
  • 报账环节:低风险且预算充足时,直属领导审批后进入财务审批。
  • 报账环节:超预算、超标、当前风险或历史风险异常时,先进入预算管理者审批,再进入财务审批。
  • 审批记录中保留路由决策依据,便于追溯。

非目标:

  • 不改预算占用、释放、核销的资金动作语义。
  • 不引入新的审批流配置页面。
  • 不让大模型参与最终审批路由裁判。

用户与场景

  • 普通员工:提交费用申请或报账。
  • 直属领导:确认业务必要性。
  • 预算管理者:只复核有预算或风险关注项的单据。
  • 财务人员:处理报账财务终审和付款前流程。

功能能力

路由决策输入:

  • 单据基本信息:金额、费用类型、发生时间、部门、项目、申请人。
  • 预算测算:预算池匹配、可用余额、预算使用率、预警阈值、超预算金额。
  • 当前风险:预算标记、规则中心风险、提交预审风险、票据/附件风险、超标风险。
  • 历史风险:同一员工近一段时间内的实质风险记录。

路由决策输出:

  • requires_budget_review:是否需要预算管理者复核。
  • route:下一环节建议。
  • reasons:触发预算复核或跳过的原因。
  • budget_result:预算模型摘要。
  • current_risk_counthistorical_risk_count:当前和历史风险计数。

方案设计

后端新增独立审批路由决策模块,避免在审批主流程中堆条件。

直属领导审批时:

  1. 调用预算服务计算当前单据预算影响。
  2. 读取当前单据风险标记,过滤审批记录等非风险事件。
  3. 查询同一员工近期历史单据,统计实质风险记录。
  4. 生成路由决策标记并写入 risk_flags_json
  5. 根据结果决定下一环节:
    • 申请单:预算复核或审批完成。
    • 报账单:预算复核或财务审批。

预算管理者审批时:

  • 申请单进入审批完成,并生成报销草稿。
  • 报账单进入财务审批。

算法与公式

路由决策不是单一分数,而是规则化闸口:


requires\_budget\_review =
budget\_risk \lor current\_risk \lor historical\_risk

其中:

  • budget_risk = rating in {block, review, caution} or risk_level in {medium, high, critical}
  • current_risk = 当前单据存在 medium/high/critical 实质风险标记
  • historical_risk = 同一员工近期存在实质风险记录

实质风险标记排除审批通过、退回、付款、路由说明等流程记录只保留预算、规则、AI 预审、附件、政策超标等风险来源。

测试方案

  • 单元测试:低风险申请跳过预算管理者并生成报销草稿。
  • 单元测试:高风险报账进入预算管理者审批,预算审批后进入财务审批。
  • 回归测试:原有风险规则生成、申请提交、阶段化风险规则执行继续通过。
  • 容器验证:在 x-financial-main:/app/server 内运行定向 pytest。

指标与验收

  • 低风险申请不会固定进入预算管理者审批。
  • 风险报账会进入预算管理者审批。
  • 报账经过预算管理者审批后仍需进入财务终审。
  • 每次动态路由都有可追溯的 approval_routing 标记。
  • 预算资金动作仍由原有提交、退回、财务终审链路处理。

风险与开放问题

  • 历史风险的口径会影响预算管理者工作量,当前一期采用“存在实质风险即复核”的严格口径。
  • 缺失预算池时是否全部进入预算复核,当前按预算风险处理。
  • 后续如要支持可配置路由阈值,应新增配置表或策略服务,而不是继续改审批流分支。