Files
X-Financial/document/AI报销操作层_影子报销账本_开发文档.md
WIN-JHFT4D3SIVT\caoxiaozhu 7141e1d11a feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00

1494 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 报销操作层 / 影子报销账本开发文档
> 版本v0.1
> 场景范围:仅聚焦“报销”场景,不包含合同审核、采购付款、总账、税务申报等后续场景。
> 核心思路:以 Agent 层为业务中枢,在现有 OA / ERP / 费控系统之上构建 AI 原生的报销操作层与影子报销账本。
---
## 1. 项目定位
### 1.1 产品名称
暂定名称:
- AI 报销操作层
- 智能报销预审 Agent
- 影子报销账本
- 报销政策 Agent
推荐对外名称:
> **AI 报销预审中台**
推荐对内技术名称:
> **AI Reimbursement Operation Layer**
---
### 1.2 一句话定义
在企业现有 OA、ERP、费控系统之上构建一个以 Agent 为核心的 AI 报销操作层,让员工不用直接面对复杂系统,只需上传票据和说明事项,由 Agent 自动完成材料整理、报销草稿生成、制度预审、缺件提醒、风险解释和后端系统同步。
---
### 1.3 核心目标
本系统不是替代 ERP也不是重新做一套完整费控系统而是作为现有系统之上的智能操作层。
核心目标包括:
1. 降低员工填单难度。
2. 减少财务审核打回。
3. 提高报销制度执行一致性。
4. 沉淀报销过程证据链。
5. 为后续扩展付款、采购、合同付款等财务 Agent 场景打基础。
---
### 1.4 产品边界
#### 本期做
- 票据 / 附件上传
- OCR 识别
- 报销草稿生成
- 费用类型识别
- 制度规则预审
- 缺件提醒
- 风险解释
- 用户补充确认
- 影子报销账本记录
- 后端系统同步接口预留
- 审计日志与规则命中记录
#### 本期不做
- 不做正式总账
- 不做凭证过账
- 不做税务申报
- 不做银行支付
- 不做完整预算控制
- 不做合同审核
- 不替换原 OA / ERP / 费控系统
---
## 2. 总体架构
### 2.1 架构原则
系统采用“前台 AI 操作层 + 中台 Agent 编排 + 影子报销账本 + 后端系统同步”的架构。
核心原则:
> **用户体验在 AI 报销操作层,正式账务仍在 ERP。**
> **Agent 负责理解、编排与交互;规则负责判断;系统负责留痕;后端负责正式审批和入账。**
---
### 2.2 架构分层
系统分为 6 层:
1. 用户与入口层
2. AI 报销操作层
3. Agent 层
4. 影子报销账本层
5. Policy & Evidence 层
6. System Adapter / 后端集成层
---
### 2.3 分层说明
#### 2.3.1 用户与入口层
面向对象:
- 员工
- 财务审核人员
- 制度管理员
- 系统管理员
入口方式:
- Web
- 企业微信
- 钉钉
- OA 工作台
- 移动端 H5
职责:
- 接收用户报销意图
- 上传票据和附件
- 展示预审结果
- 支持补件交互
- 支持确认提交
---
#### 2.3.2 AI 报销操作层
这是用户直接感知的业务操作层。
主要功能:
- 对话式报销入口
- 票据 / 附件上传
- 报销草稿展示
- 风险与缺件提示
- 预审结果解释
- 用户确认提交
该层的目标是让用户不再直接面对复杂 ERP 字段,而是通过自然语言、文件上传和确认操作完成报销。
---
#### 2.3.3 Agent 层
Agent 层是系统核心中枢,所有业务流程围绕 Agent 层展开。
Agent 层负责:
- 理解用户意图
- 编排任务流程
- 调用 OCR 工具
- 调用规则引擎
- 查询主数据
- 生成报销草稿
- 发起补件对话
- 输出风险解释
- 同步后端系统
核心组件:
- 受理 Agent
- 单据解析 Agent
- 规则校验 Agent
- 解释与补件 Agent
- 同步执行 Agent
- Agent Orchestrator / Workflow
---
#### 2.3.4 影子报销账本层
影子报销账本层用于沉淀报销业务事实,但不是正式总账。
它记录:
- 报销申请
- 报销明细
- 票据索引
- 附件索引
- 风险记录
- 规则命中记录
- 补件会话记录
- 后端同步状态
作用:
- 为前台提供统一业务视图
- 为 Agent 提供流程状态
- 为审计提供过程留痕
- 为后端系统同步提供中间状态
注意:
> 影子报销账本不是会计账,不承担正式记账职责。
---
#### 2.3.5 Policy & Evidence 层
该层负责规则判断和证据归档。
包含:
- 报销制度库
- 费用标准库
- 费用类型字典
- 城市等级 / 补贴规则
- 发票验真结果
- 发票查重结果
- 审计日志
- 证据归档库
作用:
- 为 Agent 提供制度依据
- 为规则引擎提供结构化规则
- 为财务审核提供可追溯证据
- 为后续审计提供完整证据链
---
#### 2.3.6 System Adapter / 后端集成层
负责连接企业已有系统。
可对接系统:
- OA / BPM 审批系统
- ERP / 财务系统
- 费控报销系统
- 预算系统
- 主数据系统
- 发票平台
- 税务接口
- 财务共享中心
- 企业微信 / 钉钉消息系统
职责:
- 查询主数据
- 查询预算信息
- 查询员工信息
- 写入报销草稿
- 发起审批流程
- 同步审批状态
- 同步归档结果
---
## 3. 核心业务流程
### 3.1 流程总览
完整流程如下:
1. 用户上传票据与出差信息
2. Agent 受理并理解任务
3. Agent 调用 OCR 和解析工具
4. Agent 识别费用类型并生成影子报销记录
5. Agent 调用规则引擎完成制度预审
6. Agent 输出风险解释和缺件提醒
7. 用户补充材料并确认
8. Agent 生成标准报销单
9. Agent 同步 OA / ERP / 费控系统
10. 后端完成正式审批、入账与归档
---
### 3.2 主流程时序
```mermaid
sequenceDiagram
participant U as 用户
participant UI as AI报销操作层
participant AO as Agent Orchestrator
participant OCR as OCR/票据识别
participant Rule as 规则引擎
participant Ledger as 影子报销账本
participant Adapter as 后端适配器
participant ERP as OA/ERP/费控系统
U->>UI: 上传票据/说明报销事项
UI->>AO: 创建报销任务
AO->>OCR: 调用票据识别
OCR-->>AO: 返回结构化票据信息
AO->>Ledger: 创建影子报销记录
AO->>Rule: 调用制度预审
Rule-->>AO: 返回规则命中与风险结果
AO->>UI: 展示风险/缺件/草稿
U->>UI: 补充材料并确认
UI->>AO: 提交确认
AO->>Ledger: 更新报销状态
AO->>Adapter: 生成标准报销单并同步
Adapter->>ERP: 写入报销单/发起审批
ERP-->>Adapter: 返回审批单号/状态
Adapter-->>Ledger: 回写后端同步状态
```
---
### 3.3 Agent 驱动运行逻辑
```mermaid
flowchart TD
A[用户上传票据与出差信息] --> B[受理 Agent 理解任务]
B --> C[单据解析 Agent 识别票据与附件]
C --> D[生成影子报销记录]
D --> E[规则校验 Agent 调用制度规则]
E --> F{是否存在风险或缺件}
F -- 是 --> G[解释与补件 Agent 发起补件交互]
G --> H[用户补充材料并确认]
H --> E
F -- 否 --> I[同步执行 Agent 生成标准报销单]
I --> J[同步 OA / ERP / 费控系统]
J --> K[后端正式审批、入账与归档]
```
---
## 4. Agent 设计
### 4.1 Agent 总体分工
| Agent | 职责 | 输入 | 输出 |
|---|---|---|---|
| 受理 Agent | 理解用户报销意图,收集上下文 | 用户自然语言、上传文件、历史任务 | 报销任务、材料清单、缺失信息 |
| 单据解析 Agent | OCR 识别、字段抽取、费用归类 | 发票、行程单、酒店单、支付截图 | 结构化票据信息、费用明细建议 |
| 规则校验 Agent | 制度预审、超标、查重、合规判断 | 报销草稿、规则库、主数据 | 规则命中记录、风险等级 |
| 解释与补件 Agent | 解释风险、提示缺件、引导修改 | 风险结果、缺件列表、制度依据 | 用户可理解的解释、补件任务 |
| 同步执行 Agent | 生成标准报销单,调用后端接口 | 最终确认数据、影子账本记录 | 后端报销单号、审批状态 |
---
### 4.2 Agent Orchestrator
Agent Orchestrator 是流程编排器,负责管理任务状态和 Agent 调度。
职责:
- 创建任务
- 维护任务状态
- 决定下一步调用哪个 Agent
- 管理多轮对话上下文
- 管理工具调用
- 处理失败重试
- 记录流程日志
- 管理人工确认节点
建议状态机:
```mermaid
stateDiagram-v2
[*] --> Created: 创建任务
Created --> MaterialCollecting: 收集材料
MaterialCollecting --> Parsing: 解析单据
Parsing --> DraftGenerated: 生成草稿
DraftGenerated --> PreChecking: 制度预审
PreChecking --> NeedSupplement: 存在缺件/风险
NeedSupplement --> MaterialCollecting: 用户补件
PreChecking --> PendingUserConfirm: 预审通过
PendingUserConfirm --> Submitting: 用户确认
Submitting --> Synced: 同步后端成功
Submitting --> SyncFailed: 同步失败
SyncFailed --> Submitting: 重试
Synced --> [*]
```
---
### 4.3 Agent 调用原则
Agent 不直接决定最终财务结果,只负责预审和建议。
原则:
1. 低风险问题可自动提示。
2. 中风险问题需要用户确认。
3. 高风险问题进入人工审核。
4. 所有规则命中必须留痕。
5. 所有 AI 解释必须能追溯到制度或证据。
6. 正式审批和入账仍以后端系统为准。
---
## 5. 核心数据模型
### 5.1 主要实体
| 实体 | 说明 |
|---|---|
| ReimbursementTask | 报销任务Agent 处理的最小任务单元 |
| ShadowReimbursement | 影子报销记录,表示一次报销业务事实 |
| ReimbursementItem | 报销明细 |
| ExpenseDocument | 票据 / 附件 |
| ExpensePolicy | 报销制度 |
| ExpenseRule | 报销规则 |
| RuleHit | 规则命中记录 |
| RiskFinding | 风险提示 |
| SupplementRequest | 补件请求 |
| ConversationRecord | 会话记录 |
| SyncRecord | 后端同步记录 |
| AuditLog | 审计日志 |
---
### 5.2 表结构建议
#### 5.2.1 reimbursement_task 报销任务表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 任务ID |
| user_id | string | 发起人ID |
| company_id | string | 企业ID |
| task_type | string | 任务类型,如 travel_expense |
| status | string | 任务状态 |
| user_intent | text | 用户原始意图 |
| current_agent | string | 当前处理 Agent |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
---
#### 5.2.2 shadow_reimbursement 影子报销记录表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 影子报销ID |
| task_id | string | 关联任务ID |
| applicant_id | string | 报销人 |
| department_id | string | 部门 |
| cost_center_id | string | 成本中心 |
| project_id | string | 项目ID |
| reimbursement_type | string | 报销类型 |
| reason | text | 报销事由 |
| total_amount | decimal | 总金额 |
| currency | string | 币种 |
| risk_level | string | 风险等级 |
| precheck_status | string | 预审状态 |
| backend_system | string | 目标后端系统 |
| backend_bill_id | string | 后端单据ID |
| sync_status | string | 同步状态 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
---
#### 5.2.3 reimbursement_item 报销明细表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 明细ID |
| reimbursement_id | string | 影子报销ID |
| expense_type | string | 费用类型 |
| amount | decimal | 金额 |
| tax_amount | decimal | 税额 |
| occurred_at | date | 费用发生日期 |
| city | string | 发生城市 |
| vendor_name | string | 商户名称 |
| invoice_id | string | 关联票据ID |
| policy_status | string | 规则校验状态 |
| risk_level | string | 风险等级 |
| remark | text | 备注 |
---
#### 5.2.4 expense_document 票据附件表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 文件ID |
| reimbursement_id | string | 影子报销ID |
| item_id | string | 明细ID |
| document_type | string | 发票、行程单、酒店流水、支付截图等 |
| file_url | string | 文件地址 |
| ocr_status | string | OCR 状态 |
| extracted_json | json | OCR 抽取结果 |
| invoice_code | string | 发票代码 |
| invoice_number | string | 发票号码 |
| invoice_date | date | 开票日期 |
| amount | decimal | 金额 |
| tax_amount | decimal | 税额 |
| seller_name | string | 销售方 |
| buyer_name | string | 购买方 |
| verify_status | string | 验真状态 |
| duplicate_status | string | 查重状态 |
| created_at | datetime | 创建时间 |
---
#### 5.2.5 expense_rule 规则表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 规则ID |
| rule_code | string | 规则编码 |
| rule_name | string | 规则名称 |
| expense_type | string | 适用费用类型 |
| condition_json | json | 条件表达式 |
| action | string | 命中动作 |
| severity | string | 风险等级 |
| message_template | text | 提示文案模板 |
| policy_ref | string | 制度依据 |
| enabled | boolean | 是否启用 |
| version | string | 规则版本 |
---
#### 5.2.6 rule_hit 规则命中表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 命中ID |
| reimbursement_id | string | 报销ID |
| item_id | string | 明细ID |
| rule_id | string | 规则ID |
| severity | string | 风险等级 |
| hit_result | json | 命中详情 |
| explanation | text | 解释说明 |
| suggestion | text | 修改建议 |
| created_at | datetime | 创建时间 |
---
#### 5.2.7 supplement_request 补件请求表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 补件请求ID |
| reimbursement_id | string | 报销ID |
| request_type | string | 补充附件、补充说明、修改字段 |
| target_item_id | string | 关联明细ID |
| message | text | 补件提示 |
| status | string | 待补充、已补充、已关闭 |
| user_response | text | 用户回复 |
| created_at | datetime | 创建时间 |
| resolved_at | datetime | 完成时间 |
---
#### 5.2.8 sync_record 后端同步记录表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 同步ID |
| reimbursement_id | string | 报销ID |
| target_system | string | 目标系统 |
| request_payload | json | 请求报文 |
| response_payload | json | 响应报文 |
| sync_status | string | 成功、失败、重试中 |
| backend_bill_id | string | 后端单据ID |
| error_message | text | 错误信息 |
| created_at | datetime | 创建时间 |
---
## 6. 枚举设计
### 6.1 报销任务状态
| 编码 | 名称 |
|---|---|
| created | 已创建 |
| material_collecting | 收集中 |
| parsing | 解析中 |
| draft_generated | 草稿已生成 |
| prechecking | 预审中 |
| need_supplement | 需要补件 |
| pending_user_confirm | 待用户确认 |
| submitting | 提交中 |
| synced | 已同步 |
| sync_failed | 同步失败 |
| closed | 已关闭 |
---
### 6.2 费用类型
| 编码 | 名称 |
|---|---|
| travel_transport | 差旅交通费 |
| travel_hotel | 差旅住宿费 |
| travel_meal | 差旅餐补 |
| local_transport | 市内交通费 |
| business_meal | 业务招待费 |
| office_supply | 办公用品费 |
| communication | 通讯费 |
| other | 其他 |
---
### 6.3 票据类型
| 编码 | 名称 |
|---|---|
| vat_invoice | 增值税发票 |
| train_ticket | 火车票 |
| flight_itinerary | 航空行程单 |
| taxi_receipt | 打车票据 |
| hotel_bill | 酒店流水 |
| payment_screenshot | 支付截图 |
| travel_order | 行程单 |
| other_attachment | 其他附件 |
---
### 6.4 风险等级
| 编码 | 名称 | 处理方式 |
|---|---|---|
| low | 低风险 | 提醒用户 |
| medium | 中风险 | 需要用户确认或补充说明 |
| high | 高风险 | 建议人工审核 |
| blocked | 阻断 | 不允许提交 |
---
### 6.5 规则动作
| 编码 | 名称 |
|---|---|
| pass | 通过 |
| warn | 警告 |
| require_explanation | 要求说明 |
| require_attachment | 要求补附件 |
| require_approval | 要求特殊审批 |
| block | 阻断提交 |
---
## 7. 规则引擎设计
### 7.1 规则类型
MVP 阶段建议支持以下规则:
1. 必填字段校验
2. 附件完整性校验
3. 票据验真校验
4. 重复报销校验
5. 金额超标校验
6. 日期合理性校验
7. 出差期间匹配校验
8. 费用类型与票据类型匹配校验
9. 发票抬头校验
10. 项目 / 成本中心校验
---
### 7.2 规则示例
#### 规则 1住宿费超标
```json
{
"rule_code": "TRAVEL_HOTEL_LIMIT",
"rule_name": "住宿费标准校验",
"expense_type": "travel_hotel",
"condition": {
"compare": "amount_per_night",
"operator": ">",
"target": "policy.hotel_limit"
},
"action": "require_explanation",
"severity": "medium",
"message_template": "住宿费超出当前城市和职级标准,请补充超标说明或发起特殊审批。",
"policy_ref": "差旅报销制度-住宿标准"
}
```
#### 规则 2缺少酒店流水
```json
{
"rule_code": "HOTEL_BILL_REQUIRED",
"rule_name": "住宿费必须上传酒店流水",
"expense_type": "travel_hotel",
"condition": {
"required_document_type": "hotel_bill"
},
"action": "require_attachment",
"severity": "medium",
"message_template": "当前住宿费缺少酒店流水,请补充上传。",
"policy_ref": "差旅报销制度-附件要求"
}
```
#### 规则 3票据疑似重复
```json
{
"rule_code": "DUPLICATE_INVOICE_CHECK",
"rule_name": "重复发票检查",
"expense_type": "*",
"condition": {
"duplicate_keys": ["invoice_code", "invoice_number", "amount", "invoice_date"]
},
"action": "block",
"severity": "blocked",
"message_template": "检测到该发票可能已被报销,请确认或联系财务处理。",
"policy_ref": "费用报销管理办法-重复报销"
}
```
---
### 7.3 规则结果结构
```json
{
"precheck_status": "need_supplement",
"risk_level": "medium",
"rule_hits": [
{
"rule_code": "HOTEL_BILL_REQUIRED",
"severity": "medium",
"message": "当前住宿费缺少酒店流水,请补充上传。",
"suggestion": "请上传酒店结账单或住宿明细流水。",
"policy_ref": "差旅报销制度-附件要求"
}
]
}
```
---
## 8. API 设计
### 8.1 创建报销任务
```http
POST /api/reimbursement/tasks
```
请求:
```json
{
"user_id": "U001",
"company_id": "C001",
"user_intent": "我要报这次北京出差的费用",
"entry_channel": "web"
}
```
响应:
```json
{
"task_id": "T202604240001",
"status": "material_collecting"
}
```
---
### 8.2 上传票据附件
```http
POST /api/reimbursement/tasks/{task_id}/documents
```
请求:
```json
{
"document_type": "vat_invoice",
"file_url": "https://example.com/file/invoice001.pdf"
}
```
响应:
```json
{
"document_id": "D001",
"ocr_status": "pending"
}
```
---
### 8.3 启动 Agent 处理
```http
POST /api/reimbursement/tasks/{task_id}/agent/run
```
请求:
```json
{
"start_from": "intake",
"mode": "precheck"
}
```
响应:
```json
{
"task_id": "T202604240001",
"status": "parsing",
"current_agent": "document_parse_agent"
}
```
---
### 8.4 获取报销草稿
```http
GET /api/reimbursement/tasks/{task_id}/draft
```
响应:
```json
{
"reimbursement_id": "R001",
"reason": "北京出差",
"total_amount": 2380.00,
"items": [
{
"item_id": "I001",
"expense_type": "travel_hotel",
"amount": 1200.00,
"occurred_at": "2026-04-20",
"risk_level": "medium"
}
],
"precheck_status": "need_supplement"
}
```
---
### 8.5 获取预审结果
```http
GET /api/reimbursement/tasks/{task_id}/precheck-result
```
响应:
```json
{
"precheck_status": "need_supplement",
"risk_level": "medium",
"summary": "当前报销单存在 1 个缺件问题和 1 个超标风险。",
"rule_hits": [
{
"rule_code": "HOTEL_BILL_REQUIRED",
"severity": "medium",
"message": "住宿费缺少酒店流水。",
"suggestion": "请上传酒店流水。"
}
]
}
```
---
### 8.6 用户补件
```http
POST /api/reimbursement/tasks/{task_id}/supplements
```
请求:
```json
{
"supplement_request_id": "S001",
"response_text": "已补充酒店流水",
"document_ids": ["D003"]
}
```
响应:
```json
{
"status": "received",
"next_action": "rerun_precheck"
}
```
---
### 8.7 用户确认提交
```http
POST /api/reimbursement/tasks/{task_id}/submit
```
请求:
```json
{
"confirmed": true,
"submit_to": "expense_system"
}
```
响应:
```json
{
"status": "submitting",
"sync_id": "SYNC001"
}
```
---
### 8.8 查询同步状态
```http
GET /api/reimbursement/tasks/{task_id}/sync-status
```
响应:
```json
{
"sync_status": "success",
"target_system": "expense_system",
"backend_bill_id": "BX202604240001"
}
```
---
## 9. 前端页面设计
### 9.1 页面清单
MVP 阶段建议包含以下页面:
1. 报销入口页
2. 票据上传页
3. 报销草稿页
4. 预审结果页
5. 补件交互页
6. 提交确认页
7. 任务详情页
8. 财务审核辅助页
9. 制度规则管理页
10. 审计日志页
---
### 9.2 报销入口页
核心元素:
- 对话输入框
- 上传按钮
- 最近任务
- 常用报销类型
- 智能引导问题
示例提示:
- “我要报一次差旅”
- “帮我看这些票能不能报”
- “帮我生成报销单”
- “这张发票为什么不合规?”
---
### 9.3 报销草稿页
展示内容:
- 报销人
- 部门
- 成本中心
- 项目
- 报销事由
- 费用明细
- 票据附件
- 自动识别结果
- 可编辑字段
- 预审状态
---
### 9.4 预审结果页
展示内容:
- 总体结论
- 风险等级
- 通过项
- 风险项
- 缺件项
- 命中规则
- 制度依据
- 修改建议
- 一键补件按钮
- 人工确认按钮
---
### 9.5 财务审核辅助页
展示内容:
- 报销单摘要
- AI 预审结论
- 规则命中列表
- 用户补件记录
- 附件证据链
- 同步状态
- 审计日志
---
## 10. 后端服务设计
### 10.1 服务拆分建议
MVP 阶段可采用模块化单体,后续再微服务化。
建议模块:
| 模块 | 说明 |
|---|---|
| user-service | 用户与权限 |
| task-service | 报销任务管理 |
| document-service | 文件与票据管理 |
| agent-service | Agent 编排 |
| ocr-service | OCR 调用封装 |
| rule-service | 规则引擎 |
| ledger-service | 影子账本 |
| evidence-service | 证据归档 |
| adapter-service | 后端系统适配 |
| audit-service | 审计日志 |
---
### 10.2 推荐技术栈
可选方案:
#### 前端
- React / Vue
- Ant Design / Element Plus
- 企业微信 / 钉钉 H5 SDK
#### 后端
- Java Spring Boot
- Python FastAPI
- Node.js NestJS
#### 数据库
- PostgreSQL / MySQL
- Redis
- MinIO / OSS 文件存储
- Elasticsearch / OpenSearch可选用于检索
#### AI / Agent
- Agent Orchestrator 自研
- LangGraph / CrewAI / AutoGen / 自定义 Workflow可选
- 大模型 API
- OCR API
- 向量数据库,可选
#### 规则引擎
- JSON Rule Engine
- Drools
- 自研轻量规则引擎
---
## 11. 权限与安全
### 11.1 权限角色
| 角色 | 权限 |
|---|---|
| 员工 | 创建报销、上传材料、查看自己的任务 |
| 财务审核人员 | 查看待审核报销、查看预审结果、处理风险 |
| 制度管理员 | 维护制度、规则、费用标准 |
| 系统管理员 | 管理组织、用户、接口配置 |
| 审计人员 | 查看日志和证据链 |
---
### 11.2 安全要求
- 文件上传需做病毒扫描。
- 发票、身份证、银行卡等敏感信息需脱敏展示。
- 所有 Agent 操作需记录日志。
- 所有规则版本需保留历史。
- 所有用户确认动作需留痕。
- 后端接口需有签名、鉴权和重放保护。
- 不允许 Agent 绕过人工确认直接提交高风险单据。
---
## 12. 审计与可解释性
### 12.1 必须留痕的动作
- 用户上传文件
- OCR 识别结果
- Agent 调用记录
- 规则命中记录
- 用户补件记录
- 用户确认记录
- 后端同步请求
- 后端同步响应
- 审核人处理记录
---
### 12.2 解释输出模板
风险解释建议采用统一格式:
```text
问题类型:住宿费超标
命中规则TRAVEL_HOTEL_LIMIT
制度依据:差旅报销制度-住宿标准
问题说明:当前住宿费为 680 元/晚,超过该城市标准 500 元/晚。
建议处理:请补充超标说明,或发起特殊审批。
风险等级:中风险
```
---
## 13. MVP 版本规划
### 13.1 MVP 目标
用最小范围跑通“上传材料 → 识别 → 草稿 → 预审 → 补件 → 确认 → 同步”的完整闭环。
---
### 13.2 MVP 功能范围
#### 必做
- 用户创建报销任务
- 上传票据 / 附件
- OCR 识别
- 自动生成报销草稿
- 费用类型识别
- 基础规则预审
- 风险与缺件提示
- 用户补件
- 用户确认提交
- 影子报销账本
- 审计日志
- 模拟后端同步
#### 可延后
- 多企业多租户
- 复杂审批流
- 深度 ERP 接口
- 发票实时验真
- 预算强控制
- 移动端完整体验
- 多语言
- 行业模板市场
---
### 13.3 MVP 优先支持的报销类型
建议优先支持:
> 差旅报销
原因:
- 票据类型丰富
- 规则典型
- 缺件场景多
- 价值容易演示
- 客户容易理解
优先支持票据:
- 增值税发票
- 火车票
- 机票行程单
- 酒店流水
- 打车票据
- 支付截图
---
## 14. 里程碑计划
### 阶段 1原型验证
目标:
- 完成核心流程 Demo
- 完成影子账本基础表
- 完成 OCR 接入
- 完成 5 条基础规则
输出:
- Web Demo
- 报销任务流
- 草稿生成页面
- 预审结果页面
---
### 阶段 2MVP 可用版本
目标:
- 完整跑通差旅报销
- 支持多轮补件
- 支持规则命中留痕
- 支持模拟后端同步
输出:
- MVP 系统
- 规则配置后台
- 审计日志
- 财务审核辅助页
---
### 阶段 3试点企业接入
目标:
- 接入一家试点企业
- 对接其 OA / 费控 / ERP 中至少一个系统
- 根据真实制度配置规则
- 验证打回率降低效果
输出:
- 试点报告
- 规则模板
- 接口适配经验
- ROI 数据
---
### 阶段 4产品化
目标:
- 多企业配置
- 多制度模板
- 多后端适配器
- 管理后台完善
- 权限与安全完善
输出:
- 标准产品版本
- 部署手册
- 运维手册
- 行业模板
---
## 15. 关键指标
### 15.1 业务指标
| 指标 | 说明 |
|---|---|
| 自动草稿生成率 | 上传材料后成功生成草稿的比例 |
| 预审命中率 | 规则识别出问题的比例 |
| 打回率降低 | 接入前后报销打回率变化 |
| 平均填单时间 | 员工完成报销所需时间 |
| 平均审核时间 | 财务审核单据所需时间 |
| 补件一次完成率 | 用户一次补齐材料的比例 |
---
### 15.2 技术指标
| 指标 | 说明 |
|---|---|
| OCR 准确率 | 关键字段识别准确率 |
| 规则执行耗时 | 单次预审耗时 |
| Agent 成功完成率 | Agent 完整跑完流程的比例 |
| 后端同步成功率 | 同步 OA / ERP / 费控成功率 |
| 系统响应时间 | 主要接口响应时延 |
| 任务异常率 | Agent 流程失败比例 |
---
## 16. 风险与应对
### 16.1 规则不准确
风险:
- 制度复杂,规则配置错误会导致误判。
应对:
- 规则上线前必须人工确认。
- 规则命中要显示依据。
- 高风险结果只建议,不自动阻断。
---
### 16.2 OCR 识别错误
风险:
- 票据字段识别不准,导致草稿错误。
应对:
- 关键字段允许人工修改。
- 低置信度字段高亮提示。
- 原图与识别结果并排展示。
---
### 16.3 后端系统难对接
风险:
- 企业 ERP / OA 接口不统一。
应对:
- 先做模拟同步。
- 后端适配器标准化。
- 支持 API 与 RPA 两种方式。
---
### 16.4 AI 幻觉
风险:
- Agent 可能生成不符合制度的解释。
应对:
- 所有解释必须基于规则命中和制度片段。
- 没有依据时必须显示“未找到明确制度依据”。
- 高风险判断进入人工审核。
---
### 16.5 客户担心替换原系统
风险:
- 客户认为系统会冲击现有 ERP / 费控系统。
应对:
- 明确定位为“前台 AI 操作层”。
- 正式审批、入账、归档仍在后端系统完成。
- 强调不替换原系统。
---
## 17. 后续扩展方向
本期只做报销,后续可扩展到:
1. 付款申请
2. 采购申请
3. 合同付款
4. 供应商对账
5. 发票入账
6. 预算执行分析
7. 财务共享审核 Agent
长期目标:
> 构建企业财务运营 Agent Layer。
---
## 18. 附录:推荐目录结构
```text
ai-reimbursement-agent/
├── frontend/
│ ├── pages/
│ ├── components/
│ └── services/
├── backend/
│ ├── task-service/
│ ├── document-service/
│ ├── agent-service/
│ ├── rule-service/
│ ├── ledger-service/
│ ├── evidence-service/
│ ├── adapter-service/
│ └── audit-service/
├── database/
│ ├── migrations/
│ └── seed/
├── docs/
│ ├── api.md
│ ├── rules.md
│ ├── data-model.md
│ └── deployment.md
└── README.md
```
---
## 19. 附录:最小开发任务拆分
### 后端任务
- [ ] 创建报销任务接口
- [ ] 上传附件接口
- [ ] OCR 调用封装
- [ ] 影子报销账本表
- [ ] 报销明细表
- [ ] 规则引擎基础能力
- [ ] 规则命中记录
- [ ] 补件请求接口
- [ ] 后端同步模拟接口
- [ ] 审计日志
### 前端任务
- [ ] 报销入口页
- [ ] 上传附件组件
- [ ] 报销草稿页
- [ ] 预审结果页
- [ ] 补件交互页
- [ ] 提交确认页
- [ ] 财务审核辅助页
### Agent 任务
- [ ] 受理 Agent
- [ ] 单据解析 Agent
- [ ] 规则校验 Agent
- [ ] 解释与补件 Agent
- [ ] 同步执行 Agent
- [ ] Orchestrator 状态机
### 规则任务
- [ ] 必填字段规则
- [ ] 缺附件规则
- [ ] 重复发票规则
- [ ] 金额超标规则
- [ ] 日期异常规则
- [ ] 费用类型匹配规则
---
## 20. 总结
本系统的核心不是重新做一套报销系统,也不是替换 ERP而是在企业现有系统之上构建一个以 Agent 为核心的 AI 报销操作层。
它的关键价值在于:
- 员工只面对简单前台。
- Agent 负责理解、编排和补件。
- 影子报销账本沉淀业务事实。
- Policy & Evidence 层保证判断可解释、证据可追溯。
- 后端 OA / ERP / 费控系统继续负责正式审批、入账和归档。
一句话总结:
> **前台体验在 AI 报销操作层,正式账务仍在 ERP所有业务流程围绕 Agent 层展开。**