# Proposal: 增强中介黑名单字段并实现类型化模板导入 ## Change ID `enhance-intermediary-with-detailed-fields` ## Summary 增强中介黑名单功能,添加个人和机构类型的详细字段,实现类型化的模板下载和导入功能,并添加详情展示接口,根据中介类型展示不同的字段信息。 ## Motivation 目前中介黑名单功能存在以下问题: 1. 字段过于简单,只有基础的姓名/机构名称、证件号、中介类型、状态、备注 2. 无法区分个人和机构的不同信息需求 3. 只有一个通用的导入模板,无法满足不同类型的详细数据录入 4. 缺少详情展示接口,无法查看完整的个人或机构信息 业务需求: 1. 个人中介需要记录:人员类型、性别、证件类型、手机号码、微信号、联系地址、所在公司、职位、关联关系等详细信息 2. 机构中介需要记录:统一社会信用代码、主体类型、企业性质、行业分类、成立日期、注册地址、法定代表人、股东等详细信息 3. 需要分开的个人和机构导入模板,便于用户分别录入不同类型的数据 4. 需要详情接口展示完整的个人或机构信息 ## Scope 本提案实现以下功能: ### 包含的功能 - **1.1 数据库字段扩展** - 为个人类型添加详细字段(人员类型、性别、证件类型、手机号码、微信号等) - 为机构类型添加详细字段(统一社会信用代码、主体类型、企业性质、法定代表人、股东等) - 保持现有字段的向后兼容性 - **1.2 模板下载功能增强** - 个人中介模板下载(包含个人专属字段) - 机构中介模板下载(包含机构专属字段) - **1.3 导入功能增强** - 支持个人中介批量导入 - 支持机构中介批量导入 - 根据模板类型自动识别中介类型 - **1.4 详情展示接口** - 根据中介类型返回不同的字段信息 - 个人类型返回个人详细字段 - 机构类型返回机构详细字段 - **1.5 列表接口优化** - 保持列表接口简洁,只显示核心字段 - 支持按新增字段进行筛选 ### 明确排除 - 前端页面的修改(后续独立变更) - 数据迁移脚本(旧数据保持原样,新字段可为空) ## Proposed Design 详见 [design.md](./design.md) ## Alternatives Considered ### 选项1:分表存储(个人表和机构表分离) **优点**: - 字段分离清晰 - 查询性能可能更好(表更小) **缺点**: - 需要维护多个表和关联关系 - 列表查询需要联合查询 - 导入导出逻辑复杂化 - 不符合现有设计思路 **决定**:不采用。单表设计更简洁,通过中介类型区分即可满足需求。 ### 选项2:使用 JSON 字段存储扩展信息 **优点**: - 灵活性高,易于扩展 - 不需要修改表结构 **缺点**: - 不利于按扩展字段查询和筛选 - 不利于数据验证和约束 - 导入导出逻辑复杂 **决定**:不采用。使用独立的字段更有利于数据管理和查询。 ### 选项3:在现有基础上添加字段 **优点**: - 保持向后兼容 - 实现简单直接 **缺点**: - 表会有很多字段(约40+个) - 个人和机构字段混在一起 **决定**:采用。这是最直接的方案,通过业务逻辑区分使用哪些字段,数据库层面允许字段为空。 ## Impact ### 后端影响 - **数据库**:扩展 `ccdi_intermediary_blacklist` 表,添加约30个新字段 - **实体类**:`CcdiIntermediaryBlacklist` 添加新字段属性 - **DTO**:创建 `CcdiIntermediaryPersonAddDTO` 和 `CcdiIntermediaryEntityAddDTO` - **VO**:创建 `CcdiIntermediaryPersonDetailVO` 和 `CcdiIntermediaryEntityDetailVO` - **Excel**:创建 `CcdiIntermediaryPersonExcel` 和 `CcdiIntermediaryEntityExcel` - **Controller**:添加两个模板下载接口,修改详情接口 - **Service**:扩展导入逻辑,支持不同类型的模板 ### 前端影响 - API 接口变更:需要调用新的模板下载接口和详情接口 - 详情页面需要根据类型显示不同字段 ### 数据库影响 - 扩展现有表,添加新字段(默认允许 NULL,保持向后兼容) ## Dependencies - 依赖现有 `ccdi_intermediary_blacklist` 表和基础功能 - 依赖 EasyExcel 进行 Excel 导入导出 ## Related Changes - `add-intermediary-blacklist` - 基础中介黑名单功能 ## Open Questions 1. **旧数据处理**: - 现有数据如何处理? - 建议:保持不变,新字段为空,用户可后续编辑补充 2. **必填字段**: - 新增字段哪些设为必填? - 建议:除核心字段外,新字段都设为可选,便于分阶段完善数据 3. **详情接口设计**: - 是分开的两个接口还是一个接口根据类型返回不同 VO? - 建议:一个接口,根据中介类型返回不同的 VO 结构 ## Success Criteria - [ ] 数据库表扩展完成,添加个人和机构的详细字段 - [ ] 可以下载个人中介专用导入模板 - [ ] 可以下载机构中介专用导入模板 - [ ] 可以使用个人模板批量导入个人中介数据 - [ ] 可以使用机构模板批量导入机构中介数据 - [ ] 详情接口根据类型返回完整的字段信息 - [ ] 现有功能保持正常运行,向后兼容 ## References - [doc/中介人员信息表.csv](../../../doc/中介人员信息表.csv) - [doc/中介主体信息表.csv](../../../doc/中介主体信息表.csv) - [现有中介黑名单设计](../add-intermediary-blacklist/design.md)