# 升级提示功能使用指南

## 功能概述

新增的升级提示系统会在应用启动时自动检查更新，并在发现新版本时优雅地提示用户。整个体验流畅、专业，不打扰用户工作流。

## 主要特性

✅ **自动检测** - 应用启动后 5 秒自动检查更新
✅ **优雅提示** - 精美的弹窗设计，清晰的版本信息
✅ **实时进度** - 下载进度实时显示，包含速度和文件大小
✅ **灵活跳过** - 支持跳过非强制更新，下次不再提示
✅ **强制更新** - 重要安全更新强制安装，无法跳过
✅ **断点续传** - 下载支持断点续传，节省流量
✅ **安全安装** - 自动备份原程序，失败自动回滚

## 使用流程

### 1. 应用启动自动检查

```
应用启动
  ↓
等待 3 秒（避免阻塞启动）
  ↓
后台检查更新
  ↓
发现新版本？
  ├─ 是 → 延迟 2 秒显示升级提示弹窗
  └─ 否 → 不显示，正常使用应用
```

### 2. 升级提示弹窗

当检测到新版本时，会显示精美的升级提示弹窗：

**弹窗包含：**
- 📌 当前版本 → 最新版本对比
- 📅 发布日期
- 📁 文件大小
- 📖 更新日志（版本更新内容）
- 🎯 操作按钮（跳过/立即更新）
- ⏰ 稍后提醒选项

**三种状态：**
1. **初始状态** - 显示版本信息和更新日志
2. **下载状态** - 显示下载进度和速度
3. **完成状态** - 下载完成，提示点击安装

### 3. 用户选择

#### 选择 A：立即更新
```
点击"立即更新"
  ↓
开始下载（显示进度条）
  ↓
下载完成
  ↓
点击"安装"
  ↓
确认对话框
  ↓
自动重启应用
```

#### 选择 B：跳过此版本
```
点击"跳过此版本"
  ↓
勾选"提醒我稍后更新"？
  ├─ 是 → 下次启动继续提示
  └─ 否 → 记住选择，不再提示此版本
  ↓
关闭弹窗
```

### 4. 强制更新

对于重要的安全更新，弹窗会：
- 🔴 显示红色"重要更新"徽章
- ⚠️ 显示强制更新警告信息
- 🚫 禁用关闭按钮（无法跳过）
- ✅ 只提供"立即更新"按钮

## 配置选项

### 在"设置 → 版本更新"中配置：

#### 自动检查更新
- **开启** - 应用启动时自动检查（推荐）
- **关闭** - 不自动检查，需要手动检查

#### 检查间隔
- 范围：1-1440 分钟（1 分钟 - 24 小时）
- 推荐设置：60 分钟（1 小时）
- 说明：两次自动检查的最小间隔时间

#### 更新检查地址
- 系统配置，不可修改
- 当前地址：`https://img.1216.top/u-desk/last-version.json`

## 手动检查更新

如果关闭了自动检查，或者想立即检查：

1. 打开"设置"面板
2. 切换到"版本更新"标签
3. 点击"检查更新"按钮
4. 查看更新结果

## 版本信息文件

升级系统会读取远程的版本信息文件：

**文件地址：** `https://img.1216.top/u-desk/last-version.json`

**文件格式：**
```json
{
  "version": "0.1.1",
  "download_url": "https://img.1216.top/u-desk/go-desk-0.1.1-windows-amd64.exe",
  "changelog": "• 修复文件列表刷新问题\n• 优化启动性能\n• 新增暗色模式支持",
  "force_update": false,
  "release_date": "2026-01-28",
  "file_size": 45234567
}
```

**字段说明：**
- `version` - 最新版本号（格式：x.y.z）
- `download_url` - 安装包下载地址
- `changelog` - 更新日志（支持换行符 `\n`）
- `force_update` - 是否强制更新（true/false）
- `release_date` - 发布日期（格式：YYYY-MM-DD）
- `file_size` - 文件大小（字节，可选）

## 下载和安装

### 下载特性
- ✅ 支持断点续传（中断后可继续）
- ✅ 实时显示下载进度
- ✅ 显示下载速度和剩余时间
- ✅ 下载完成后自动计算 MD5 和 SHA256 哈希

### 安装特性
- ✅ 自动备份当前版本
- ✅ 安装失败自动回滚
- ✅ 安装成功自动重启
- ✅ 支持 .exe 和 .zip 格式

### 文件存储位置
- **配置文件**：`~/.u-desk/update_config.json`
- **下载目录**：`~/.u-desk/downloads/`
- **备份目录**：`~/.u-desk/backups/`

## 常见问题

### Q1: 为什么自动检查更新后没有弹窗？
**A:** 可能原因：
1. 已是最新版本（无更新）
2. 此版本已选择"跳过"且未勾选"稍后提醒"
3. 自动检查功能已关闭

**解决方法：**
- 手动点击"检查更新"按钮
- 检查配置中的"自动检查更新"开关

### Q2: 下载失败了怎么办？
**A:**
- 下载支持断点续传，可以点击重试
- 系统会自动从断点继续下载
- 如果多次失败，检查网络连接和下载地址

### Q3: 安装失败会怎样？
**A:**
- 系统会自动回滚到备份版本
- 不会影响当前使用
- 可以查看错误日志了解失败原因

### Q4: 如何恢复跳过的版本提示？
**A:**
方法 1：手动点击"检查更新"
方法 2：清除浏览器 localStorage 中的 `skipped_version`

### Q5: 强制更新可以跳过吗？
**A:**
- 不可以。强制更新是为了修复严重的安全问题或数据损坏问题
- 不安装强制更新可能会影响应用正常使用

### Q6: 下载中断后下次如何继续？
**A:**
- 系统会自动检测已下载的部分
- 重新点击"立即更新"会从断点继续
- 不会重复下载已完成的文件

## 技术实现

### 前端组件
- **UpdateNotification.vue** - 升级提示弹窗组件
- **App.vue** - 集成自动检查逻辑

### 后端接口
- **CheckUpdate()** - 检查更新
- **DownloadUpdate()** - 下载更新包
- **InstallUpdate()** - 安装更新
- **GetUpdateConfig()** - 获取更新配置
- **SetUpdateConfig()** - 保存更新配置

### 事件系统
- **download-progress** - 下载进度事件
- **download-complete** - 下载完成事件

### 配置文件
**~/.u-desk/update_config.json**
```json
{
  "current_version": "0.1.0",
  "last_check_time": "2026-01-28T18:51:00+08:00",
  "auto_check_enabled": true,
  "check_interval_minutes": 60,
  "check_url": "https://img.1216.top/u-desk/last-version.json"
}
```

## 最佳实践

### 对于用户
1. ✅ 保持自动检查开启，及时获取更新
2. ✅ 选择"稍后提醒"而非"跳过"，避免错过重要更新
3. ✅ 安装前保存当前工作，避免数据丢失
4. ✅ 遇到强制更新立即安装，确保安全性

### 对于开发者
1. ✅ 版本信息文件保持最新
2. ✅ 更新日志清晰详细
3. ✅ 重要更新标记为强制更新
4. ✅ 测试安装包的完整性

## 更新日志设计建议

### 好的更新日志
```
• 修复文件列表刷新后顺序错乱的问题
• 优化启动性能，加载时间减少 30%
• 新增暗色模式支持
• 修复 #123 问题：数据库连接失败

注意：此版本包含重要的安全修复，建议立即更新
```

### 不好的更新日志
```
bug fixes
performance improvements
new features
```

**建议：**
- ✅ 列出具体的改动
- ✅ 说明对用户的影响
- ✅ 标注重要性和紧急性
- ✅ 使用清晰的格式（项目符号）

---

## 总结

新的升级提示系统提供了专业、流畅、友好的更新体验：

🎯 **自动化** - 后台检查，无需人工干预
💎 **精美设计** - 现代化的 UI，清晰的信息层次
⚡ **高效流畅** - 断点续传，实时进度
🔒 **安全可靠** - 备份回滚，哈希验证
👍 **用户友好** - 灵活跳过，稍后提醒

享受无缝的更新体验！
