docs(详细设计): 新增字段抽取与字段池设计
This commit is contained in:
114
docs/详细设计/skill/字段抽取编排Skill.md
Normal file
114
docs/详细设计/skill/字段抽取编排Skill.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# 字段抽取编排Skill 设计
|
||||
|
||||
## 1. Skill 定位
|
||||
|
||||
`字段抽取编排Skill` 是第三步工作流的总入口 Skill,负责组织字段抽取范围确认、字段 schema 加载、规则抽取、表格抽取、长文本归纳、字段标准化、统一字段池写入和报告生成。
|
||||
|
||||
英文实现标识建议使用 `FieldExtractionOrchestrateSkill`。
|
||||
|
||||
本 Skill 不直接完成每一种抽取细节,而是负责执行顺序和结果合并。
|
||||
|
||||
## 2. 输入
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class FieldExtractionOrchestrateInput:
|
||||
batch_id: int
|
||||
scenario_id: str = "registration_field_extraction"
|
||||
field_schema_id: str = "ivd_registration_fields_v1"
|
||||
selected_document_ids: list[int] = field(default_factory=list)
|
||||
target_field_keys: list[str] = field(default_factory=list)
|
||||
enable_llm_fallback: bool = True
|
||||
enable_rag_context: bool = True
|
||||
```
|
||||
|
||||
## 3. 输出
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class FieldExtractionOrchestrateOutput:
|
||||
report_type: str
|
||||
batch_id: int
|
||||
field_schema_id: str
|
||||
summary: dict
|
||||
field_pool_items: list[dict]
|
||||
manual_review_fields: list[dict]
|
||||
evidence_refs: list[dict]
|
||||
audit_id: int | None = None
|
||||
```
|
||||
|
||||
## 4. 依赖 Skill
|
||||
|
||||
1. `字段抽取范围确认Skill`
|
||||
2. `字段Schema加载Skill`
|
||||
3. `规则字段抽取Skill`
|
||||
4. `表格字段抽取Skill`
|
||||
5. `长文本字段归纳Skill`
|
||||
6. `字段标准化Skill`
|
||||
7. `统一字段池写入Skill`
|
||||
8. `字段抽取报告生成Skill`
|
||||
|
||||
## 5. 核心方法
|
||||
|
||||
### 5.1 `run(input) -> FieldExtractionOrchestrateOutput`
|
||||
|
||||
主入口方法。
|
||||
|
||||
执行顺序:
|
||||
|
||||
1. 加载执行上下文。
|
||||
2. 调用 `字段抽取范围确认Skill`。
|
||||
3. 调用 `字段Schema加载Skill`。
|
||||
4. 调用 `规则字段抽取Skill`。
|
||||
5. 调用 `表格字段抽取Skill`。
|
||||
6. 按需调用 `长文本字段归纳Skill`。
|
||||
7. 调用 `字段标准化Skill`。
|
||||
8. 调用 `统一字段池写入Skill`。
|
||||
9. 调用 `字段抽取报告生成Skill`。
|
||||
10. 写入审计记录。
|
||||
|
||||
### 5.2 `load_execution_context(input) -> FieldExtractionContext`
|
||||
|
||||
加载批次、文档、完整性检查报告和已有字段池状态。
|
||||
|
||||
### 5.3 `merge_field_candidates(*candidate_groups) -> list[FieldCandidate]`
|
||||
|
||||
合并规则抽取、表格抽取和长文本归纳结果。
|
||||
|
||||
### 5.4 `filter_target_fields(schema, target_field_keys) -> list[FieldDefinition]`
|
||||
|
||||
筛选本次需要抽取的字段。
|
||||
|
||||
## 6. 技术实现
|
||||
|
||||
使用技术:
|
||||
|
||||
1. Python dataclass 或 Pydantic
|
||||
2. Tool Registry
|
||||
3. LLM Provider
|
||||
4. Django 服务层
|
||||
5. Audit 服务
|
||||
|
||||
建议注册名:
|
||||
|
||||
```python
|
||||
tool_registry.register(
|
||||
name="field_extraction_orchestrate",
|
||||
handler=FieldExtractionOrchestrateSkill().run,
|
||||
)
|
||||
```
|
||||
|
||||
## 7. 异常处理
|
||||
|
||||
1. 无可抽取文档:返回业务提示。
|
||||
2. 字段 schema 不存在:任务失败并写审计。
|
||||
3. LLM 不可用:跳过 LLM,保留规则和表格结果。
|
||||
4. 所有抽取方式均失败:返回待人工复核报告。
|
||||
|
||||
## 8. 测试要点
|
||||
|
||||
1. 能按顺序调用依赖 Skill。
|
||||
2. LLM 关闭时仍可执行规则抽取。
|
||||
3. 无文档时返回清晰错误。
|
||||
4. 输出报告结构稳定。
|
||||
|
||||
Reference in New Issue
Block a user