# LeAudit 文档域表结构设计 > **状态**: 已落地到 `leaudit_platform` 数据库(17 张表,全中文注释) > **设计基准**: `/home/wren-dev/Porject/leaudit/src/leaudit` 源码分析 ## 1. 设计依据 本设计基于对 `leaudit` 源码的完整分析,对齐其真实的处理管线、数据模型和产出物类型。 ### 1.1 LeAudit 处理管线(7 阶段) ```text 文件输入 → Stage 1: Normalize(解析 → OCR → 分类 → 案卷分段 → 印章增强 → markdown 渲染) → Stage 2: Rules Resolve(加载 RulesFile) → Stage 3: Extract(字段抽取 → hydrate → multi-entity → derived → grounding) → Stage 4: Detect Phase(draft / executed 判定) → Stage 5: Evaluate(规则引擎 → 16 种 check 类型 → pass/fail/skip) → Stage 6: Rescue(失败规则补救:review → agent → pass/fail 翻转) → Stage 7: Finalize → Persist ``` ### 1.2 LeAudit 自身存储模型(仅供参考,不做 leaudit-platform 真相源) LeAudit 有一套自己的 SQLAlchemy ORM 表(`storage/models/`)。**leaudit-platform 不使用 LeAudit 的这套存储**。bridge 层(`storage_adapter.py`)已经绕过它,直接将结果写入 leaudit-platform 的 `leaudit_*` 表。 --- ## 2. 设计原则 ### 2.1 完全独立于业务表 所有 LeAudit 域表统一 `leaudit_*` 前缀,与老 `docauditai` 的 `documents` / `evaluation_points` 等表完全隔离。 ### 2.2 数据库存索引,OSS 存真身 - OCR JSON、normalized JSON、markdown、页面图、裁切图 → OSS 文件 - 数据库只存元数据、状态、OSS 地址 ### 2.3 一次执行一个 Run 每次文档进入 LeAudit 处理链,生成一条 `leaudit_audit_runs` 记录。支持重跑、版本回放、模型对比。 ### 2.4 结果与产物解耦 - 结果表(rule_results / field_results)→ "这次跑出了什么" - 产物表(artifacts)→ "这次跑的过程中生成了哪些文件" --- ## 3. 完整表清单 | # | 表名 | 用途 | 状态 | |---|------|------|------| | 1 | `leaudit_documents` | LeAudit 平台内部文档主表 | ✅ 已创建 | | 2 | `leaudit_document_files` | 文档文件版本管理 | ✅ 已创建 | | 3 | `leaudit_audit_runs` | 每次处理执行的主索引记录 | ✅ 已创建 | | 4 | `leaudit_artifacts` | OCR/normalize/manifest/markdown/图片等文件产物索引 | ✅ 已创建 | | 5 | `leaudit_rule_results` | 规则级评查结果(逐条规则一行) | ✅ 已创建 | | 6 | `leaudit_field_results` | 字段级抽取结果 | ✅ 已创建 | | 7 | `leaudit_run_metrics` | 各阶段耗时与计数统计 | ✅ 已创建 | | 8 | `leaudit_run_errors` | 各阶段错误与诊断 | ✅ 已创建 | | 9 | `leaudit_rescue_outcomes` | Rescue 补救结果 | ✅ 已创建 | | 10 | `leaudit_rule_sets` | 规则集主表 | ✅ 已创建 | | 11 | `leaudit_rule_versions` | 规则版本表 | ✅ 已创建 | | 12 | `leaudit_rule_type_bindings` | 文档类型与规则集绑定 | ✅ 已创建 | | 13 | `jwt_tokens` | JWT 令牌管理 | ✅ 已创建 | | 14 | `leaudit_document_types` | 文档类型定义 | ✅ 已创建 | | 15 | `leaudit_entry_modules` | 入口模块/导航菜单 | ✅ 已创建 | | 16 | `leaudit_evaluation_point_groups` | 评查点规则组(PID 树形) | ✅ 已创建 | | 17 | `leaudit_evaluation_points` | 规则点/评查点元数据 | ✅ 已创建 | > 所有表均含 `create_time` / `update_time` / `delete_time` 三时间戳 + 中文列注释。 > 详细建表 SQL 见 `scripts/创建sql/schema_v2_add_evaluation_tables.sql`。 --- ## 4. 核心表结构(文档执行域) ### 4.1 `leaudit_documents` LeAudit 平台内部文档主表。当前不再依赖旧系统文档表。 | 字段 | 类型 | 说明 | | --- | --- | --- | | `id` | bigint PK | 主键,自增 | | `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` | | `create_time` / `update_time` / `delete_time` | timestamptz | 标准时间戳 | ### 4.2 `leaudit_document_files` 文档文件表。一份文档可以有多个物理文件版本。 | 字段 | 类型 | 说明 | | --- | --- | --- | | `id` | bigint PK | 主键 | | `document_id` | bigint FK | 关联 `leaudit_documents.id` | | `file_role` | varchar(64) | primary / attachment / scan / ocr_result | | `file_name` / `file_ext` / `mime_type` / `file_size` | — | 文件基本信息 | | `sha256` | varchar(64) | 文件 SHA256 | | `oss_url` | varchar(2048) | OSS 地址(真源) | | `local_path` | varchar(1024) | 本地临时路径 | | `is_active` | boolean | 当前生效文件 | | `created_by` | bigint | 上传者 | ### 4.3 `leaudit_audit_runs` 核心追踪表。每次进入 LeAudit 主链生成一条记录。 | 字段分类 | 字段 | 说明 | |---------|------|------| | **标识** | `id` / `document_id` / `document_file_id` / `run_no` | 主键 + 关联 + 序号 | | **触发** | `trigger_source` / `trigger_user_id` / `task_id` | 触发来源/人/Celery ID | | **状态** | `status` / `phase` | pending→running→completed/failed | | **规则溯源** | `rule_set_id` / `rule_version_id` / `rule_type_id` | 使用的规则版本 | | | `rule_source_oss_url` / `rule_source_sha256` / `rule_local_cache_path` | 规则文件定位 | | **模型快照** | `engine_version` / `llm_provider` / `llm_model` / `vlm_provider` / `vlm_model` / `ocr_provider` / `ocr_model` | 可追溯差异来源 | | **Rescue** | `rescue_mode` / `rescue_applied` | 补救配置与执行标记 | | **结果汇总** | `total_score` / `passed_count` / `failed_count` / `skipped_count` / `result_status` | 总量统计 | | **时间** | `started_at` / `finished_at` / `create_time` / `update_time` | 时间追踪 | ### 4.4 `leaudit_artifacts` 统一产物表。记录一次 run 过程中产生的所有文件型中间产物。 **artifact_type 枚举(20 种)**:`original_doc` / `normalized_doc` / `render_png` / `render_pdf` / `ocr_json` / `extract_json` / `evaluate_json` / `rescue_json` / `quality_report` / `diff_report` / `cross_review` / `merged_result` / `final_report` / `vlm_render` / `vlm_vis_page` / `vlm_vis_subdoc` / `vlm_vis_field` / `vlm_debug` / `rescue_debug` / `pipeline_log` ### 4.5 `leaudit_rule_results` 规则级结果表。对齐 LeAudit `EvaluationResult.rules` 的实际字段。 | 字段分类 | 关键字段 | 说明 | |---------|---------|------| | **归属** | `run_id` / `rule_version_id` / `document_id` | 三重定位 | | **规则标识** | `rule_id` / `rule_name` / `risk` / `score` | 规则基本信息 | | **结果** | `passed` / `status` / `skip_reason` / `confidence` | 判定结果 | | **消息** | `pass_message` / `fail_message` | 通过/失败文案 | | **细节** | `stages` (jsonb) / `extracted_fields` (jsonb) / `field_positions` (jsonb) / `rule_meta` (jsonb) | 结构化详情 | | **整改** | `remediation` (jsonb) / `rescue_applied` / `rescue_passed` | 补救信息 | | **兜底** | `result_payload` (jsonb) | 完整 RuleResult JSON 备份 | ### 4.6-4.9 辅助表 - **`leaudit_field_results`**: 字段级抽取结果(value_text / confidence / grounding_score / hard_failed 等) - **`leaudit_run_metrics`**: 各阶段耗时(ocr/normalize/extract/evaluate/rescue_seconds)+ 计数统计 - **`leaudit_run_errors`**: 各阶段错误(stage / level / error_code / message / detail_json) - **`leaudit_rescue_outcomes`**: Rescue 补救结果(diagnosis / final_status / llm_calls / vlm_calls) --- ## 5. 规则管理域表 详见 [DSL 规则域表结构设计](dsl_rule_schema_design.md)。 | 表 | 用途 | |----|------| | `leaudit_rule_sets` | 规则集主表(rule_type / rule_name / current_version_id) | | `leaudit_rule_versions` | 规则版本(oss_url / file_sha256 / metadata_* 快照) | | `leaudit_rule_type_bindings` | 文档类型 ↔ 规则集绑定(binding_mode / priority) | --- ## 6. 评查点管理域表 | 表 | 用途 | |----|------| | `leaudit_evaluation_point_groups` | 评查点规则组(PID 树形层级) | | `leaudit_evaluation_points` | 规则点/评查点(code / score / scoring_config / references_laws) | | `leaudit_document_types` | 文档类型定义(code / classification_keywords / extraction_mode) | | `leaudit_entry_modules` | 入口模块(name / path / areas / icon_path) | --- ## 7. 表关系图 ```text leaudit_entry_modules └── leaudit_document_types ├── leaudit_documents │ ├── leaudit_document_files │ └── leaudit_audit_runs │ ├── leaudit_artifacts (N) │ ├── leaudit_run_metrics (1) │ ├── leaudit_run_errors (N) │ ├── leaudit_rule_results (N) │ ├── leaudit_field_results (N) │ └── leaudit_rescue_outcomes (N) └── leaudit_rule_type_bindings └── leaudit_rule_sets ├── leaudit_rule_versions └── leaudit_evaluation_point_groups └── leaudit_evaluation_points ``` --- ## 8. OSS 路径约定 详见 [基础设施重设计](infrastructure_redesign.md) 第一节。 ```text # 业务文档 bdocs/{region}/{type_code}/{doc_id}/{version}/{file_role}.{ext} # 评查产物 artifacts/{region}/{run_id}/{artifact_type}/{detail}.{ext} ``` --- ## 9. 最终结论 - 所有表 `leaudit_*` 前缀,与老系统完全隔离 - `leaudit_documents` 现阶段是平台内部文档主表,不再要求外部 `documents.id` - `leaudit_audit_runs` 是每次处理的唯一追踪单位 - `leaudit_artifacts` 统一管理所有文件产物,数据库只存索引 - `leaudit_rule_results` 粒度到逐条规则,结构与 LeAudit `RuleResult` 对齐 - 数据库已全部建表完成,含中文注释和三时间戳