docs(详细设计): 新增字段抽取与字段池设计
This commit is contained in:
79
docs/详细设计/skill/字段抽取范围确认Skill.md
Normal file
79
docs/详细设计/skill/字段抽取范围确认Skill.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# 字段抽取范围确认Skill 设计
|
||||
|
||||
## 1. Skill 定位
|
||||
|
||||
`字段抽取范围确认Skill` 负责确定本次字段抽取使用哪些文档,以及每个目标字段优先从哪些文档角色中抽取。
|
||||
|
||||
英文实现标识建议使用 `FieldExtractionScopeResolveSkill`。
|
||||
|
||||
## 2. 输入
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class FieldExtractionScopeResolveInput:
|
||||
documents: list[DocumentFact]
|
||||
selected_document_ids: list[int]
|
||||
target_field_keys: list[str]
|
||||
field_source_priority: dict
|
||||
```
|
||||
|
||||
## 3. 输出
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class FieldExtractionScopeResolveOutput:
|
||||
extractable_documents: list[DocumentFact]
|
||||
excluded_documents: list[dict]
|
||||
field_document_plan: dict[str, list[DocumentFact]]
|
||||
warnings: list[dict]
|
||||
```
|
||||
|
||||
## 4. 文档筛选规则
|
||||
|
||||
参与抽取的文档必须满足:
|
||||
|
||||
1. `source_role = submission`
|
||||
2. 文档处理状态可用。
|
||||
3. 文档存在文本或表格结构。
|
||||
4. 文档角色属于字段来源配置。
|
||||
|
||||
排除:
|
||||
|
||||
1. 法规依据资料。
|
||||
2. 不支持文件。
|
||||
3. 解析失败且无可用文本。
|
||||
4. 用户未选择且不在默认来源范围内的文档。
|
||||
|
||||
## 5. 核心方法
|
||||
|
||||
### 5.1 `run(input) -> FieldExtractionScopeResolveOutput`
|
||||
|
||||
主入口方法。
|
||||
|
||||
### 5.2 `filter_extractable_documents(documents) -> list[DocumentFact]`
|
||||
|
||||
筛选可抽取文档。
|
||||
|
||||
### 5.3 `build_field_document_plan(fields, documents, priority) -> dict`
|
||||
|
||||
为每个字段构建候选文档顺序。
|
||||
|
||||
### 5.4 `collect_scope_warnings(documents) -> list[dict]`
|
||||
|
||||
收集待复核、解析失败、文本缺失等警告。
|
||||
|
||||
## 6. 技术实现
|
||||
|
||||
使用技术:
|
||||
|
||||
1. 文档角色枚举
|
||||
2. YAML 来源优先级
|
||||
3. Python 排序规则
|
||||
|
||||
## 7. 测试要点
|
||||
|
||||
1. 法规资料被排除。
|
||||
2. 申请表、说明书、产品列表被纳入。
|
||||
3. 用户选择文档时只使用选中范围。
|
||||
4. 待复核文档会降低抽取可信度。
|
||||
|
||||
Reference in New Issue
Block a user