日常报销和差旅报销都可以走通
This commit is contained in:
+37
-14
@@ -1,5 +1,5 @@
|
||||
---
|
||||
last_reviewed: 2026-06-09
|
||||
last_reviewed: 2026-06-11
|
||||
---
|
||||
|
||||
# src/web 模块设计说明
|
||||
@@ -29,18 +29,32 @@ src/web/
|
||||
|
||||
## 数据流
|
||||
|
||||
```
|
||||
用户上传文件 → 创建 session → 文件写入 uploads/<sid>/
|
||||
↓
|
||||
后台线程执行管道: extract_invoices() → enrich_with_llm() → save_csv()
|
||||
↓
|
||||
结果写入 session 目录: invoice_summary.csv / result.json / session.log
|
||||
↓
|
||||
前端 SSE 轮询 result.json 变化 → 显示完成状态
|
||||
↓
|
||||
前端加载 CSV 数据 → 可编辑表格展示 → 用户修改后保存
|
||||
↓
|
||||
用户点击提交 → run_financial_submit() → bot 自动填报财务系统
|
||||
```mermaid
|
||||
graph TD
|
||||
A[用户上传文件] --> B[创建 session]
|
||||
B --> C[文件写入 uploads/<sid>/]
|
||||
C --> D[后台线程执行管道]
|
||||
D --> E["extract_invoices()"]
|
||||
E --> F["enrich_with_llm()"]
|
||||
F --> G["save_csv()"]
|
||||
G --> H["结果写入 session 目录"]
|
||||
H --> I["invoice_summary.csv"]
|
||||
H --> J["invoice_groups.json"]
|
||||
H --> K["result.json"]
|
||||
H --> L["session.log"]
|
||||
E --> M{"判断报销类型"}
|
||||
M -->|差旅| N["extract_travel_info()"]
|
||||
M -->|普通| O["extract_normal_info()"]
|
||||
N --> P["travel_info.json"]
|
||||
O --> Q["normal_info.json"]
|
||||
K --> R["前端 SSE 轮询 → 显示完成状态"]
|
||||
R --> S["前端加载 CSV → 可编辑表格"]
|
||||
S --> T["用户修改后保存"]
|
||||
T --> U["用户点击提交"]
|
||||
U --> V["run_financial_submit()"]
|
||||
V --> W["bot 自动填报财务系统"]
|
||||
W --> X["差旅模式: travel_info.json → 填报差旅单 → 上传差旅附件"]
|
||||
W --> Y["普通模式: normal_info.json → 基本信息 → 录入明细 → 支付信息 → 上传附件"]
|
||||
```
|
||||
|
||||
## API 路由
|
||||
@@ -70,7 +84,16 @@ src/web/
|
||||
- **差旅发票**(高铁票/酒店住宿):不生成易耗品出库单,走差旅报销流程
|
||||
- **普通发票**:生成易耗品出库单(Word 文档),走普通报销流程
|
||||
|
||||
`classify_invoice_batch()` 根据发票内容自动分类,`_try_fill_consumable_doc()` 仅对普通发票生成出库单。
|
||||
`extract_invoices()` 在提取阶段完成分类,结果保存为 `invoice_groups.json`(包含 `travel_count`、`general_count`、`application_count`)。后续步骤(出库单生成、财务填报)统一从该文件读取分类结果,避免重复解析 CSV 和 JSON 字段。
|
||||
|
||||
### LLM 信息提取(2026-06-11)
|
||||
|
||||
发票提取和匹配完成后,根据类型分流调用 LLM 提取结构化报销信息:
|
||||
|
||||
- **差旅发票**:调用 `extract_travel_info()`,提取出差事由、地点、时间、交通/住宿明细、补助清单、支付方式、附件清单,缓存为 `travel_info.json`。
|
||||
- **普通发票**:调用 `extract_normal_info()`,提取报销说明、发票总数、总金额、支付方式、附件清单,缓存为 `normal_info.json`。
|
||||
|
||||
Bot 填报时优先使用 LLM 提取的信息(`travel_info`/`normal_info`),降级时从缓存加载原始发票数据。
|
||||
|
||||
### 移动端同步
|
||||
|
||||
|
||||
Reference in New Issue
Block a user