Files
X-Financial/document/development/费用申请审批财务规则/CONCEPT.md
caoxiaozhu e124e4bbcb feat: 报销审批流重构与管家计划全链路贯通
- 重构报销状态注册表、审批流路由与平台风险标记
- 完善管家意图规划器与模型计划构建器全链路
- 新增 OCR Worker 脚本、数据库会话管理与通知状态
- 优化文档中心、日志视图、预算中心与员工管理交互
- 增强工作台摘要、图标资源与全局主题样式
- 补充审批路由、状态注册、OCR 服务与管家规划器测试覆盖
2026-06-06 17:19:07 +08:00

5.0 KiB

费用申请审批财务规则概念文档

功能一句话

在财务规则中心新增《公司费用申请审批规则》,统一维护业务招待、办公用品和通用大额费用的事前申请与审批阈值,并让报销风险规则引用该规则执行。

背景与问题

现有系统已经有“业务招待无申请”“办公采购无申请”“大额费用无申请”等风险规则,但制度依据主要以风险规则 JSON 的口径字段存在,财务规则中心缺少一张可被制度管理员查看、编辑和追溯的规则表。

用户明确要求:

  • 业务招待费超过 500 元需要申请。
  • 大额办公用品需要申请。
  • 金额超过 2000 元的费用都需要走审批。
  • 这些要求最好形成财务规则,而不是散落在代码或前端提示中。

目标与非目标

目标:

  • 新增一张财务规则资产《公司费用申请审批规则》。
  • 规则资产以 Excel 形式进入 finance-rules 规则库,并在规则中心按“财务规则”展示。
  • 风险规则引用统一的 finance_rule_code,不再使用零散口径 code。
  • 报销阶段按结构化金额规则判断,而不是只靠关键词命中。
  • 关联有效申请单后不触发“缺少申请”风险。

非目标:

  • 本轮不新增数据库字段。
  • 本轮不新增非本体业务字段。
  • 本轮不改造完整审批流节点,只补充申请前置与风险执行依据。

用户与场景

  • 报销人:上传或录入业务招待、办公用品、大额费用报销时,系统自动识别是否缺少事前申请。
  • 直属领导和财务审核人:审核单据时能看到风险来自财务规则。
  • 财务制度管理员:能在规则中心看到并维护《公司费用申请审批规则》。

功能能力

财务规则表

规则表包含以下行:

  • 业务招待费:单次费用金额大于 500 元时,必须先提交费用申请单。
  • 办公用品费:单次或批量采购金额大于 2000 元时,必须先提交办公采购或费用申请单。
  • 通用大额费用:任意费用金额大于 2000 元时,必须进入审批流程。

风险规则执行

  • mealentertainment 都视为业务招待费。
  • office 视为办公用品费。
  • all 视为通用大额费用。
  • 报销阶段没有关联有效申请单时,超过阈值命中高风险。
  • 已有关联申请单时,不命中缺少申请风险。

方案设计

后端

  • agent_asset_spreadsheet.py 中新增费用申请审批规则 code 与文件名常量。
  • 在财务规则同步中新增该资产的 metadata、Excel 工作簿生成和版本快照。
  • 在初始化和补齐逻辑中创建该财务规则资产,确保老库和新库都能看到。
  • 将三条风险规则改为 composite_rule_v1,使用金额阈值和申请单存在性执行。
  • risk_rule_template_executor.py 中补齐 application.* 字段解析,桥接现有 application_link / application_handoff / application_detail 风险上下文。

前端

本轮不新增前端页面。规则中心已有财务规则和 JSON 风险规则展示能力,后端资产同步后前端可直接展示。

数据与本体

本轮只使用现有本体字段:

  • expense_type
  • amount
  • reason
  • application_claim_id
  • application_claim_no
  • application_detail

不新增非本体字段。

算法与公式

业务招待费规则:


hit = expenseType \in \{meal, entertainment\} \land amount > 500 \land \neg hasApplication

办公用品规则:


hit = expenseType = office \land amount > 2000 \land \neg hasApplication

通用大额规则:


hit = amount > 2000 \land \neg hasApplication

其中:

  • amount 来自 claim.amount
  • hasApplication 来自 application.idapplication.claim_no 或等价申请单上下文。

测试方案

  • 单元测试:验证 application.* 字段能从已有申请关联上下文解析。
  • 规则执行测试:超过 500 元业务招待费且无申请命中风险。
  • 规则执行测试:超过 2000 元办公用品费且无申请命中风险。
  • 规则执行测试:超过 2000 元通用费用且无申请命中风险。
  • 规则执行测试:已关联申请单的超额费用不命中缺少申请风险。
  • 资产测试:规则中心种子数据包含《公司费用申请审批规则》,且 config_json.tag 为“财务规则”。

指标与验收

  • 财务规则中心能看到新增规则资产。
  • 新增资产 finance_rule_code 统一为 expense.preapproval.policy
  • 三条风险规则均引用该财务规则 code。
  • 容器内后端定向测试通过。
  • 不新增非本体业务字段。

风险与开放问题

  • “大额办公用品”的金额阈值按用户同句“大额/超过 2000 都需要审批”落为 2000 元。
  • 当前申请单上下文主要存在 risk_flags_json 的申请关联 flag 中,本轮先补执行器解析,不新增外键字段。
  • 后续如果要支持不同部门或不同职级阈值,可以在同一张财务规则表中扩展分档行。