# 字段Schema加载Skill 设计

## 1. Skill 定位

`字段Schema加载Skill` 负责加载注册申报字段 schema，提供字段定义、来源优先级、抽取方式、回填属性和一致性要求。

英文实现标识建议使用 `FieldSchemaLoadSkill`。

## 2. 输入

```python
@dataclass
class FieldSchemaLoadInput:
    field_schema_id: str
    target_field_keys: list[str] = field(default_factory=list)
```

## 3. 输出

```python
@dataclass
class FieldSchemaLoadOutput:
    field_schema_id: str
    version: str
    fields: list[FieldDefinition]
    source_priority: dict
    validation_warnings: list[dict]
```

## 4. 核心方法

### 4.1 `run(input) -> FieldSchemaLoadOutput`

主入口方法。

### 4.2 `load_schema_file(field_schema_id) -> dict`

从 YAML 读取字段 schema。

### 4.3 `validate_field_schema(raw_schema) -> FieldSchemaValidationResult`

校验字段定义。

### 4.4 `select_target_fields(schema, target_field_keys) -> list[FieldDefinition]`

筛选目标字段。

## 5. 技术实现

使用技术：

1. `PyYAML`
2. Pydantic
3. Django cache

建议路径：

```text
configs/registration/fields/ivd_registration_fields_v1.yaml
```

## 6. 异常处理

1. schema 文件不存在：任务失败。
2. 字段定义缺少 `field_key`：校验失败。
3. 目标字段不存在：返回业务错误。
4. 来源优先级缺失：允许执行，但记录警告。

## 7. 测试要点

1. schema 加载成功。
2. 目标字段筛选正确。
3. 缺少必填字段时报错。
4. 来源优先级输出正确。

