Files
contract-manager/docs/task/server模块service缓存调整为Vo对象/TASK_server模块service缓存调整为Vo对象.md
songqq c4eec0a9dd refactor(model): 重构模型类包结构并优化序列化处理
重构模型类包结构,将模型类按功能模块划分到不同的子包中。优化序列化处理,为VO类添加serialVersionUID并实现Serializable接口。移除部分冗余的serialVersionUID字段,简化模型类代码。同时修复UITools中空值处理的问题,并更新pom版本至0.0.100-SNAPSHOT。

- 将模型类按功能模块划分到ds子包中
- 为VO类添加序列化支持
- 移除冗余的serialVersionUID字段
- 修复UITools空值处理问题
- 更新项目版本号
2025-10-09 18:27:48 +08:00

402 lines
12 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.

# 6A工作流 - TASK阶段文档
## 任务名称Server模块Service缓存调整为Vo对象
## 1. 任务完成状态概述
**总体状态**: 进行中
| 任务ID | 任务名称 | 状态 | 负责人 | 备注 |
|--------|----------|------|--------|------|
| T1 | 分析Service类结构 | 已完成 | - | 已确定需要修改的Service类和接口 |
| T2 | 设计数据转换机制 | 已完成 | - | 已设计实体类与Vo类的转换方案 |
| T3 | 设计缓存策略 | 已完成 | - | 已确定缓存Vo对象的策略 |
| T4 | 修改CompanyFileTypeService类 | 已完成 | - | 已完成泛型调整和方法实现 |
| T5 | 批量修改其他Service类 | 进行中 | - | 需要按照CompanyFileTypeService模式修改其他Service类 |
| T6 | 处理WebSocket服务组件 | 未开始 | - | 需要分析并修改WebSocketServerHandler等类 |
| T7 | 清理Redis缓存 | 未开始 | - | 需要开发清理工具/脚本 |
| T8 | 编写测试用例 | 未开始 | - | 需要编写单元测试和集成测试 |
| T9 | 更新相关文档 | 进行中 | - | 正在按照6A工作流更新文档 |
| T10 | 分析并修改WebSocket服务组件 | 未开始 | - | 需分析WebSocketServerHandler等类的类型处理逻辑 |
## 2. 任务拆分列表
### T1: 分析Service类结构
**输入契约**:
- server模块源代码目录结构
- Service类文件
**输出契约**:
- 需要修改的Service类列表
- 每个Service类对应的实体类和Vo类
- 每个Service类实现的接口列表
**实现约束**:
- 仅分析注解了@CacheConfig的Service类
- 分析范围限定在server模块
**依赖关系**:
- 无前置依赖
- 后置任务: T2、T3
**详细描述**:
1. 查找server模块中所有注解了@CacheConfig的Service类
2. 分析每个Service类实现的接口及其泛型参数
3. 确定每个Service类对应的实体类和Vo类
4. 创建需要修改的Service类列表
### T2: 设计数据转换机制
**输入契约**:
- T1的分析结果
- 实体类和Vo类的定义
- 现有Voable接口和VoableService接口的定义
**输出契约**:
- 实体类实现Voable接口的方案
- Service类中实现数据转换的方法
**实现约束**:
- 遵循现有的代码规范和模式
- 确保转换过程不丢失数据
**依赖关系**:
- 前置任务: T1
- 后置任务: T3、T4
**详细描述**:
1. 设计实体类实现Voable接口的方案包括toVo方法的实现
2. 设计Service类中findById、findAll等方法的实现确保正确进行数据转换
3. 设计VoableService接口中updateByVo和createByVo方法的实现
### T3: 设计缓存策略
**输入契约**:
- T1的分析结果
- 现有缓存配置和注解
- 数据转换机制设计
**输出契约**:
- 缓存Vo对象的策略文档
- 缓存键表达式的调整方案
- 缓存注解的优化建议
**实现约束**:
- 确保缓存的是Vo对象而非实体类对象
- 保持缓存键表达式的有效性
- 避免缓存穿透、缓存雪崩等问题
**依赖关系**:
- 前置任务: T1、T2
- 后置任务: T4、T5
**详细描述**:
1. 分析现有缓存配置和注解
2. 设计缓存Vo对象的策略包括缓存注解的使用方式
3. 评估缓存键表达式是否需要调整
4. 提供缓存优化建议
### T4: 修改CompanyFileTypeService类
**输入契约**:
- T1、T2、T3的输出结果
- CompanyFileTypeService类源码
- CompanyFileType和CompanyFileTypeVo类源码
- CompanyFileTypeRepository接口
**输出契约**:
- 修改后的CompanyFileTypeService类源码
- 验证测试结果
**实现约束**:
- 按照设计文档修改接口泛型参数
- 实现所有必要的方法
- 确保缓存注解正确使用
- 遵循代码规范
**依赖关系**:
- 前置任务: T1、T2、T3
- 后置任务: T5、T9
**详细描述**:
1. 修改CompanyFileTypeService类实现的接口添加QueryService<CompanyFileTypeVo>和VoableService<CompanyFileType, CompanyFileTypeVo>
2. 实现findById、findAll等QueryService接口方法确保返回Vo对象
3. 确保findById方法标注@Cacheable注解
4. 实现VoableService接口的updateByVo和createByVo方法
5. 编写验证测试,确保修改后的方法正常工作
### T5: 批量修改其他Service类
**输入契约**:
- T1的分析结果
- T4的修改方案和验证结果
- 其他Service类源码
- 对应的实体类和Vo类源码
**输出契约**:
- 所有修改后的Service类源码
- 批量修改的执行报告
- 验证测试结果
**实现约束**:
- 按照CompanyFileTypeService的模式修改其他Service类
- 确保所有方法实现正确
- 遵循代码规范
- 逐个验证修改结果
**依赖关系**:
- 前置任务: T1、T4
- 后置任务: T7、T8、T9
**详细描述**:
1. 按照CompanyFileTypeService的模式批量修改其他Service类
2. 每个Service类修改完成后进行验证测试
3. 记录批量修改过程中的问题和解决方案
4. 生成批量修改执行报告
**待修改的Service类**:
- CompanyCustomerFileTypeService
- CompanyExtendInfoService
- CompanyFileTypeLocalService
- CompanyVendorFileTypeService
- CustomerInfoService
- CustomerTypeService
- EmployeeService
- ProjectCostService
- ProjectFileTypeService
- ProjectQuotationService
- ...其他注解了@CacheConfig的Service类
### T6: 处理WebSocket服务组件
**输入契约**:
- WebSocketServerCallbackManager类源码
- WebSocketServerHandler类源码
- WebSocketServerTaskManager类源码
- 其他WebSocket相关组件
**输出契约**:
- 修改后的WebSocket组件源码
- 验证测试结果
**实现约束**:
- 确保WebSocket服务能够适配新的接口定义
- 保持现有WebSocket功能正常
- 遵循代码规范
**依赖关系**:
- 前置任务: T5
- 后置任务: T8、T9
**详细描述**:
1. 分析WebSocketServerCallbackManager类中的类型处理逻辑
2. 分析createNewEntity、findEntityTypeInInterfaces等方法的实现
3. 修改相关方法确保能够正确处理Service类的新泛型参数
4. 验证修改后的WebSocket服务功能正常
### T7: 清理Redis缓存
**输入契约**:
- Redis缓存配置信息
- 现有缓存数据结构
**输出契约**:
- Redis缓存清理工具/脚本
- 缓存清理执行报告
- 验证结果
**实现约束**:
- 确保清理所有旧的实体类缓存数据
- 避免影响系统正常运行
- 记录清理过程和结果
**依赖关系**:
- 前置任务: T5
- 后置任务: T8、T9
**详细描述**:
1. 开发Redis缓存清理工具或脚本
2. 执行缓存清理操作,清除所有旧的实体类缓存数据
3. 验证缓存清理结果
4. 生成缓存清理执行报告
### T8: 编写测试用例
**输入契约**:
- 所有修改后的Service类源码
- WebSocket组件源码
- 设计文档
**输出契约**:
- 单元测试用例
- 集成测试用例
- 测试执行报告
**实现约束**:
- 覆盖所有修改的功能点
- 包含边界条件和异常情况测试
- 确保测试通过率达到100%
**依赖关系**:
- 前置任务: T5、T6、T7
- 后置任务: T9
**详细描述**:
1. 为每个修改后的Service类编写单元测试用例
2. 编写集成测试用例,验证不同组件之间的交互
3. 包含边界条件和异常情况的测试
4. 执行测试并生成测试执行报告
### T9: 更新相关文档
**输入契约**:
- 所有修改的代码
- 设计文档
- 测试报告
- 项目文档规范
**输出契约**:
- 更新后的项目文档
- 设计文档
- 用户手册(如需)
**实现约束**:
- 确保文档与代码的一致性
- 遵循项目文档规范
- 保持文档的清晰和准确性
**依赖关系**:
- 前置任务: T4、T5、T6、T7、T8
- 后置任务: T10
**详细描述**:
1. 更新项目架构文档反映Service类的修改
2. 更新接口文档,确保与实际实现一致
3. 更新用户手册(如需)
4. 确保所有文档的格式和内容符合项目规范
### T10: 分析并修改WebSocket服务组件
**输入契约**:
- WebSocketServerHandler类源码
- WebSocketServerTaskManager类源码
- 其他WebSocket相关组件
- Service类的修改方案
**输出契约**:
- 修改后的WebSocket组件源码
- 验证测试结果
**实现约束**:
- 确保WebSocket服务能够正确处理Vo对象
- 保持现有WebSocket功能正常
- 遵循代码规范
**依赖关系**:
- 前置任务: T9
- 后置任务: 无
**详细描述**:
1. 分析WebSocketServerHandler类中的类型处理逻辑
2. 分析WebSocketServerHandler类与IEntityService接口的泛型关系
3. 修改相关方法确保能够正确处理Vo对象的序列化和反序列化
4. 验证修改后的WebSocket服务功能正常
## 3. 任务依赖图
```mermaid
graph TD
T1[分析Service类结构] --> T2[设计数据转换机制]
T1 --> T3[设计缓存策略]
T2 --> T4[修改CompanyFileTypeService类]
T3 --> T4
T4 --> T5[批量修改其他Service类]
T5 --> T6[处理WebSocket服务组件]
T5 --> T7[清理Redis缓存]
T6 --> T8[编写测试用例]
T7 --> T8
T4 --> T9[更新相关文档]
T5 --> T9
T6 --> T9
T7 --> T9
T8 --> T9
T9 --> T10[分析并修改WebSocket服务组件]
```
## 4. 详细执行步骤
### T1: 分析Service类结构
1. 搜索server模块中所有注解了@CacheConfig的Service类
2. 对每个Service类分析其实现的接口和泛型参数
3. 确定每个Service类对应的实体类和Vo类
4. 创建需要修改的Service类列表
### T2: 设计数据转换机制
1. 设计实体类实现Voable接口的方案
2. 设计Service类中findById、findAll等方法的实现
3. 设计VoableService接口中updateByVo和createByVo方法的实现
### T3: 设计缓存策略
1. 分析现有缓存配置和注解
2. 设计缓存Vo对象的策略
3. 评估缓存键表达式是否需要调整
4. 提供缓存优化建议
### T4: 修改CompanyFileTypeService类
1. 修改接口实现声明:`implements IEntityService<CompanyFileType>, QueryService<CompanyFileTypeVo>, VoableService<CompanyFileType, CompanyFileTypeVo>`
2. 实现QueryService接口方法findById确保返回Vo对象并添加@Cacheable注解
3. 实现QueryService接口方法findAll确保返回Vo对象的Page
4. 实现VoableService接口的updateByVo和createByVo方法
5. 编写验证测试
### T5: 批量修改其他Service类
1. 按照CompanyFileTypeService的模式批量修改其他Service类
2. 每个Service类修改完成后进行验证测试
3. 记录批量修改过程中的问题和解决方案
4. 生成批量修改执行报告
### T6: 处理WebSocket服务组件
1. 分析WebSocketServerCallbackManager类中的类型处理逻辑
2. 分析createNewEntity、findEntityTypeInInterfaces等方法的实现
3. 修改相关方法确保能够正确处理Service类的新泛型参数
4. 验证修改后的WebSocket服务功能正常
### T7: 清理Redis缓存
1. 开发Redis缓存清理工具或脚本
2. 执行缓存清理操作
3. 验证缓存清理结果
4. 生成缓存清理执行报告
### T8: 编写测试用例
1. 为每个修改后的Service类编写单元测试用例
2. 编写集成测试用例
3. 包含边界条件和异常情况的测试
4. 执行测试并生成测试执行报告
### T9: 更新相关文档
1. 更新项目架构文档
2. 更新接口文档
3. 更新用户手册(如需)
4. 确保所有文档的格式和内容符合项目规范
### T10: 分析并修改WebSocket服务组件
1. 分析WebSocketServerHandler类中的类型处理逻辑
2. 分析WebSocketServerHandler类与IEntityService接口的泛型关系
3. 修改相关方法确保能够正确处理Vo对象的序列化和反序列化
4. 验证修改后的WebSocket服务功能正常
## 5. 关键交付物
| 交付物名称 | 描述 | 负责人 | 完成日期 |
|------------|------|--------|----------|
| Service类修改列表 | 需要修改的Service类清单 | - | - |
| 数据转换方案文档 | 实体类与Vo类的转换方案 | - | - |
| 缓存策略文档 | 缓存Vo对象的策略和配置 | - | - |
| 修改后的Service类源码 | 所有修改完成的Service类 | - | - |
| WebSocket组件修改 | 修改后的WebSocket相关组件 | - | - |
| Redis缓存清理工具/脚本 | 用于清理旧缓存数据的工具或脚本 | - | - |
| 测试用例集 | 单元测试和集成测试用例 | - | - |
| 测试执行报告 | 测试结果和问题记录 | - | - |
| 更新后的项目文档 | 反映修改后的项目文档 | - | - |
| 最终验收报告 | 项目完成情况的总结报告 | - | - |