docs(详细设计): 新增字段抽取与字段池设计
This commit is contained in:
75
docs/详细设计/skill/字段Schema加载Skill.md
Normal file
75
docs/详细设计/skill/字段Schema加载Skill.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# 字段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. 来源优先级输出正确。
|
||||
|
||||
Reference in New Issue
Block a user