1.9 KiB
1.9 KiB
统一字段池写入Skill 设计
1. Skill 定位
统一字段池写入Skill 负责将标准化后的字段候选写入统一字段池,并为每个字段选择推荐值、保留候选值和来源证据。
英文实现标识建议使用 UnifiedFieldPoolWriteSkill。
2. 输入
@dataclass
class UnifiedFieldPoolWriteInput:
batch_id: int
normalized_candidates: list[NormalizedFieldCandidate]
field_definitions: list[FieldDefinition]
source_priority: dict
3. 输出
@dataclass
class UnifiedFieldPoolWriteOutput:
field_pool_items: list[FieldPoolItem]
candidate_records: list[dict]
manual_review_fields: list[dict]
write_status: str
4. 推荐值选择规则
- 优先选择高置信候选。
- 同置信度时按来源优先级选择。
- 来源优先级一致时选择规则抽取结果。
- 多候选值明显不同则标记
conflict_candidate。 - 待人工复核字段不作为无条件回填值。
5. 核心方法
5.1 run(input) -> UnifiedFieldPoolWriteOutput
主入口方法。
5.2 group_candidates_by_field(candidates) -> dict
按 field_key 分组。
5.3 select_recommended_value(field_key, candidates, priority) -> FieldPoolItem
选择推荐值。
5.4 persist_field_pool_item(item) -> RegistrationFieldPoolItem
写入字段池。
5.5 persist_field_candidates(item, candidates) -> None
保留所有候选值。
6. 技术实现
使用技术:
- Django ORM
- JSONField
- 批量写入
- 唯一约束:
batch + field_key
7. 异常处理
- 没有候选值:写入空字段并标记待复核。
- 数据库写入失败:任务失败并写审计。
- 字段重复写入:更新字段池版本或覆盖当前批次结果。
- 候选冲突:保留候选并标记冲突候选。
8. 测试要点
- 高置信候选被选为推荐值。
- 来源优先级生效。
- 冲突候选被保留。
- 可回填字段标记正确。