WX-Game1/image_download_refactor_tas...

153 lines
6.6 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.

# 上下文
文件名image_download_refactor_task.md
创建于2024-12-19
创建者AI
关联协议RIPER-5 + Multidimensional + Agent Protocol (Conditional Interactive Step Review Enhanced)
# 任务描述
将FriendItemComponent中的图片下载功能重构到WebRequestManager中做成公共的图片下载服务
# 项目概述
Unity微信小游戏项目使用MotionFramework框架包含好友系统功能。当前图片下载逻辑分散在FriendItemComponent中需要统一到WebRequestManager中提供公共的图片下载服务。
---
*以下部分由 AI 在协议执行过程中维护*
---
# 分析 (由 RESEARCH 模式填充)
## 当前代码结构分析
### FriendItemComponent中的图片下载逻辑
- 位置:`Assets/Scripts/Component/FriendItemComponent.cs` 第93-156行
- 功能:异步下载用户头像,包含缓存机制
- 特点:
- 使用`UnityWebRequestTexture.GetTexture()`下载图片
- 静态字典缓存`imageCache`存储已下载的纹理
- 超时时间设置为10秒
- 包含完整的错误处理和日志记录
- 使用UniTask异步模式
### WebRequestManager现有功能
- 位置:`Assets/Scripts/Network/WebRequestManager.cs`
- 现有功能:
- 单例模式管理
- 支持GET/POST请求
- 请求队列管理
- 重试机制
- 超时处理
- 事件系统
- 异步UniTask支持
- 缺失功能:图片下载和纹理缓存
### 数据模型分析
- `FriendData`类包含`user_image`字段头像URL
- `UserInfo`类也包含`user_image`字段
- 项目中可能存在多个地方需要下载用户头像
### 依赖关系
- FriendItemComponent依赖UnityWebRequest、UniTask
- WebRequestManager已包含这些依赖
- 需要保持向后兼容性
## 技术约束
- 必须保持现有API的兼容性
- 需要支持UniTask异步模式
- 缓存机制需要线程安全
- 错误处理要完善
- 日志记录要统一
## 潜在影响范围
- FriendItemComponent需要修改调用方式
- 其他可能使用图片下载的组件
- 缓存管理策略
# 提议的解决方案 (由 INNOVATE 模式填充)
## 推荐方案在WebRequestManager中添加图片下载功能
### 核心设计原则
1. **统一接口设计**提供与现有HTTP请求类似的异步接口
2. **智能缓存管理**实现LRU缓存策略避免内存泄漏
3. **灵活配置**:支持自定义超时、重试等参数
4. **事件系统集成**:与现有事件系统无缝集成
5. **向后兼容**保持FriendItemComponent现有调用方式不变
### 技术实现要点
- 使用LRU缓存替代简单字典
- 添加内存使用监控
- 提供缓存清理接口
- 支持UniTask异步接口和回调方式
- 支持取消操作
- 网络错误分类处理
- 图片格式验证
- 下载进度回调
# 实施计划 (由 PLAN 模式生成)
## 技术规范
**目标**在WebRequestManager中添加公共的图片下载功能重构FriendItemComponent使用新的公共接口。
**架构设计**
1. 在WebRequestManager中添加图片下载相关的方法和数据结构
2. 实现智能缓存管理LRU缓存策略
3. 提供UniTask异步接口和回调接口
4. 修改FriendItemComponent使用新的公共接口
5. 保持向后兼容性
**文件修改范围**
- `Assets/Scripts/Network/WebRequestManager.cs` - 添加图片下载功能
- `Assets/Scripts/Component/FriendItemComponent.cs` - 重构使用新的公共接口
**新增功能**
- 图片下载异步方法
- LRU缓存管理
- 图片下载事件系统
- 缓存统计和清理功能
实施检查清单:
1. [在WebRequestManager中添加图片缓存相关的私有字段和配置参数, review:true]
2. [在WebRequestManager中添加图片下载的异步方法DownloadImageAsync, review:true]
3. [在WebRequestManager中添加图片下载的回调方法DownloadImage, review:true]
4. [在WebRequestManager中添加LRU缓存管理相关方法, review:true]
5. [在WebRequestManager中添加图片缓存清理和统计方法, review:true]
6. [在WebRequestManager中添加图片下载相关的事件定义, review:true]
7. [修改FriendItemComponent移除原有的图片下载逻辑, review:true]
8. [修改FriendItemComponent使用WebRequestManager的图片下载功能, review:true]
9. [测试验证重构后的功能正常工作, review:false]
10. [更新任务进度文档记录完成情况, review:false]
# 当前执行步骤 (由 EXECUTE 模式在开始执行某步骤时更新)
> 正在执行: "步骤1-8WebRequestManager图片下载功能实现和FriendItemComponent重构" (审查需求: review:true, 状态: 初步实施完成)
# 任务进度 (由 EXECUTE 模式在每步完成后,以及在交互式审查迭代中追加)
* 2024-12-19
* 步骤检查清单项目1-8 (审查需求: review:true, 状态:初步完成)
* 修改:
- 在WebRequestManager中添加了图片缓存相关字段和配置参数
- 添加了图片下载事件定义OnImageDownloadCompleted, OnImageDownloadFailed
- 实现了DownloadImageAsync异步方法和DownloadImage回调方法
- 实现了简单缓存管理移除复杂的LRU策略
- 修改FriendItemComponent移除原有图片下载逻辑和静态缓存
- 重构FriendItemComponent使用WebRequestManager的公共图片下载接口
- 简化了缓存管理方法,移除复杂的缓存统计功能
* 更改摘要成功将图片下载功能从FriendItemComponent重构到WebRequestManager实现了统一的图片下载服务使用简单缓存策略和完整的事件系统
* 原因执行计划步骤1-8的初步实施
* 阻碍:无
* 状态:等待后续处理(审查或直接确认)
* 2024-12-19
* 步骤:用户反馈简化缓存功能 (审查需求: review:true, 状态:用户子提示迭代)
* 修改:
- 移除了WebRequestManager中的复杂LRU缓存管理功能
- 简化图片下载功能只保留核心的DownloadImageAsync和DownloadImage方法
- 移除了maxImageCacheSize配置参数和imageCacheOrder字段
- 移除了AddToCache、UpdateCacheOrder、RemoveOldestFromCache等复杂缓存方法
- 移除了ClearImageCache、GetImageCacheStats、IsImageCached、GetCachedImage等缓存管理方法
- 更新FriendItemComponent中的缓存管理方法移除对已删除方法的调用
- 保留简单的Dictionary缓存机制
* 更改摘要:根据用户反馈简化了图片下载功能,移除了复杂的缓存管理,只保留核心的下载方法和简单缓存
* 原因:处理用户子提示"不需要那么多缓存方法,就一个下载图片的方法就行了"
* 阻碍:无
* 状态:等待后续处理(审查或直接确认)