# 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缓存清理工具/脚本 | 用于清理旧缓存数据的工具或脚本 | - | - |
| 测试用例集 | 单元测试和集成测试用例 | - | - |
| 测试执行报告 | 测试结果和问题记录 | - | - |
| 更新后的项目文档 | 反映修改后的项目文档 | - | - |
| 最终验收报告 | 项目完成情况的总结报告 | - | - |