feat: add document versioning and list API

This commit is contained in:
wren
2026-04-29 11:48:50 +08:00
parent f3b83c9979
commit b45d61fa97
14 changed files with 1693 additions and 92 deletions
+22 -2
View File
@@ -4,6 +4,10 @@
## 一、目标架构
补充文档:
- 并发与重试参数:`docs/leaudit/并发与重试参数说明.md`
```
┌─ API ───────────────────────────────────────────────────────────┐
│ AuditController (/audit) RuleController (/rule-sets) │
@@ -166,11 +170,11 @@ finalize_run() ← 唯一写 result_status / finished_at / rescue_
POST /upload (multipart/form-data)
file
typeId / typeCode
bizDocumentId?
region=default
fileRole=primary
createdBy?
autoRun=false
speed=normal|urgent
```
执行链:
@@ -178,7 +182,7 @@ POST /upload (multipart/form-data)
```text
Upload
-> DocumentServiceImpl.Upload()
-> upsert leaudit_documents
-> create leaudit_documents
-> 旧 active 文件失效
-> 上传原始文件到 OSS:
bdocs/{region}/{type_code}/{document_id}/v{n}/{file_role}.{ext}
@@ -186,6 +190,14 @@ Upload
-> autoRun=true 时直接调用 AuditServiceImpl.Run()
```
说明:
- `leaudit_documents` 现阶段是平台内部文档主表,不再依赖旧系统 `documents.id`
- 每次前端上传都会新建一条 `leaudit_documents`
- `speed`
- `normal` -> `leaudit.normal`
- `urgent` -> `leaudit.urgent`
## 四点六、最新补充:结果查询视图
当前 `GetRunStatus()` / `GetResult()` 已不再只返回 run 主表摘要。
@@ -204,6 +216,14 @@ Upload
- `leaudit_run_metrics`
- `leaudit_artifacts`
建议联调方式:
- 上传后从 `run.runId` 轮询 `GET /audit/run/{runId}`
- 完成后调用 `GET /audit/result/{runId}`
- worker 日志里会明确打印:
- 已投递到哪个队列
- worker 实际消费的是 `urgent` 还是 `normal`
## 四点七、关键关系图:DocumentType -> Binding -> RuleSet -> RuleVersion
这一段是当前规则执行链里最关键的一层路由关系。
+5 -4
View File
@@ -52,7 +52,7 @@ LeAudit 有一套自己的 SQLAlchemy ORM 表(`storage/models/`)。**leaudit
| # | 表名 | 用途 | 状态 |
|---|------|------|------|
| 1 | `leaudit_documents` | LeAudit 域文档镜像,关联业务文档 | ✅ 已创建 |
| 1 | `leaudit_documents` | LeAudit 平台内部文档主表 | ✅ 已创建 |
| 2 | `leaudit_document_files` | 文档文件版本管理 | ✅ 已创建 |
| 3 | `leaudit_audit_runs` | 每次处理执行的主索引记录 | ✅ 已创建 |
| 4 | `leaudit_artifacts` | OCR/normalize/manifest/markdown/图片等文件产物索引 | ✅ 已创建 |
@@ -79,12 +79,12 @@ LeAudit 有一套自己的 SQLAlchemy ORM 表(`storage/models/`)。**leaudit
### 4.1 `leaudit_documents`
LeAudit 域文档镜像表。通过 `biz_document_id` 关联老系统 `documents.id`
LeAudit 平台内部文档主表。当前不再依赖旧系统文档表
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `id` | bigint PK | 主键,自增 |
| `biz_document_id` | bigint UNIQUE | 关联老业务 `documents.id` |
| `biz_document_id` | bigint UNIQUE | 内部追踪号,沿用旧字段名以兼容历史库 |
| `type_id` | bigint | 文档类型 ID → `leaudit_document_types.id` |
| `processing_status` | varchar(64) | waiting / running / completed / failed |
| `current_run_id` | bigint | 最新有效 `leaudit_audit_runs.id` |
@@ -179,7 +179,7 @@ LeAudit 域文档镜像表。通过 `biz_document_id` 关联老系统 `documents
```text
leaudit_entry_modules
└── leaudit_document_types
├── leaudit_documents ── biz_document_id → 老系统 documents
├── leaudit_documents
│ ├── leaudit_document_files
│ └── leaudit_audit_runs
│ ├── leaudit_artifacts (N)
@@ -214,6 +214,7 @@ artifacts/{region}/{run_id}/{artifact_type}/{detail}.{ext}
## 9. 最终结论
- 所有表 `leaudit_*` 前缀,与老系统完全隔离
- `leaudit_documents` 现阶段是平台内部文档主表,不再要求外部 `documents.id`
- `leaudit_audit_runs` 是每次处理的唯一追踪单位
- `leaudit_artifacts` 统一管理所有文件产物,数据库只存索引
- `leaudit_rule_results` 粒度到逐条规则,结构与 LeAudit `RuleResult` 对齐