refactor(service): 调整接口泛型参数并优化缓存策略

docs(task): 更新接口泛型修改相关文档

- 重构QueryService接口,移除未使用的Specification相关方法
- InventoryCatalogService实现IEntityService和QueryService接口
- 新增delete方法实现并调整缓存配置
- 删除过时的任务文档并重新组织文档结构
- 更新ALIGNMENT、CONSENSUS等文档,添加WebSocket服务兼容性说明
This commit is contained in:
2025-09-28 19:11:53 +08:00
parent b03b5385a5
commit 1f354853b0
9 changed files with 322 additions and 83 deletions

View File

@@ -0,0 +1,165 @@
# IEntityService接口泛型修改任务待办事项
## 1. 代码实现阶段待办
### 1.1 缓存策略设计
- [ ] 设计缓存对象转换机制在缓存写入前将实体对象转换为VO对象
- [ ] 确保所有VO类都实现Serializable接口
- [ ] 验证VO对象的序列化安全性避免引用不可序列化对象
- [ ] 设计Redis缓存键命名规范考虑使用命名空间或前缀
- [ ] 实现Redis连接失败时的降级策略
### 1.2 试点Service类修改
- [ ] 选择一个典型的Service类如CompanyCustomerFileTypeService进行试点修改
- [ ] Service类继承IEntityService接口泛型类型保持为Model实体类
- [ ] Service类继承QueryService接口泛型类型修改为Vo视图对象
- [ ] 逐一修改实现的接口方法,添加数据转换逻辑
- [ ] 验证修改后的代码能够编译通过
- [ ] 编写单元测试验证功能正确性
### 1.2 批量Service类修改
- [ ] 制定批量修改计划,按照模块或功能分组
- [ ] 逐一修改每个注解了@CacheConfig的Service类
- [ ] Service类继承IEntityService接口泛型类型保持为Model实体类
- [ ] Service类继承QueryService接口泛型类型修改为Vo视图对象
- [ ] 应用统一的数据转换机制
- [ ] 记录修改过程中的问题和解决方法
- [ ] 执行编译检查确保所有修改正确
## 2. 数据转换相关待办
### 2.1 转换逻辑实现
- [ ] 设计并实现实体类到VO类的转换方法
- [ ] 设计并实现VO类到实体类的转换方法
- [ ] 考虑添加通用的转换工具类
- [ ] 处理空值和异常情况
### 2.2 Specification处理
- [ ] 研究如何处理getSpecification方法的泛型修改
- [ ] 确定是否需要保留基于实体类的Specification实现
- [ ] 设计可能的解决方案,如创建适配器或转换层
## 3. 依赖组件分析和修改
### 3.1 依赖分析
- [ ] 搜索所有调用修改后Service类的组件Controller、其他Service等
- [ ] 分析这些组件如何使用Service类的方法
- [ ] 识别需要修改的依赖组件
- [ ] 特别关注WebSocket服务组件WebSocketServerCallbackManager、WebSocketServerTaskManager
- [ ] 分析WebSocket服务如何通过反射调用IEntityService接口的方法
- [ ] 识别WebSocket服务中依赖IEntityService泛型参数的方法
### 3.2 依赖修改
- [ ] 修改受影响的Controller类
- [ ] 修改受影响的其他Service类
- [ ] 验证依赖修改的正确性
- [ ] 处理可能的级联依赖问题
- [ ] 修改WebSocketServerCallbackManager类
- [ ] 更新createNewEntity、findEntityTypeInInterfaces等依赖泛型参数的方法
- [ ] 调整invokerFindByIdMethod、invokerFindAllMethod等反射调用方法
- [ ] 确保能够正确处理VO类型的返回值
- [ ] 修改WebSocketServerTaskManager类
- [ ] 确保任务执行流程能够适应IEntityService接口的泛型变化
- [ ] 调整任务处理逻辑确保能够正确处理VO类型的数据
- [ ] 添加类型安全检查,防止类型转换错误
- [ ] 验证WebSocket服务组件修改的正确性
## 4. 测试和验证待办
### 4.1 测试用例编写
- [ ] 为每个修改后的Service类编写单元测试
- [ ] 编写集成测试验证Service类与其他组件的交互
- [ ] 测试数据转换的正确性和性能
- [ ] 编写缓存功能专项测试用例
- 验证Redis中只存储VO对象不存储实体对象
- 测试VO对象的序列化和反序列化正确性
- 测试Redis连接失败时的降级功能
- 测试缓存清理后的系统运行状态
- [ ] 编写WebSocket服务专项测试用例
- 测试WebSocketServerCallbackManager的类型处理逻辑
- 验证createNewEntity、invokerFindByIdMethod等方法能够正确处理VO类型
- 测试WebSocketServerTaskManager的任务执行流程
- 验证WebSocket服务的整体功能
### 4.2 测试执行和问题修复
### 4.2 测试执行和问题修复
- [ ] 执行所有测试用例
- [ ] 分析测试结果,记录发现的问题
- [ ] 修复测试中发现的问题
- [ ] 重新执行测试,确保所有问题都已解决
## 5. 配置和部署相关待办
### 5.1 Redis缓存清理
- [ ] 制定Redis缓存清理计划
- [ ] 编写脚本查找并删除所有旧的实体类缓存
- [ ] 确保在新代码部署前完成缓存清理
- [ ] 验证清理效果,确保没有旧缓存残留
### 5.2 缓存配置检查
- [ ] 验证缓存配置在修改后仍然有效
- [ ] 检查缓存键表达式是否需要调整
- [ ] 测试缓存的读写和失效机制确保只使用VO对象
### 5.2 部署准备
- [ ] 准备部署文档,说明修改内容和注意事项
- [ ] 考虑分阶段部署策略,降低风险
- [ ] 准备回滚方案,以防出现严重问题
## 6. 文档更新待办
### 6.1 代码文档更新
- [ ] 为修改后的Service类添加JavaDoc注释
- [ ] 更新相关接口和类的文档
- [ ] 确保文档与代码的一致性
### 6.2 项目文档更新
- [ ] 更新ACCEPTANCE文档记录测试结果和完成情况
- [ ] 更新FINAL文档添加实际执行结果
- [ ] 归档所有任务文档
## 7. 其他待办事项
### 7.1 缓存管理机制建立
- [ ] 建立缓存键命名规范文档
- [ ] 定义缓存过期策略
- [ ] 设置Redis监控措施定期检查缓存状态
- [ ] 建立缓存清理和刷新的标准流程
### 7.2 性能优化
- [ ] 分析数据转换可能带来的性能影响
- [ ] 考虑添加转换结果缓存或其他优化手段
- [ ] 进行性能测试,确保修改不会导致性能退化
### 7.2 知识分享
- [ ] 组织团队成员进行知识分享,介绍修改内容和技术方案
- [ ] 记录经验教训,为后续类似任务提供参考
- [ ] 考虑是否需要更新项目开发规范
## 8. 支持需求
以下是在实施过程中可能需要的支持:
### 8.1 技术支持
- [ ] 数据转换框架选择和实现建议
- [ ] Specification泛型修改的最佳实践
- [ ] 缓存配置优化建议
- [ ] Redis缓存管理和序列化最佳实践
- [ ] 分布式缓存问题排查和解决支持
### 8.2 资源支持
- [ ] 代码审查资源
- [ ] 测试环境和测试数据准备
- [ ] 部署和监控资源
### 8.3 其他支持
- [ ] 与相关团队的协调和沟通
- [ ] 变更管理和审批流程支持
- [ ] 风险评估和缓解策略建议
---
**更新记录**:
- 创建日期: -
- 更新日期: -
- 更新内容: -