# Notification 重构计划
## 需求分析
用户要求将现有的 `notification` 和 `dock` 两个组件合并,统一使用 `notification` 来显示所有通知和进度信息。
### 修改目标
1. **统一使用 notification**:删除 dock 组件,所有进度显示改用 notification
2. **下载进度结构不变**:保持现有的任务进度数据结构
3. **开放 notification 内容**:支持更灵活的内容传递
4. **添加 lockUI 选项**:在 showNotification 中增加是否锁定 UI 的选项
***
## 修改内容
### 1. 删除 DOM 结构中的 dock
**文件**: `custom-file/index.js`
删除 `render` 方法中的 task-dock HTML 结构:
```html
...
```
### 2. 删除 dock 相关变量
删除 `render` 方法中的:
* `this.$taskDock = this.$container.find(".task-dock");`
* `this.$uiLock = this.$container.find(".ui-lock");`
### 3. 修改 showNotification 方法
增加以下 options:
* `lockUI`: 是否锁定 UI(默认 false)
* `progress`: 进度百分比(0-100),用于显示进度条
* `customContent`: 自定义内容(支持 HTML)
### 4. 修改任务管理方法
修改以下方法使用 notification 显示进度:
* `addTask`: 创建任务时显示通知
* `updateTask`: 更新任务进度时更新通知
* `finishTask`: 完成任务时更新通知状态
* `clearTasks`: 清空任务时关闭通知
### 5. 删除 dock 相关方法
删除以下方法:
* `showTaskDock`
* `hideTaskDock`
* `updateTaskDock`
* `bindTaskDockEvents`
* `lockUI`(改为在 showNotification 中处理)
* `unlockUI`(改为在通知关闭时处理)
* `isUILocked`
### 6. 修改批量下载逻辑
修改 `internalDownloadBatch` 方法,使用 notification 显示下载进度。
***
## 风险评估
| 风险项 | 风险等级 | 处理方式 |
| --------- | ---- | ---------------------------- |
| 任务进度状态丢失 | 低 | 保留 tasks 数组用于状态管理 |
| UI 锁定逻辑变化 | 中 | 在 notification 中实现 lockUI 选项 |
| 通知样式需要调整 | 低 | 保持原有样式,增加进度条样式 |
***
## 兼容性
* 原有 `showNotification` 调用方式保持兼容
* 新增参数为可选参数,不影响现有代码
***
## 实施步骤
1. 修改 `render` 方法,删除 dock 和 ui-lock 的 DOM 结构
2. 修改 `showNotification` 方法,增加 lockUI、progress、customContent 选项
3. 修改任务管理方法,使用 notification 显示进度
4. 删除 dock 相关方法
5. 修改 `internalDownloadBatch` 使用新的通知机制