WX-Game1/image_download_refactor_tas...

6.6 KiB
Raw Permalink Blame History

上下文

文件名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缓存机制
    • 更改摘要:根据用户反馈简化了图片下载功能,移除了复杂的缓存管理,只保留核心的下载方法和简单缓存
    • 原因:处理用户子提示"不需要那么多缓存方法,就一个下载图片的方法就行了"
    • 阻碍:无
    • 状态:等待后续处理(审查或直接确认)