# 修复重复字段总结 ## 问题分析 通过分析 `f_polic_field` 表,发现存在以下重复问题: ### 1. 重复的字段编码 (filed_code) 发现 **2个重复的字段编码**: #### 问题1: `target_id_number` 重复 - **字段1**: ID=1764836032902356, name="被核查人员身份证号码(带括号)", 关联模板数=0 - **字段2**: ID=1764836032913357, name="被核查人员身份证号", 关联模板数=9 **处理方案**: - 保留字段2(ID=1764836032913357),因为它关联了9个模板 - 删除字段1(ID=1764836032902356),因为它没有关联任何模板 #### 问题2: `target_organization_and_position` 重复 - **字段1**: ID=1764656917367205, name="被核查人员单位及职务", 关联模板数=4 - **字段2**: ID=1764836032734251, name="被核查人单位及职务", 关联模板数=9 **处理方案**: - 保留字段2(ID=1764836032734251),因为它关联了9个模板 - 删除字段1(ID=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`。