# 升级提示交互设计文档 ## 设计理念 ### 核心价值 将升级从"干扰"转变为"期待",创造专业、可信、流畅的更新体验。 ### 设计原则 1. **无感检测** - 后台静默检查,不打扰工作流 2. **优雅提示** - 精美的弹窗设计,而非生硬的系统提示 3. **透明反馈** - 清晰的进度展示,让用户掌控全局 4. **安全信任** - 强调版本信息和安全性,建立信任 --- ## 交互流程 ### 1. 自动检查更新(后台) ``` 应用启动 ↓ 等待 3 秒(避免阻塞启动) ↓ 检查更新配置 ↓ 是否开启自动检查? ├─ 否 → 跳过 └─ 是 → 请求版本信息 ↓ 版本比较 ├─ 无更新 → 记录日志 └─ 有更新 → 检查是否已跳过 ├─ 已跳过且非强制 → 跳过 └─ 未跳过或强制更新 → 延迟 2 秒显示弹窗 ``` **关键点:** - ✅ 异步检查,不阻塞应用启动 - ✅ 3 秒延迟,优先显示应用界面 - ✅ 2 秒延迟显示弹窗,让用户先熟悉界面 - ✅ 支持跳过非强制更新 ### 2. 升级提示弹窗 #### 弹窗触发时机 - **自动触发**:应用启动检测到新版本(延迟 5 秒) - **手动触发**:用户在"版本更新"面板点击"检查更新" #### 弹窗状态 **状态 1:初始显示** ``` ┌─────────────────────────────────────────────┐ │ 🔍 发现新版本 v0.1.0 → v0.1.1 [✕] │ ├─────────────────────────────────────────────┤ │ │ │ 📅 发布日期 2026-01-28 │ │ 📁 文件大小 45.2 MB │ │ │ │ 📖 更新内容 │ │ ┌─────────────────────────────────────────┐ │ │ │ • 修复文件列表刷新问题 │ │ │ │ • 优化启动性能 │ │ │ │ • 新增暗色模式支持 │ │ │ └─────────────────────────────────────────┘ │ │ │ │ [ 跳过此版本 ] [ 立即更新 ↓ ] │ │ │ │ ☐ 提醒我稍后更新(下次启动时提醒) │ └─────────────────────────────────────────────┘ ``` **状态 2:下载中** ``` ┌─────────────────────────────────────────────┐ │ 🔍 发现新版本 v0.1.0 → v0.1.1 [✕] │ ├─────────────────────────────────────────────┤ │ │ │ 📥 下载中... │ │ ████████████████░░░░░░░░ 65% │ │ 28.5 MB / 45.2 MB 2.3 MB/s │ │ │ │ [ 跳过此版本 ] [ 准备中... ] │ └─────────────────────────────────────────────┘ ``` **状态 3:下载完成** ``` ┌─────────────────────────────────────────────┐ │ 🔍 发现新版本 v0.1.0 → v0.1.1 [✕] │ ├─────────────────────────────────────────────┤ │ │ │ ✅ 下载完成! │ │ 文件已保存到: │ │ C:\Users\xxx\.u-desk\downloads\update.exe │ │ │ │ [ ✓ 下载完成,点击安装 ] │ └─────────────────────────────────────────────┘ ``` **状态 4:强制更新** ``` ┌─────────────────────────────────────────────┐ │ ⚠ 重要更新 v0.1.0 → v0.1.1 │ ├─────────────────────────────────────────────┤ │ │ │ ⚠️ 此版本包含重要的安全更新和修复, │ │ 建议立即更新以继续使用 │ │ │ │ 📖 更新内容 │ │ ┌─────────────────────────────────────────┐ │ │ │ • 修复严重安全漏洞 │ │ │ │ • 修复数据损坏问题 │ │ │ └─────────────────────────────────────────┘ │ │ │ │ [ 立即更新 ↓ ] │ └─────────────────────────────────────────────┘ ``` ### 3. 用户操作流程 #### 立即更新流程 ``` 点击"立即更新" ↓ 开始下载 ↓ 显示下载进度(实时更新) ↓ 下载完成 ↓ 显示"点击安装"按钮 ↓ 点击"安装" ↓ 确认对话框 ↓ 开始安装 ↓ 显示"安装中..." ↓ 安装成功,延迟 2 秒重启应用 ``` #### 跳过流程 ``` 点击"跳过此版本" ↓ 检查"提醒我稍后更新" ├─ 选中 → 保存到 localStorage(skipped_version) └─ 未选中 → 清除 localStorage ↓ 关闭弹窗 ↓ 下次启动时不再提示(除非是强制更新) ``` --- ## 视觉设计 ### 配色方案 **主要颜色** - **主色调**:`#165dff` - 专业蓝,代表信任和稳定 - **成功色**:`#00b42a` - 下载成功、安装完成 - **警告色**:`#ff7d00` - 一般更新 - **错误色**:`#f53f3f` - 强制更新、下载失败 **渐变效果** ```css /* 版本徽章渐变 */ background: linear-gradient(135deg, #165dff 0%, #4facfe 100%); /* 强制更新徽章渐变 */ background: linear-gradient(135deg, #f53f3f 0%, #ff7875 100%); /* 弹窗头部渐变 */ background: linear-gradient(135deg, #f0f5ff 0%, #ffffff 100%); ``` ### 字体设计 **显示字体**:系统默认(保持一致性) **代码字体**:`'Menlo', 'Monaco', 'Courier New', monospace`(更新日志) **字号层级** ```css 版本徽章:15px / 600 /* 主要 CTA */ 标题:14px / 600 /* 区块标题 */ 正文:14px / 400 /* 内容文字 */ 辅助文字:12px / 400 /* 标签、提示 */ 小字:13px / 400 /* 代码、日志 */ ``` ### 间距系统 ```css 弹窗内边距:24px 卡片间距:20px 区块间距:16px 元素间距:12px 小间距:8px ``` ### 圆角系统 ```css 弹窗:8px 卡片/容器:12px 按钮:8px 信息图标:8px ``` ### 阴影系统 ```css 版本徽章:0 2px 8px rgba(22, 93, 255, 0.3) 信息图标:0 2px 6px rgba(22, 93, 255, 0.2) ``` --- ## 动画设计 ### 弹窗动画 ```css @keyframes modalFadeIn { from { opacity: 0; transform: scale(0.95) translateY(-20px); } to { opacity: 1; transform: scale(1) translateY(0); } } /* 持续时间:0.3s */ /* 缓动函数:ease-out */ ``` ### 进度条动画 ```css @keyframes progressPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.8; } } /* 持续时间:1.5s */ /* 循环播放 */ ``` ### 按钮交互 - **Hover**:0.15s 背景色过渡 - **Active**:轻微缩放(scale: 0.98) --- ## 组件结构 ``` UpdateNotification.vue ├── 模板层(Template) │ ├── 弹窗容器(a-modal) │ ├── 标题栏(自定义) │ │ ├── 版本徽章(带图标) │ │ └── 版本对比(当前 → 最新) │ ├── 内容区域 │ │ ├── 版本信息卡片 │ │ │ ├── 发布日期 │ │ │ └── 文件大小 │ │ ├── 更新日志 │ │ ├── 强制更新提示(条件显示) │ │ ├── 下载进度(条件显示) │ │ ├── 操作按钮 │ │ └── 后台更新选项(条件显示) │ ├── 脚本层(Script) │ ├── Props(modelValue, updateInfo) │ ├── Emits(update:modelValue, download, install, skip) │ ├── 状态管理 │ │ ├── 下载状态 │ │ ├── 安装状态 │ │ ├── 进度信息 │ │ └── 用户选择 │ ├── 方法 │ │ ├── handleDownload() │ │ ├── handleInstall() │ │ ├── handleSkip() │ │ ├── 事件监听器(下载进度、完成) │ │ └── 工具方法(文件大小格式化等) │ └── 生命周期 │ ├── onMounted(设置事件监听) │ └── onUnmounted(清理事件监听) │ └── 样式层(Style) ├── 弹窗样式 ├── 版本徽章 ├── 信息卡片 ├── 更新日志 ├── 进度条 ├── 按钮样式 └── 动画效果 ``` --- ## 后端集成 ### API 接口 ```javascript // 检查更新 await window.go.main.App.CheckUpdate() // 返回: { success: true, data: { has_update, current_version, latest_version, ... } } // 下载更新 await window.go.main.App.DownloadUpdate(downloadURL) // 返回: { success: true, data: { message: "下载已开始" } } // 安装更新 await window.go.main.App.InstallUpdate(filePath, autoRestart) // 返回: { success: true, data: { success: true, message: "安装成功" } } ``` ### 事件系统 ```javascript // 监听下载进度 window.runtime.EventsOn('download-progress', (event) => { const data = JSON.parse(event) // { progress: 65, speed: 2345678, downloaded: 28576892, total: 45234567 } }) // 监听下载完成 window.runtime.EventsOn('download-complete', (event) => { const data = JSON.parse(event) // { success: true, file_path: "xxx", file_size: 45234567 } }) ``` --- ## 配置选项 ### 用户可配置 在 **设置 → 版本更新** 中: - ✅ **自动检查更新**:开启/关闭 - ✅ **检查间隔**:1-1440 分钟 - 🔒 **检查地址**:只读(系统配置) ### 版本信息文件格式 ```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 } ``` --- ## 边界情况处理 ### 1. 网络错误 ``` 检查更新失败 → 记录日志,不显示弹窗 下载失败 → 显示错误提示,允许重试 ``` ### 2. 下载中断 ``` 支持断点续传 下次下载从断点继续 ``` ### 3. 安装失败 ``` 显示错误信息 自动回滚到备份版本 ``` ### 4. 用户跳过 ``` 非强制更新 → 允许跳过 强制更新 → 不允许跳过(禁用关闭按钮) ``` ### 5. 版本回退 ``` 不主动提示降级 如需降级,手动下载安装 ``` --- ## 可访问性 ### 键盘导航 - ✅ Tab 键:切换焦点 - ✅ Enter 键:激活按钮 - ✅ Esc 键:关闭弹窗(非强制更新) ### 屏幕阅读器 - ✅ 语义化 HTML - ✅ ARIA 标签 - ✅ 清晰的焦点指示器 ### 对比度 - ✅ 文字与背景对比度 ≥ 4.5:1 - ✅ 重要信息使用高对比度颜色 --- ## 性能优化 ### 前端 - ✅ 异步加载组件(按需) - ✅ 防抖处理(避免频繁更新) - ✅ 事件监听器及时清理 ### 后端 - ✅ 异步下载(不阻塞 UI) - ✅ 流式下载(支持大文件) - ✅ 断点续传(节省带宽) --- ## 测试要点 ### 功能测试 - ✅ 自动检查更新正常触发 - ✅ 弹窗正确显示版本信息 - ✅ 下载进度实时更新 - ✅ 安装成功后重启 - ✅ 跳过功能正常工作 - ✅ 强制更新无法关闭 ### 边界测试 - ✅ 网络断开时的处理 - ✅ 下载失败后的重试 - ✅ 安装失败后的回滚 - ✅ 跳过后不再提示 - ✅ 强制更新必须安装 ### UI 测试 - ✅ 弹窗动画流畅 - ✅ 进度条更新平滑 - ✅ 按钮状态正确 - ✅ 响应式布局正常 --- ## 未来改进方向 ### 短期(1-2 周) - [ ] 增量更新支持(仅下载差异包) - [ ] 更新历史记录 - [ ] 更新统计(次数、节省时间) ### 中期(1-2 月) - [ ] 多渠道更新(稳定版、测试版) - [ ] 自动更新后台下载 - [ ] 更新预约(定时更新) ### 长期(3-6 月) - [ ] 智能更新(根据使用习惯) - [ ] A/B 测试更新策略 - [ ] 用户反馈收集 --- ## 总结 这个升级提示系统设计遵循了现代 UX 最佳实践: ✨ **专业感** - 精美的视觉设计,建立用户信任 🚀 **流畅感** - 细腻的动画过渡,提升体验 🎯 **掌控感** - 清晰的进度反馈,用户有掌控权 🔒 **安全感** - 强制更新保护,跳过选项灵活 ⚡ **高效感** - 后台检测,不干扰工作流 用户将从"被迫更新"的烦恼,转变为"期待更新"的积极体验。