ai-business-write/技术文档/修复重复字段总结.md

100 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 修复重复字段总结
## 问题分析
通过分析 `f_polic_field` 表,发现存在以下重复问题:
### 1. 重复的字段编码 (filed_code)
发现 **2个重复的字段编码**
#### 问题1: `target_id_number` 重复
- **字段1**: ID=1764836032902356, name="被核查人员身份证号码(带括号)", 关联模板数=0
- **字段2**: ID=1764836032913357, name="被核查人员身份证号", 关联模板数=9
**处理方案**
- 保留字段2ID=1764836032913357因为它关联了9个模板
- 删除字段1ID=1764836032902356因为它没有关联任何模板
#### 问题2: `target_organization_and_position` 重复
- **字段1**: ID=1764656917367205, name="被核查人员单位及职务", 关联模板数=4
- **字段2**: ID=1764836032734251, name="被核查人单位及职务", 关联模板数=9
**处理方案**
- 保留字段2ID=1764836032734251因为它关联了9个模板
- 删除字段1ID=1764656917367205并将它的4个关联关系迁移到保留字段
## 修复操作
### 1. 迁移关联关系
- 将删除字段的模板关联关系迁移到保留字段
- 如果保留字段已经关联了某个模板,则跳过重复关联
### 2. 删除无效字段
- 删除重复字段在 `f_polic_file_field` 表中的所有关联关系
- 删除重复字段本身
### 3. 验证结果
- ✅ 所有 `filed_code` 现在都是唯一的74个字段74个唯一编码
- ✅ 所有字段名称现在都是唯一的74个字段74个唯一名称
- ✅ 所有更改已提交到数据库
## 修复后的状态
### 字段统计
- **总字段数**: 74
- **唯一字段编码数**: 74
- **唯一字段名称数**: 74
### 未关联模板的字段
发现 38 个未关联任何模板的输出字段,这些字段可能是:
- 预留字段,供将来使用
- 已废弃但未删除的字段
- 特殊用途字段
这些字段不影响系统功能,可以保留或根据业务需求决定是否删除。
## 相关表结构
### f_polic_field字段定义表
- `id`: 字段ID主键
- `tenant_id`: 租户ID
- `name`: 字段名称
- `filed_code`: 字段编码(**现在唯一**
- `field_type`: 字段类型1=输入字段2=输出字段)
- `state`: 状态0=未启用1=启用)
### f_polic_file_field文件和字段关联表
- `file_id`: 文件配置ID关联 f_polic_file_config.id
- `filed_id`: 字段ID关联 f_polic_field.id
### f_polic_file_config文件模板配置表
- `id`: 文件配置ID主键
- `name`: 文件名称
- `file_path`: MinIO文件路径
- `state`: 状态0=未启用1=启用)
## 修复脚本
使用的修复脚本:
- `analyze_duplicate_fields.py`: 分析重复字段
- `fix_duplicate_fields.py`: 修复重复字段
- `verify_field_uniqueness.py`: 验证修复结果
## 注意事项
1. **数据完整性**:修复过程中已确保所有模板关联关系都迁移到保留字段,不会丢失数据
2. **唯一性约束**:虽然数据库表结构中没有对 `filed_code` 设置唯一约束,但通过修复已确保数据唯一性
3. **建议**:可以考虑在数据库层面为 `filed_code` 添加唯一索引,防止将来再次出现重复
## 建议的数据库优化
```sql
-- 为 filed_code 添加唯一索引(建议执行)
ALTER TABLE f_polic_field
ADD UNIQUE INDEX idx_tenant_filed_code (tenant_id, filed_code);
```
这样可以确保在数据库层面防止重复的 `filed_code`