Files
ccdi/openspec/changes/enhance-intermediary-with-detailed-fields/tasks.md
2026-01-30 14:15:21 +08:00

359 lines
11 KiB
Markdown
Raw 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.
# Tasks: 增强中介黑名单字段并实现类型化模板导入
## 任务概述
本任务列表将指导完成中介黑名单功能的增强,包括添加个人和机构类型的详细字段、实现类型化的模板下载和导入功能,以及添加详情展示接口。
## 任务清单
### 阶段一:数据库扩展
#### 任务 1.1:生成数据库变更 SQL 脚本
- [ ] 编写 ALTER TABLE 语句添加个人类型字段11个字段
- [ ] 编写 ALTER TABLE 语句添加机构类型字段15个字段
- [ ] 编写 ALTER TABLE 语句添加通用字段1个字段data_source
- [ ] 添加必要的索引idx_credit_code, idx_phone_number
- [ ] 将 SQL 脚本保存到 `sql/` 目录,命名格式:`ccdi_intermediary_enhance_YYYYMMDD.sql`
**验证方式**SQL 语法检查,确保所有字段正确添加
**依赖**:无
---
#### 任务 1.2:执行数据库变更
- [ ] 在开发环境执行 SQL 脚本
- [ ] 验证表结构变更成功
- [ ] 确认所有字段添加成功且类型正确
- [ ] 确认索引创建成功
**验证方式**DESCRIBE ccdi_intermediary_blacklist; SHOW INDEX FROM ccdi_intermediary_blacklist;
**依赖**:任务 1.1
---
### 阶段二:后端实体类和 DTO/VO 更新
#### 任务 2.1:更新实体类 CcdiIntermediaryBlacklist
- [ ] 添加个人类型字段属性11个
- [ ] 添加机构类型字段属性15个
- [ ] 添加通用字段属性1个dataSource
- [ ] 保持现有字段不变,确保向后兼容
- [ ] 使用 Lombok @Data 注解
**验证方式**:编译通过,无语法错误
**依赖**:任务 1.2
---
#### 任务 2.2:创建个人中介 DTO
- [ ] 创建 `CcdiIntermediaryPersonAddDTO.java`
- [ ] 添加个人专属字段
- [ ] 添加适当的验证注解(@NotBlank, @Size 等)
- [ ] 实现 Serializable 接口
**验证方式**编译通过DTO 字段完整
**依赖**:任务 2.1
---
#### 任务 2.3:创建机构中介 DTO
- [ ] 创建 `CcdiIntermediaryEntityAddDTO.java`
- [ ] 添加机构专属字段
- [ ] 添加适当的验证注解
- [ ] 实现 Serializable 接口
**验证方式**编译通过DTO 字段完整
**依赖**:任务 2.1
---
#### 任务 2.4:创建个人详情 VO
- [ ] 创建 `CcdiIntermediaryPersonDetailVO.java`
- [ ] 包含核心字段 + 个人专属字段
- [ ] 添加关联字段名称(如 genderName, certificateTypeName
- [ ] 添加审计字段
- [ ] 使用 @JsonFormat 注解格式化日期
**验证方式**编译通过VO 字段完整
**依赖**:任务 2.2
---
#### 任务 2.5:创建机构详情 VO
- [ ] 创建 `CcdiIntermediaryEntityDetailVO.java`
- [ ] 包含核心字段 + 机构专属字段
- [ ] 添加关联字段名称
- [ ] 添加审计字段
- [ ] 使用 @JsonFormat 注解格式化日期
**验证方式**编译通过VO 字段完整
**依赖**:任务 2.3
---
### 阶段三Excel 类创建
#### 任务 3.1:创建个人中介 Excel 类
- [ ] 创建 `CcdiIntermediaryPersonExcel.java`
- [ ] 使用 @ExcelProperty 注解定义 Excel 列
- [ ] 使用 @ColumnWidth 注解设置列宽
- [ ] 字段顺序:姓名 -> 人员类型 -> ... -> 备注共14列
- [ ] **不在模板中显示**:状态、数据来源字段(由系统自动设置)
- [ ] **添加字典下拉框注解**
- `@DictDropdown(dictType = "ccdi_indiv_gender")` - 性别字段
- `@DictDropdown(dictType = "ccdi_certificate_type")` - 证件类型字段
**验证方式**编译通过Excel 注解正确
**依赖**:任务 2.2
---
#### 任务 3.2:创建机构中介 Excel 类
- [ ] 创建 `CcdiIntermediaryEntityExcel.java`
- [ ] 使用 @ExcelProperty 注解定义 Excel 列
- [ ] 使用 @ColumnWidth 注解设置列宽
- [ ] 字段顺序:机构名称 -> 统一社会信用代码 -> ... -> 备注共17列
- [ ] **不在模板中显示**:状态、数据来源字段(由系统自动设置)
- [ ] **添加字典下拉框注解**
- `@DictDropdown(dictType = "ccdi_entity_type")` - 主体类型字段
- `@DictDropdown(dictType = "ccdi_enterprise_nature")` - 企业性质字段
**验证方式**编译通过Excel 注解正确
**依赖**:任务 2.3
---
### 阶段四Service 层实现
#### 任务 4.1:扩展 Service 接口
- [ ]`ICcdiIntermediaryBlacklistService` 中添加新方法:
- `Object selectIntermediaryDetailById(Long intermediaryId)`
- `String importPersonIntermediary(List<CcdiIntermediaryPersonExcel> list, boolean isUpdateSupport)`
- `String importEntityIntermediary(List<CcdiIntermediaryEntityExcel> list, boolean isUpdateSupport)`
**验证方式**:编译通过,接口方法签名正确
**依赖**:任务 2.4, 2.5, 3.1, 3.2
---
#### 任务 4.2:实现详情查询方法
- [ ]`CcdiIntermediaryBlacklistServiceImpl` 中实现 `selectIntermediaryDetailById`
- [ ] 根据中介类型返回不同的 VO
- [ ] 个人类型返回 `CcdiIntermediaryPersonDetailVO`
- [ ] 机构类型返回 `CcdiIntermediaryEntityDetailVO`
- [ ] 填充关联字段名称(字典转换)
**验证方式**:单元测试验证不同类型返回正确的 VO
**依赖**:任务 4.1
---
#### 任务 4.3:实现个人中介导入方法
- [ ] 实现 `importPersonIntermediary` 方法
- [ ] 验证必填字段(姓名、证件号码、状态)
- [ ] 验证字段长度限制
- [ ] 设置中介类型为"1"(个人)
- [ ] 支持更新模式(通过证件号判断是否已存在)
- [ ] 返回导入结果统计
**验证方式**:单元测试验证导入逻辑和错误处理
**依赖**:任务 4.1
---
#### 任务 4.4:实现机构中介导入方法
- [ ] 实现 `importEntityIntermediary` 方法
- [ ] 验证必填字段(机构名称、状态)
- [ ] 验证字段长度限制
- [ ] 设置中介类型为"2"(机构)
- [ ] 支持更新模式(通过统一社会信用代码判断是否已存在)
- [ ] 返回导入结果统计
**验证方式**:单元测试验证导入逻辑和错误处理
**依赖**:任务 4.1
---
### 阶段五Controller 层实现
#### 任务 5.1:添加模板下载接口(支持字典下拉框)
- [ ] 添加 `POST /dpc/intermediary/importPersonTemplate` 接口
- [ ] 添加 `POST /dpc/intermediary/importEntityTemplate` 接口
- [ ] 使用 `EasyExcelUtil.importTemplateWithDictDropdown()` 生成模板
- [ ] 添加 @Operation 注解用于 Swagger 文档
- [ ] 不需要权限控制(模板下载公开)
**验证方式**
- 通过 Swagger UI 或 Postman 测试接口
- 下载模板后验证字典下拉框功能是否正常
- 验证下拉选项是否与字典数据一致
**依赖**:任务 3.1, 3.2, 6.1(确保字典数据已配置)
---
#### 任务 5.2:添加类型化导入接口
- [ ] 添加 `POST /dpc/intermediary/importPersonData` 接口
- [ ] 添加 `POST /dpc/intermediary/importEntityData` 接口
- [ ] 添加 updateSupport 参数支持更新模式
- [ ] 添加 @PreAuthorize 权限注解
- [ ] 添加 @Log 注解记录操作日志
- [ ] 添加 @Operation 注解用于 Swagger 文档
**验证方式**:通过 Swagger UI 或 Postman 测试接口
**依赖**:任务 4.3, 4.4
---
#### 任务 5.3:修改详情接口
- [ ] 修改 `GET /dpc/intermediary/{intermediaryId}` 接口
- [ ] 返回类型改为 Object根据实际类型返回不同 VO
- [ ] 调用新的 `selectIntermediaryDetailById` 方法
- [ ] 确保前端能够根据类型正确解析响应
**验证方式**:通过 Swagger UI 或 Postman 测试接口,验证不同类型返回不同结构
**依赖**:任务 4.2
---
### 阶段六:字典数据配置
#### 任务 6.1:创建字典数据 SQL 脚本
- [ ] 添加人员类型字典ccdi_person_type
- [ ] 添加人员子类型字典ccdi_person_sub_type
- [ ] **添加性别字典ccdi_indiv_gender** - 用于个人中介下拉框
- [ ] **添加证件类型字典ccdi_certificate_type** - 用于个人中介下拉框
- [ ] **添加主体类型字典ccdi_entity_type** - 用于机构中介下拉框
- [ ] **添加企业性质字典ccdi_enterprise_nature** - 用于机构中介下拉框
- [ ] 添加数据来源字典ccdi_data_source
- [ ] 将 SQL 脚本保存到 `sql/` 目录
**验证方式**SQL 语法检查
**依赖**:无
---
#### 任务 6.2:执行字典数据 SQL 并预热缓存
- [ ] 在开发环境执行字典数据 SQL
- [ ] 通过系统管理 > 字典管理验证字典数据
- [ ] **重要**:在每个字典类型页面点击"刷新缓存"按钮,确保字典数据加载到 Redis
- [ ] 验证字典缓存是否生效(可通过测试模板下载确认下拉框是否显示)
**验证方式**
- 在系统界面中查看字典数据
- 下载模板验证下拉框功能
- 检查 Redis 缓存中的字典数据(`sys_dict_cache:*`
**依赖**:任务 6.1
---
### 阶段七:测试
#### 任务 7.1:编写单元测试
- [ ] 测试详情查询方法(个人和机构)
- [ ] 测试个人中介导入方法
- [ ] 测试机构中介导入方法
- [ ] 测试数据验证逻辑
- [ ] 测试更新模式
**验证方式**:所有单元测试通过
**依赖**:任务 4.2, 4.3, 4.4
---
#### 任务 7.2:接口集成测试
- [ ] 测试模板下载接口(个人和机构)
- [ ] 测试数据导入接口(个人和机构)
- [ ] 测试详情查询接口
- [ ] 测试列表接口(确保不受影响)
- [ ] 测试现有新增/编辑接口(确保不受影响)
**验证方式**:生成测试脚本并执行,记录测试结果
**依赖**:任务 5.1, 5.2, 5.3
---
#### 任务 7.3:生成测试报告
- [ ] 生成可执行的测试脚本
- [ ] 执行测试并保存所有接口输出
- [ ] 生成测试用例报告Markdown 格式)
- [ ] 报告保存到 `doc/` 目录
**验证方式**:测试报告完整,所有测试用例通过
**依赖**:任务 7.2
---
### 阶段八:文档更新
#### 任务 8.1:更新 API 文档
- [ ] 更新 `doc/中介黑名单API文档.md`
- [ ] 添加新增接口的文档:
- 个人模板下载接口
- 机构模板下载接口
- 个人数据导入接口
- 机构数据导入接口
- 详情接口(说明返回类型变化)
- [ ] 更新数据模型说明
**验证方式**:文档与实际接口一致
**依赖**:任务 5.1, 5.2, 5.3
---
#### 任务 8.2:更新数据库设计文档
- [ ] 更新表结构说明
- [ ] 添加新字段说明
- [ ] 更新索引说明
**验证方式**:文档与实际表结构一致
**依赖**:任务 1.2
---
## 任务执行顺序建议
1. **第一周**:完成阶段一(数据库扩展)和阶段二(实体类和 DTO/VO
2. **第二周**完成阶段三Excel 类和阶段四Service 层)
3. **第三周**完成阶段五Controller 层)和阶段六(字典数据)
4. **第四周**:完成阶段七(测试)和阶段八(文档更新)
## 并行化建议
- 任务 2.2 和 2.3 可以并行开发
- 任务 2.4 和 2.5 可以并行开发
- 任务 3.1 和 3.2 可以并行开发
- 任务 4.3 和 4.4 可以并行开发
- 任务 5.1 和 5.2 可以并行开发
## 关键里程碑
1. **里程碑 1**:数据库扩展完成(任务 1.2
2. **里程碑 2**:后端实体类和 DTO/VO 完成(任务 2.5
3. **里程碑 3**Excel 类创建完成(任务 3.2
4. **里程碑 4**Service 层实现完成(任务 4.4
5. **里程碑 5**Controller 层实现完成(任务 5.3
6. **里程碑 6**:测试通过,文档更新完成(任务 8.2