4.8 KiB
4.8 KiB
文档类型与评查组关联 — 老项目分析 & 新方案
一、老项目模型(docauditai)
三层间接绑定
DocumentType → TopLevelGroup(s) → ChildGroups → EvaluationPoints
│ │ │ │
│ evaluation_ │ pid=0 │ pid={top} │ evaluation_
│ point_groups │ │ │ point_groups_id
│ _ids (JSONB) │ │ │
document_types.evaluation_point_groups_ids— JSONB 数组,存顶层组 ID,如[3]或[1,5]evaluation_point_groups— 两级树:pid=0是顶层组,"pid>0" 是子组evaluation_points— 属于子组,含extraction_config(提取规则)和evaluation_config(评查规则),按area+document_attribute_type过滤
运行时解析流程
doc_type_code
→ 查 document_types.evaluation_point_groups_ids[0]
→ 查 evaluation_point_groups WHERE pid = {top_group_id}
→ 查 evaluation_points WHERE evaluation_point_groups_id = {child_id}
→ 按 area + attribute_type 过滤
→ 返回最终评查点列表
二、新平台模型(leaudit-platform)
直接绑定
DocumentType ──→ RuleTypeBinding ──→ RuleSet ──→ RuleVersions
leaudit_rule_type_bindings:
| 字段 | 说明 |
|---|---|
doc_type_id |
FK → leaudit_document_types.id |
rule_set_id |
FK → leaudit_rule_sets.id |
binding_mode |
"explicit"(一对一)/ "inherit"(继承) |
region |
地区隔离 |
priority |
同一 doc_type 多个 rule_set 时的优先级 |
运行时(已在 auditServiceImpl.py 实现):
SELECT b.rule_set_id, rs.current_version_id
FROM leaudit_rule_type_bindings b
JOIN leaudit_rule_sets rs ON rs.id = b.rule_set_id
WHERE b.doc_type_id = :doc_type_id
AND b.region = :region
AND b.is_active = true
ORDER BY b.priority DESC
与老模型的关键差异
| 老 | 新 | |
|---|---|---|
| 绑定粒度 | 文档类型 → 顶层组(间接) | 文档类型 → 规则集(直接) |
| 评查点层级 | 三级(类型→组→子组→点) | 两级(类型→规则集→版本) |
| 地区隔离 | evaluation_points.area | rule_type_bindings.region |
| 规则版本 | 无版本概念 | 规则集 + 版本管理 |
实际上新模型更简洁:老系统里的"顶层组"≈新系统的"规则集",老系统里的"子组+评查点"≈新系统的"规则版本内容"。新系统去掉了中间的子组层级。
三、已落地 vs 待落地
✅ 已落地
| 项 | 说明 |
|---|---|
leaudit_document_types 表 |
有 20 条种子数据,含 code/name/entry_module_id/prompt_config |
leaudit_rule_sets 表 |
规则集 + 版本管理 |
leaudit_rule_type_bindings 表 |
20 条绑定记录,已全部配对 |
| 运行时绑定解析 | auditServiceImpl.Run() 中查 bindings → 找 rule_set + version |
GET /api/document-types |
刚加的,返回 id/name/code |
❌ 待落地
| 优先 | 项 | 说明 |
|---|---|---|
| 高 | 文档类型 CRUD 后端 | POST/PUT/DELETE /api/document-types |
| 高 | 规则绑定 CRUD 后端 | 在文档类型编辑中配 rule_set_id(s) |
| 高 | 前端文档类型管理页 | 对应旧 document-types._index.tsx |
| 中 | 规则绑定前端 UI | 文档类型编辑页中选规则集的控件 |
| 中 | 前端规则集选择器 | 对接 /api/rule-sets 或现有规则接口 |
| 低 | prompt_config 编辑 | 每个文档类型的提示词模板配置 |
四、推荐接入方案
第 1 步:文档类型 CRUD 后端
GET /api/document-types ← 已实现
POST /api/document-types ← 新增
PUT /api/document-types/{id} ← 新增
DELETE /api/document-types/{id} ← 新增
字段:code, name, description, entry_module_id, prompt_config, rule_set_ids(一次性处理绑定)
第 2 步:规则绑定 CRUD
两种方案:
- 方案 A(推荐):绑定内嵌到文档类型接口。创建/更新文档类型时传
rule_set_ids: [21, 31],后端自动维护leaudit_rule_type_bindings。 - 方案 B:独立绑定接口
POST/DELETE /api/rule-type-bindings。
推荐方案 A,因为绑定是文档类型的属性,一起管理更自然。
第 3 步:前端文档类型管理页
参考旧前端 document-types._index.tsx / document-types.new.tsx,用新 API 重写:
- 列表页:表格展示 code/name/entry_module/规则集数量
- 新建/编辑页:表单填 code/name/entry_module,多选规则集
第 4 步:上传页关联
上传时将 typeCode 写入 leaudit_documents.type_id → 运行时自动找绑定 → 加载规则集 → 执行评查。整个链路已通,只需确保文档类型数据存在。