# 字段抽取范围确认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. 待复核文档会降低抽取可信度。