# 字段抽取编排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. 输出报告结构稳定。