Files
contract-manager/docs/task/server模块service缓存调整为Vo对象/TASK_server模块service缓存调整为Vo对象.md
songqq 49413ad473 refactor(service): 统一Service缓存为VO对象并优化关联实体处理
重构Service类实现,将QueryService泛型参数调整为VO类型,确保缓存VO对象而非实体。优化关联实体处理逻辑,减少重复代码。修改findById方法返回VO对象,新增getById方法获取实体。更新相关调用点以适配新接口。

调整WebSocket处理、控制器及Service实现,确保数据类型一致性。完善文档记录重构过程及发现的问题。为后续优化提供基础架构支持。
2025-09-29 19:31:51 +08:00

414 lines
13 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.

# Server模块Service缓存调整为Vo对象拆分任务文档
## 1. 任务拆分列表
### 1.1 任务1: 分析现有Service类结构和依赖关系
**输入契约**:
- 项目代码库访问权限
- server模块中注解了@CacheConfig的Service类列表
- WebSocketServerHandler、WebSocketServerTaskManager、WebSocketServerCallbackManager代码
**输出契约**:
- 详细的Service类结构分析报告
- Service类之间的依赖关系图
- Service类与其他组件Controller、Repository、WebSocket服务等的依赖关系分析
**实现约束**:
- 使用搜索工具分析代码结构
- 记录每个Service类的IEntityService泛型参数(Model类型)和QueryService泛型参数(Vo类型)以及VoableService泛型参数
- 记录Service类中的特殊方法和缓存配置
- 特别关注WebSocketServerCallbackManager中与IEntityService接口的交互逻辑
**依赖关系**:
- 前置任务:无
- 后置任务任务2、任务3、任务4
### 1.2 任务2: 设计实体类和VO类之间的转换机制
**输入契约**:
- 实体类和VO类的结构定义
- 现有VoableService接口的实现方式
**输出契约**:
- 详细的数据转换方案
- 转换工具类或方法的设计
- 转换异常处理策略
**实现约束**:
- 充分利用现有的转换机制
- 确保转换的安全性和效率
- 考虑空值处理和数据验证
**依赖关系**:
- 前置任务任务1
- 后置任务任务4
### 1.3 任务3: 设计缓存策略
**输入契约**:
- Service类结构分析报告
- Redis配置信息
- 现有缓存键命名规则
**输出契约**:
- 使用VO替代实体类进行缓存的策略文档
- 缓存键设计方案
- 缓存序列化与反序列化机制
- 缓存失效策略
**实现约束**:
- 确保缓存键的唯一性和可读性
- 考虑缓存大小和性能优化
- 确保缓存与数据库数据一致性
**依赖关系**:
- 前置任务任务1
- 后置任务任务4
### 1.4 任务4: 修改单个Service类的泛型参数和方法实现
**输入契约**:
- 选定的Service类文件路径
- 转换机制设计文档
- 缓存策略设计方案
- 接口契约定义
**输出契约**:
- 修改后的Service类代码
- 针对该Service类的单元测试用例
- 修改验证报告
**实现约束**:
- Service类继承IEntityService接口泛型类型为Model实体类
- Service类继承QueryService接口泛型类型为Vo视图对象
- 严格按照接口契约修改方法签名
- 正确实现数据转换逻辑
- 确保缓存注解的正确性
- 应用新的缓存策略
**依赖关系**:
- 前置任务任务2、任务3
- 后置任务任务5、任务6
### 1.5 任务5: 批量修改所有注解了@CacheConfig的Service类
**输入契约**:
- 所有需要修改的Service类列表
- 单个Service类修改的成功案例
- 转换机制设计文档
- 缓存策略设计方案
**输出契约**:
- 所有修改后的Service类代码
- 批量修改执行报告
**实现约束**:
- Service类继承IEntityService接口泛型类型为Model实体类
- Service类继承QueryService接口泛型类型为Vo视图对象
- 确保每个Service类的修改一致性
- 记录修改过程中的问题和解决方法
- 验证修改后的代码编译通过
- 统一应用缓存策略
**依赖关系**:
- 前置任务任务4
- 后置任务任务6、任务7、任务8、任务10
### 1.6 任务6: 分析并处理受影响的依赖组件
**输入契约**:
- 修改后的Service类接口定义
- 系统依赖关系分析报告
- WebSocketServerHandler、WebSocketServerTaskManager、WebSocketServerCallbackManager代码
**输出契约**:
- 受影响组件列表
- 依赖组件修改方案
- 修改后的依赖组件代码
- WebSocket服务兼容性分析报告
**实现约束**:
- 尽量减少对其他组件的影响
- 确保依赖组件能够正确调用新的Service接口
- 特别关注WebSocket服务组件的兼容性处理
- 验证依赖修改的正确性
**依赖关系**:
- 前置任务任务5
- 后置任务任务9
### 1.7 任务7: 清理Redis缓存
**输入契约**:
- Redis连接信息
- 缓存键前缀或模式
**输出契约**:
- 缓存清理记录
- Redis缓存状态报告
**实现约束**:
- 安全清除相关缓存数据,避免误删
- 记录清理的缓存键数量
- 确保清理后不影响系统运行
**依赖关系**:
- 前置任务任务5
- 后置任务任务9
### 1.8 任务8: 编写测试用例并验证修改
**输入契约**:
- 修改后的所有Service类代码
- 项目测试框架配置
- 缓存策略设计方案
- 修改后的WebSocket服务组件
**输出契约**:
- 完整的单元测试和集成测试用例
- WebSocket服务测试用例
- 测试执行报告
- 问题修复记录
**实现约束**:
- 覆盖所有修改的Service类和方法
- 测试数据转换的正确性
- 测试缓存功能的正常运行
- 确保测试覆盖率达到合理水平
- 特别验证VO缓存的有效性
- 包含WebSocket服务的兼容性测试
**依赖关系**:
- 前置任务任务5、任务10
- 后置任务任务9
### 1.9 任务9: 更新相关文档并总结
**输入契约**:
- 所有任务的执行结果
- 项目文档规范
- 缓存清理记录
- WebSocket服务修改记录
**输出契约**:
- 更新后的项目文档
- 任务总结报告
- TODO列表如果有未完成的工作
**实现约束**:
- 确保文档与代码的一致性
- 提供清晰的修改说明和总结
- 记录接口泛型修改和缓存策略变更的相关信息
- 记录WebSocket服务相关的设计和实现说明
- 记录经验教训和改进建议
**依赖关系**:
- 前置任务任务6、任务7、任务8
- 后置任务:无
### 1.10 任务10: 分析并修改WebSocket服务组件
**输入契约**:
- WebSocketServerHandler、WebSocketServerTaskManager、WebSocketServerCallbackManager代码
- 任务5的修改结果
- 任务1的Service类结构分析报告
**输出契约**:
- WebSocket服务与IEntityService接口交互分析报告
- 潜在问题和风险清单
- 修改后的WebSocketServerCallbackManager代码
- WebSocket服务测试用例
**实现约束**:
- 重点分析WebSocketServerCallbackManager中的类型处理逻辑
- 特别关注createNewEntity、findEntityTypeInInterfaces、invokerFindByIdMethod、invokerFindAllMethod等依赖泛型参数的方法
- 确保WebSocket服务能够正确处理IEntityService<Model>到QueryService<Vo>的泛型关系
- 添加类型安全检查
- 遵循代码规范
**依赖关系**:
- 前置任务任务5
- 后置任务任务8
## 2. 任务依赖图
```mermaid
flowchart TD
subgraph 任务拆分
T1[任务1: 分析现有Service类结构]
T2[任务2: 设计转换机制]
T3[任务3: 设计缓存策略]
T4[任务4: 修改单个Service类]
T5[任务5: 批量修改Service类]
T6[任务6: 处理依赖组件]
T7[任务7: 清理Redis缓存]
T8[任务8: 编写测试用例]
T9[任务9: 更新文档并总结]
T10[任务10: 分析并修改WebSocket服务组件]
end
T1 --> T2
T1 --> T3
T2 --> T4
T3 --> T4
T4 --> T5
T5 --> T6
T5 --> T7
T5 --> T8
T5 --> T10
T10 --> T8
T6 --> T9
T7 --> T9
T8 --> T9
```
## 3. 子任务详细描述
### 3.1 任务1: 分析现有Service类结构和依赖关系
1. **执行步骤**:
- 使用搜索工具查找所有注解了@CacheConfig的Service类
- 分析每个Service类实现的接口和泛型参数
- 记录每个Service类中的缓存配置和方法实现
- 分析Service类与Repository、Controller等组件的依赖关系
2. **关键交付物**:
- Service类结构分析表
- Service依赖关系图
- 缓存配置分析报告
### 3.2 任务2: 设计实体类和VO类之间的转换机制
1. **执行步骤**:
- 分析实体类和VO类的结构差异
- 研究现有的VoableService接口的实现方式
- 设计实体类到VO类的转换方法
- 设计VO类到实体类的转换方法
- 设计转换异常处理策略
2. **关键交付物**:
- 数据转换方案文档
- 转换工具类设计
- 异常处理规范
### 3.3 任务3: 设计缓存策略
1. **执行步骤**:
- 分析现有缓存配置和使用方式
- 设计使用VO替代实体类的缓存键命名规则
- 确定缓存序列化与反序列化方案
- 制定缓存失效和更新策略
- 考虑缓存预热和批量加载机制
2. **关键交付物**:
- 缓存策略设计文档
- 缓存键命名规则
- 缓存序列化实现方案
### 3.4 任务4: 修改单个Service类的泛型参数和方法实现
1. **执行步骤**:
- 选择一个典型的Service类作为试点
- 确保IEntityService泛型参数为Model实体类
- 确保QueryService泛型参数为Vo视图对象
- 逐一修改实现的接口方法,添加数据转换逻辑
- 应用新的缓存策略和缓存键
- 验证修改后的代码能够编译通过
- 编写单元测试验证功能正确性
2. **关键交付物**:
- 修改后的Service类代码
- 单元测试用例
- 功能验证报告
### 3.5 任务5: 批量修改所有注解了@CacheConfig的Service类
1. **执行步骤**:
- 基于任务4的成功经验制定批量修改计划
- 逐一修改每个注解了@CacheConfig的Service类
- 确保每个Service类的IEntityService泛型参数为Model实体类
- 确保每个Service类的QueryService泛型参数为Vo视图对象
- 对每个Service类应用相同的转换机制和缓存策略
- 记录修改过程中的问题和解决方法
- 执行编译检查确保所有修改正确
2. **关键交付物**:
- 所有修改后的Service类代码
- 批量修改执行日志
- 编译验证报告
### 3.6 任务6: 分析并处理受影响的依赖组件
1. **执行步骤**:
- 使用搜索工具查找所有调用修改后Service类的组件
- 分析这些组件如何使用Service类的方法
- 根据需要修改这些组件,使其适应新的接口定义
- 验证修改后的组件能够正确与Service类交互
2. **关键交付物**:
- 受影响组件列表
- 修改后的组件代码
- 依赖验证报告
### 3.7 任务7: 清理Redis缓存
1. **执行步骤**:
- 确认需要清理的缓存键前缀或模式
- 编写Redis缓存清理脚本或工具
- 执行缓存清理操作
- 验证缓存清理结果
- 记录清理过程和结果
2. **关键交付物**:
- 缓存清理记录
- Redis缓存状态报告
### 3.8 任务8: 编写测试用例并验证修改
1. **执行步骤**:
- 为每个修改后的Service类编写单元测试
- 编写集成测试验证Service类与其他组件的交互
- 测试数据转换的正确性和性能
- 特别测试IEntityService<Model>和QueryService<Vo>的交互逻辑
- 特别测试缓存功能的正常运行包括Vo对象的缓存和读取
- 执行所有测试并分析结果
2. **关键交付物**:
- 完整的测试用例集
- 测试执行报告
- 问题修复记录
### 3.9 任务9: 更新相关文档并总结
1. **执行步骤**:
- 更新项目中的相关技术文档记录IEntityService<Model>和QueryService<Vo>的泛型关系以及缓存策略变更
- 编写任务总结报告
- 创建TODO列表记录未完成的工作或改进建议
- 归档所有任务文档
2. **关键交付物**:
- 更新后的项目文档包含IEntityService<Model>和QueryService<Vo>的泛型关系说明)
- 任务总结报告
- TODO列表
### 3.10 任务10: 分析并修改WebSocket服务组件
1. **执行步骤**:
- 分析WebSocketServerHandler、WebSocketServerTaskManager、WebSocketServerCallbackManager的代码
- 重点研究WebSocketServerCallbackManager中与IEntityService接口和QueryService接口交互的方法特别是createNewEntity、findEntityTypeInInterfaces等依赖泛型参数的方法
- 分析invokerFindByIdMethod、invokerFindAllMethod等方法的实现逻辑
- 识别可能受到IEntityService<Model>和QueryService<Vo>泛型关系影响的代码部分
- 设计WebSocket服务组件的修改方案
- 修改WebSocketServerCallbackManager中的类型处理逻辑使其适应IEntityService<Model>到QueryService<Vo>的泛型关系
- 添加类型安全检查确保能够正确处理Model和Vo类型
- 编写测试用例验证修改后的WebSocket服务组件
2. **关键交付物**:
- WebSocket服务与IEntityService<Model>和QueryService<Vo>接口交互分析报告
- 潜在问题和风险清单
- 修改后的WebSocketServerCallbackManager代码
- WebSocket服务测试用例
- 验证报告
通过以上任务拆分我们可以系统地完成IEntityService接口泛型的修改任务确保每个步骤都有明确的目标、交付物和依赖关系从而提高任务执行的效率和质量。