6.6 KiB
6.6 KiB
上下文
文件名: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中添加图片下载功能
核心设计原则
- 统一接口设计:提供与现有HTTP请求类似的异步接口
- 智能缓存管理:实现LRU缓存策略,避免内存泄漏
- 灵活配置:支持自定义超时、重试等参数
- 事件系统集成:与现有事件系统无缝集成
- 向后兼容:保持FriendItemComponent现有调用方式不变
技术实现要点
- 使用LRU缓存替代简单字典
- 添加内存使用监控
- 提供缓存清理接口
- 支持UniTask异步接口和回调方式
- 支持取消操作
- 网络错误分类处理
- 图片格式验证
- 下载进度回调
实施计划 (由 PLAN 模式生成)
技术规范
目标:在WebRequestManager中添加公共的图片下载功能,重构FriendItemComponent使用新的公共接口。
架构设计:
- 在WebRequestManager中添加图片下载相关的方法和数据结构
- 实现智能缓存管理(LRU缓存策略)
- 提供UniTask异步接口和回调接口
- 修改FriendItemComponent使用新的公共接口
- 保持向后兼容性
文件修改范围:
Assets/Scripts/Network/WebRequestManager.cs
- 添加图片下载功能Assets/Scripts/Component/FriendItemComponent.cs
- 重构使用新的公共接口
新增功能:
- 图片下载异步方法
- LRU缓存管理
- 图片下载事件系统
- 缓存统计和清理功能
实施检查清单:
- [在WebRequestManager中添加图片缓存相关的私有字段和配置参数, review:true]
- [在WebRequestManager中添加图片下载的异步方法DownloadImageAsync, review:true]
- [在WebRequestManager中添加图片下载的回调方法DownloadImage, review:true]
- [在WebRequestManager中添加LRU缓存管理相关方法, review:true]
- [在WebRequestManager中添加图片缓存清理和统计方法, review:true]
- [在WebRequestManager中添加图片下载相关的事件定义, review:true]
- [修改FriendItemComponent移除原有的图片下载逻辑, review:true]
- [修改FriendItemComponent使用WebRequestManager的图片下载功能, review:true]
- [测试验证重构后的功能正常工作, review:false]
- [更新任务进度文档记录完成情况, review:false]
当前执行步骤 (由 EXECUTE 模式在开始执行某步骤时更新)
正在执行: "步骤1-8:WebRequestManager图片下载功能实现和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缓存机制
- 更改摘要:根据用户反馈简化了图片下载功能,移除了复杂的缓存管理,只保留核心的下载方法和简单缓存
- 原因:处理用户子提示"不需要那么多缓存方法,就一个下载图片的方法就行了"
- 阻碍:无
- 状态:等待后续处理(审查或直接确认)