docs: add fix-double-finalize-and-bindings-api implementation plan

This commit is contained in:
wren
2026-04-28 11:44:31 +08:00
parent 1b4e0ec00a
commit be9fc4856b
15 changed files with 5733 additions and 0 deletions
+153
View File
@@ -0,0 +1,153 @@
# LeAudit 处理逻辑说明
> 描述 leaudit 引擎的完整流水线阶段,新老项目通用。
## 1. 主链概览
`leaudit` 的完整处理链不是单一 OCR 流程,而是一条完整评查流水线:
```text
文件输入
→ normalize
→ rules resolve
→ extract
→ determine phase
→ evaluate
→ rescue
→ persist / adapt result
```
## 2. 各阶段说明
### 2.1 normalize
职责:
- 文档解析
- OCR 或文本提取
- 文档分类
- 案卷分段
- 印章/签名增强
- 统一形成归一化结果对象
产出:
- `normalized_doc`
- 原始文本
- 分类结果
- 视觉清单(VisualManifest
- 子文档结构
### 2.2 rules resolve
职责:
- 按输入文档类型或分类结果找到 DSL 规则文件
- 解析成 `RulesFile`
leaudit-platform 做法:
- 由 bridge 层显式完成规则映射(`rules_loader.py`
- 规则从 OSS 下载到本地临时文件后加载
- 支持 `leaudit_rule_type_bindings` 表查绑定 → `leaudit_rule_versions.oss_url` 下载
### 2.3 extract
职责:
- 按 schema 分组抽取字段
- 进行 null-field retry / deep retry
- hydrate 类型化
- multi-entity 展开
- derived 字段计算
- post-hoc grounding
- seal/signature 补充抽取
产出:
- 结构化字段
- 多实体字段
- derived 字段
- 抽取错误列表
### 2.4 determine phase
职责:
- 识别文档属于 `draft` 还是 `executed`
- 决定后续哪些规则参与执行
注意:
- `leaudit` 的策略是先用 `executed` 全量抽取,再反向判定 phase
- 接入时不要外层再强行重复做另一套 phase 判定逻辑
### 2.5 evaluate
职责:
- 执行 DSL rules
- 经过 phase filter、activate_if、confidence gate
- 逐条 rule 输出 pass/fail/skip
- 计算分数、失败原因、整改建议
产出:
- 文档级评查结果
- 规则级结果列表
### 2.6 rescue
职责:
- 对失败规则做补救判定
- 可能把失败翻转为通过
注意:
- rescue 后的最终聚合结果才是业务最终结果
- 落库时要认最终结果,不要混用 pre-rescue 和 post-rescue 状态
## 3. Bridge 层的输入要求
bridge 层(`fastapi_modules/fastapi_leaudit/leaudit_bridge/`)至少要准备:
- `document_id`
- 可读的本地文件路径
- 对应 `RulesFile`
- OCR/LLM/VLM 客户端
- 结果落库适配器(`storage_adapter.py`
## 4. Bridge 层的输出
统一整理出:
- 文档级总结果:`total_score` / `passed_count` / `failed_count` / `skipped_count` / `timing`
- 规则级结果:`rule_id` / `rule_name` / `passed` / `status` / `score` / `risk` / `message` / `remediation`
- 抽取结果:`extraction_fields` / `derived_fields` / `multi_entity`
## 5. 对接时的关键约束
### 文件路径
`leaudit` 许多逻辑默认依赖本地文件路径,因此 bridge 层必须保证:
- 文档能以本地文件形式供其读取
- 如果文件在对象存储中,需先下载到临时路径
### 配置统一
不要让 `leaudit` 在项目里形成另一套独立配置真相源。
由项目统一注入:
- OCR 配置(`app.toml``fastapi_admin.config.OCR_*`
- LLM 配置(`app.toml``fastapi_admin.config.LLM_*`
- VLM 配置(`app.toml``fastapi_admin.config.VLM_*`
- 并发控制配置
### 存储隔离
- `leaudit` 内部计算
- bridge 适配后写入 `leaudit_*` 统一结果表
- 不使用 leaudit 自己的默认 `documents/extractions/evaluations`