Files
workspace/code/file-preview/.trae/documents/notification_progress_plan.md
2026-04-28 17:29:53 +08:00

2.6 KiB

批量操作进度通知重构计划

需求分析

用户要求修改批量操作(下载、上传、删除等)的通知显示逻辑:

  1. 单一通知:批量操作只显示一个 notification
  2. 手动关闭:通知不会自动关闭,需要用户手动关闭
  3. 实时更新:显示当前正在处理的文件名和进度
  4. 结果统计:操作完成后显示总数、成功数、失败数
  5. 多语言支持:使用现有语言配置,不写死文字
  6. 通用设计:支持批量下载、上传、删除等多种操作类型
  7. UI锁定:操作进行时自动锁定UI,操作结束后自动解锁(与通知关闭无关)

修改内容

1. 新增任务组概念

在实例中添加 currentTaskGroup 来管理当前批量操作的通知状态:

this.currentTaskGroup = null; // 当前任务组 { taskType, notificationId, total }

2. 修改 addTask 方法

  • 检查是否已有同类型的任务组
  • 如果没有,创建新的任务组和通知
  • 如果有,复用已有的通知

3. 修改 updateTask 方法

  • 更新通知中的当前文件名和进度百分比
  • 显示格式:正在下载:文件名 (进度%)

4. 修改 finishTask 方法

  • 所有任务完成后更新通知显示结果统计
  • 解锁 UI(与通知关闭无关)
  • 通知保持显示,等待用户手动关闭

5. 修改 clearTasks 方法

  • 不自动关闭通知(用户手动关闭)
  • 只是重置任务状态

6. 修改 closeNotification 方法

  • 关闭通知时清理对应的任务组

7. 更新多语言配置

确保以下语言键存在:

  • batchDownload: 批量下载
  • batchUpload: 批量上传
  • batchDelete: 批量删除
  • downloading: 正在下载
  • uploading: 正在上传
  • deleting: 正在删除
  • downloadResult: 结果统计格式

修改步骤

  1. 在 init 或构造函数中添加 currentTaskGroup 状态
  2. 修改 addTask 方法支持任务组概念
  3. 修改 updateTask 方法更新进度显示
  4. 修改 finishTask 方法显示最终结果并解锁UI
  5. 修改 clearTasks 方法不自动关闭通知
  6. 修改 closeNotification 方法清理任务组
  7. 验证多语言支持

风险评估

风险项 风险等级 处理方式
任务组状态管理 中 使用单一任务组管理同一类型的批量操作
通知重复创建 低 添加检查逻辑,避免重复创建
UI锁定与通知生命周期不一致 中 分离 UI 锁定和通知关闭逻辑

兼容性

  • 原有 showNotification 调用方式保持兼容
  • 任务管理方法保持向后兼容