Skip to content

企业智能报销与财务合规审计系统

一、项目简介

企业智能报销与财务合规审计系统是一个面向企业内部报销场景的 AI 审核平台,覆盖员工提交票据、系统自动识别票据信息、财务制度检索、合规风险判断、员工反馈生成、管理员人工复核等完整流程。

项目的核心目标是将传统依赖人工经验的财务审核流程智能化:员工上传发票、行程单、酒店水单等票据后,系统通过 OCR 和大模型抽取结构化报销字段,再结合企业财务制度进行 RAG 检索和多 Agent 协同审计,最终给出“可审批 / 需补充 / 拒绝”的审核结论,并保留完整 Trace,方便管理员追溯 AI 判断依据。

该项目不是简单的报销表单系统,而是将 OCR、LLM、RAG、Function Calling、人工审批流、权限控制、后台管理 结合在一起的企业级智能财务应用。


二、项目技术栈

前端技术栈

技术用途
Vue构建单页面应用和业务组件
Element UI快速实现表单、表格、弹窗、抽屉、标签页等后台管理 UI
Axios封装前后端接口请求
Vue CLI前端工程化、开发服务和打包构建
LocalStorage保存登录 Token 和当前用户信息
FormData支持发票 PDF / 图片文件上传

后端技术栈

技术用途
Python后端主要开发语言
FastAPI构建高性能 RESTful API,支持文件上传、依赖注入、接口参数校验
UvicornASGI 服务运行
Pydantic请求参数、响应结构和业务模型校验
SQLAlchemy 2.0ORM 数据访问层
MySQL + PyMySQL存储用户、部门、报销申请、审批结果、Agent Trace 等数据
CORS Middleware支持前后端分离跨域访问
PBKDF2-SHA256用户密码加盐哈希存储
Bearer Token + Session 表实现登录态校验和接口权限控制

AI 与智能审核相关技术

技术用途
LangChain统一封装大模型调用、Tool Calling 和消息结构
ChatOpenAI 兼容接口对接 qwen-max 等 OpenAI-compatible 大模型
OpenAIEmbeddings 兼容接口生成财务制度文本向量
Qdrant向量数据库,用于企业财务制度 RAG 检索
RAG根据报销单内容检索相关财务制度,降低大模型幻觉
Function Calling / Tools查询天气、城市等级等外部事实,辅助合规判断
百度 OCR 增值税发票识别识别发票图片 / PDF 中的金额、日期、销售方、服务类型等字段
PyMuPDF将 PDF 首页渲染为图片后进行 OCR 识别

三、核心功能模块

1. 员工端报销提交

员工登录后可以提交报销申请,系统自动读取当前登录用户的姓名和部门,避免员工手动填写造成数据不一致。员工可以选择报销类目、填写金额和备注,也可以上传 PDF、PNG、JPG 格式的发票或直接粘贴票据文本。

主要功能包括:

  • 用户登录、注册、退出;
  • 注册时从后端动态读取启用部门;
  • 报销类目从后端动态读取,支持管理员维护;
  • 支持上传发票 PDF / 图片;
  • 支持粘贴票据文本进行测试;
  • 支持金额、人数、备注等字段人工补充;
  • 提交后展示 AI 审计结论、结构化字段、违规项、制度依据和员工通知文案;
  • 员工可查看自己的历史报销记录和最终审批状态。

2. OCR 票据识别

系统集成百度 OCR 增值税发票识别能力,用于从发票图片或 PDF 中识别票据信息。对于 PDF 文件,系统先通过 PyMuPDF 将第一页渲染为图片,再调用 OCR 接口。

OCR 识别结果会被转换为统一的业务字段,例如:

  • 报销金额;
  • 开票日期;
  • 销售方 / 商户名称;
  • 发票类型;
  • 服务类型;
  • 城市;
  • 行程起止地;
  • 乘车人 / 人数;
  • 商品或服务明细。

这样可以减少员工手工录入,提高报销申请的数据完整性。


3. 多 Agent 智能审计流程

系统后端将 AI 审核拆分为三个 Agent,各 Agent 负责不同职责,降低单个大模型提示词过长、职责混乱的问题。

Agent A:票据信息抽取 Agent

负责将 OCR 文本或用户输入文本转换为结构化报销数据。

输出字段包括:

  • 员工;
  • 部门;
  • 员工选择类目;
  • 系统识别类目;
  • 金额;
  • 币种;
  • 日期;
  • 时间;
  • 商户;
  • 城市;
  • 发票类型;
  • 人数;
  • 行程开始 / 结束日期;
  • 业务说明;
  • 置信度。

系统在抽取时结合了确定性 OCR 字段映射和 LLM 结构化抽取:OCR 能识别的稳定字段优先作为兜底,大模型负责补充业务语义字段,最后通过 Pydantic 模型统一校验。

Agent B:财务合规审计 Agent

负责根据结构化报销数据和财务制度进行合规判断。系统会先根据报销类目、说明、OCR 文本等信息构建检索 Query,然后从 Qdrant 中检索相关财务制度片段,再交给大模型进行审计。

支持识别的风险包括:

  • 金额超标;
  • 发票日期缺失或异常;
  • 报销类目与票据内容不一致;
  • 餐饮人均金额超过制度标准;
  • 住宿标准与城市等级不匹配;
  • 市内交通是否符合加班或因公紧急出行条件;
  • 雨天交通补贴是否需要查询天气;
  • 差旅票据与行程说明是否匹配。

Agent C:结果生成 Agent

负责将审计事实转换为面向不同角色的可读文案:

  • 给管理员看的审核摘要;
  • 给员工看的修改建议或通过通知;
  • 如果通过,生成审批摘要;
  • 如果有问题,明确说明需要补充或修改的材料。

这样可以避免只返回一段生硬的 JSON,让系统更接近真实企业审批场景。


四、系统业务流程

mermaid
flowchart TD
    A[员工登录系统] --> B[填写报销信息 / 上传票据]
    B --> C[OCR 识别 PDF 或图片]
    C --> D[Agent A 抽取结构化报销字段]
    D --> E[构建制度检索 Query]
    E --> F[Qdrant 检索相关财务制度]
    F --> G[Agent B 进行合规审计]
    G --> H{是否需要外部事实}
    H -- 是 --> I[调用 Tool 查询天气 / 城市等级]
    I --> G
    H -- 否 --> J[Agent C 生成审核结论和员工通知]
    G --> J
    J --> K[保存申请记录和 Trace]
    K --> L[员工查看结果]
    K --> M[管理员后台人工复核]
    M --> N[人工同意 / 退回补充 / 拒绝]

五、后台管理功能

系统提供管理员后台,入口为 /manage,只有管理员角色用户可以访问。后台主要面向财务人员或企业管理员,用于统一管理报销申请和基础配置。

报销申请管理

  • 查看所有员工提交的报销申请;
  • 支持按最终状态、决策来源、关键字筛选;
  • 查看申请详情,包括结构化字段、风险项、制度依据、员工通知;
  • 支持人工审批操作:人工同意、退回补充、人工拒绝;
  • 记录审批人、审批意见、审批时间;
  • 区分 AI 审核结果和人工最终结果。

Agent Trace 追踪

管理员可以查看一次报销审计的完整 Trace,包括:

  • API 接收的原始输入;
  • OCR 识别结果;
  • Agent A 抽取结果;
  • RAG 检索到的制度片段;
  • LLM 请求和响应;
  • Function Calling 调用参数和返回结果;
  • 最终生成的审计结论。

Trace 功能是项目的重要亮点,它让 AI 审核过程可解释、可追溯,适合财务合规这种对审计依据要求较高的业务场景。

部门与类目管理

管理员可以维护企业部门和报销类目:

  • 新增、编辑、启用、停用部门;
  • 新增、编辑、启用、删除报销类目;
  • 员工注册时只能选择启用部门;
  • 员工提交报销时只能选择启用类目;
  • 历史申请中的部门和类目文本不会因为后续配置变化而被覆盖。

六、数据库设计概览

系统使用 MySQL 存储核心业务数据,主要表包括:

表名说明
users用户信息,包含用户名、密码哈希、姓名、部门、角色
user_sessions登录 Session,保存 Bearer Token 与用户关联关系
departments部门配置
expense_categories报销类目配置
invoice_applications报销申请主表,保存 AI 结果、人工审批结果、结构化数据、违规项等
trace_recordsAgent 审计链路 Trace,保存每次审计的输入、输出和中间过程

其中 invoice_applications 表不仅保存基础字段,还保存 normalized_dataretrieved_policiesviolations 等 JSON 数据,既方便列表查询,也方便详情页完整展示 AI 审计过程。


七、项目亮点与优势

1. 真实业务场景完整闭环

项目覆盖了员工提交、OCR 识别、AI 审核、制度检索、结果生成、历史记录、管理员人工复核、基础配置管理等完整流程,不是单一 Demo。面试时可以体现对企业级业务流程的理解。

2. 多 Agent 架构,职责清晰

系统没有把所有逻辑都塞进一个 Prompt,而是拆分为信息抽取、合规审计、结果生成三个 Agent。这样设计的好处是:

  • 每个 Agent 的职责更清晰;
  • Prompt 更容易维护;
  • 中间结果可单独追踪;
  • 出错时更容易定位问题;
  • 后续可以独立升级某个 Agent。

3. RAG 财务制度检索,减少大模型幻觉

系统将企业报销制度切分后写入向量库,审核时根据报销内容检索相关制度片段,再让大模型基于制度进行判断。相比直接让大模型凭常识判断,RAG 能让审计结论更贴近企业内部规则,也方便企业后续替换或扩展制度文档。

4. Function Calling 查询外部事实

部分报销规则依赖外部事实,例如:

  • 雨天交通补贴需要查询当天是否下雨;
  • 住宿报销标准需要判断城市等级。

系统通过 Tool Registry 注册天气查询和城市等级查询工具,要求审计 Agent 在遇到相关规则时调用工具,而不是凭经验猜测。这体现了 Agent 不只是聊天,而是能够调用业务函数完成决策。

5. AI 审计过程可解释、可追踪

系统保存完整 Trace,包括 OCR、Agent 输入输出、LLM 返回、工具调用、制度检索结果等。管理员可以在后台查看 AI 判断链路,解决了 AI 系统常见的“黑盒决策”问题,非常适合财务、审计、法务等高合规场景。

6. 支持人工复核,人机协同

系统不会完全替代财务人员,而是通过 AI 完成预审和风险提示,再由管理员进行最终决策。人工审批结果会覆盖 AI 初始结论,并保存审批意见,符合企业实际审批流程。

7. 具备降级和容错设计

当大模型、Embedding 或 Qdrant 不可用时,系统仍然提供兜底逻辑:

  • LLM 不可用时进入保守规则检查或人工复核提示;
  • Embedding 不可用时可以使用关键词方式返回制度片段;
  • Qdrant 不可用时可以退化为内存向量检索;
  • OCR 结果会保留原始 JSON,方便后续 Agent 继续解析。

这种设计提升了系统在本地演示和生产环境中的可用性。

8. 权限和数据隔离清晰

系统区分员工和管理员角色:

  • 员工只能查看自己的申请记录;
  • 管理员可以查看全部申请并进行人工审批;
  • 管理后台接口通过角色校验保护;
  • 用户密码使用 PBKDF2-SHA256 加盐哈希存储;
  • 登录态通过 Bearer Token + 数据库 Session 表维护。

9. 配置化程度较高,便于扩展

部门、报销类目、财务制度、天气服务、向量库、模型地址等都可以配置或扩展。后续可以继续接入公司内部 SSO、OA 审批流、对象存储、消息通知、更多报销规则和更多外部工具。


八、主要接口设计

接口说明
POST /api/auth/register用户注册
POST /api/auth/login用户登录
GET /api/me获取当前登录用户
GET /api/departments获取启用部门
GET /api/expense-categories获取启用报销类目
POST /api/audit提交报销审计,支持文本和文件上传
GET /api/my/applications员工查看自己的申请历史
GET /api/admin/applications管理员查看全部申请
POST /api/admin/applications/{id}/decision管理员提交人工审批结果
GET /api/admin/traces管理员查看 Trace 列表
GET /api/admin/traces/{trace_id}查看指定 Trace 详情
GET /api/policies/search检索财务制度
POST /api/policies/seed重置并写入制度文档
GET /api/admin/departments管理员查看部门
POST /api/admin/departments管理员新增部门
PATCH /api/admin/departments/{id}管理员编辑部门
GET /api/admin/expense-categories管理员查看报销类目
POST /api/admin/expense-categories管理员新增报销类目
PATCH /api/admin/expense-categories/{id}管理员编辑报销类目

九、项目总结

该项目完整实现了一个企业内部智能报销审核系统,从前端交互、后端接口、数据库设计,到 OCR、RAG、多 Agent、Function Calling、人工审批和 Trace 可解释性都有落地。项目既能体现前后端工程能力,也能体现对 AI 应用工程化、企业合规场景和真实业务流程的理解。

在面试中,这个项目可以重点突出三个关键词:

  1. 业务完整:覆盖员工提交、AI 预审、财务复核、配置管理全流程;
  2. AI 工程化:不是简单调用大模型,而是结合 OCR、RAG、多 Agent、工具调用和可追踪链路;
  3. 企业可落地:有权限控制、数据持久化、人工审批、制度依据和扩展能力,符合真实企业系统设计思路。