# 字段标准化Skill 设计

## 1. Skill 定位

`字段标准化Skill` 负责对字段候选值进行清洗、标准化、置信度计算和冲突候选标记。

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

## 2. 输入

```python
@dataclass
class FieldNormalizeInput:
    candidates: list[FieldCandidate]
    field_definitions: list[FieldDefinition]
    source_priority: dict
```

## 3. 输出

```python
@dataclass
class FieldNormalizeOutput:
    normalized_candidates: list[NormalizedFieldCandidate]
    conflict_candidates: list[dict]
    manual_review_candidates: list[dict]
```

## 4. 标准化规则

1. 去除首尾空白。
2. 合并连续空白。
3. 全角半角标准化。
4. 中文标点标准化。
5. 日期格式标准化。
6. 单位格式标准化。
7. 空值和异常长值标记待复核。

## 5. 核心方法

### 5.1 `run(input) -> FieldNormalizeOutput`

主入口方法。

### 5.2 `normalize_text_value(value) -> str`

文本清洗。

### 5.3 `normalize_date_value(value) -> str`

日期标准化。

### 5.4 `calculate_confidence(candidate, field_definition) -> str`

计算置信度。

### 5.5 `detect_conflict_candidates(candidates) -> list[dict]`

检测同字段多候选值差异。

## 6. 技术实现

使用技术：

1. Python 字符串处理
2. 正则表达式
3. 日期解析
4. 字段类型规则

## 7. 异常处理

1. 值为空：标记待复核。
2. 值过长：标记待复核。
3. 日期无法解析：保留原值并标记低可信。
4. 多候选不一致：标记 `conflict_candidate`。

## 8. 测试要点

1. 空白和标点标准化正确。
2. 日期标准化正确。
3. 多候选冲突可识别。
4. 低可信候选进入待复核。

