diff --git a/docs/development/DESKTOP_CONFIG.md b/docs/development/DESKTOP_CONFIG.md index 042e78bcfbcbe0b726f9d900bf9af7d075099d7b..16d53c221a91d30a72b357866d9711aa06c7f1f5 100644 --- a/docs/development/DESKTOP_CONFIG.md +++ b/docs/development/DESKTOP_CONFIG.md @@ -4,17 +4,19 @@ 桌面配置管理系统是 openEuler Intelligence 桌面应用的核心组件,负责管理应用配置、首次启动欢迎流程以及提供配置相关的 API 接口。该系统采用现代化的架构设计,提供类型安全、可扩展且健壮的配置管理解决方案。 -### 1. 核心特性 +### 核心特性 - **类型安全**: 基于 TypeScript 的完整类型定义 - **健壮性**: 完备的错误处理和恢复机制 - **可扩展性**: 灵活的配置结构,易于添加新配置项 - **安全性**: 配置验证和备份恢复机制 - **用户友好**: 首次启动引导和直观的配置界面 +- **模块化**: 清晰的 API 职责分离,避免代码重复 +- **快速响应**: 服务器验证1.5秒超时,提供快速用户反馈 ## 系统架构 -### 2. 核心组件 +### 核心组件 #### 配置管理器 (`ConfigManager`) @@ -34,42 +36,74 @@ #### 预加载脚本 -- **主预加载**: `electron/preload/index.ts` -- **欢迎预加载**: `electron/preload/welcome.ts` +- **主预加载**: `electron/preload/index.ts` - 提供主程序完整功能API +- **欢迎预加载**: `electron/preload/welcome.ts` - 提供欢迎界面专用API +- **共享模块**: `electron/preload/shared.ts` - 提供跨窗口共享的通用功能 - **职责**: 安全的 API 桥接 -### 3. IPC 接口 +### API 职责分离 -新增的 IPC 处理接口: +#### 主程序 API (`eulercopilot`) + +- 完整的配置管理功能(增删改查) +- 窗口控制(最大化、最小化、关闭) +- 主题管理 +- 系统信息访问 + +#### 欢迎界面 API (`eulercopilotWelcome`) + +- 受限的配置管理(仅代理设置和服务器验证) +- 欢迎流程控制(显示、完成、取消) +- 基础系统信息 +- 实用工具函数 + +#### 共享功能 (`shared`) + +- 安全的IPC通信封装 +- 通用工具函数 +- 服务器验证(1.5秒快速响应) +- 代理URL设置 + +### IPC 接口 + +#### 配置管理接口 + +```typescript +'copilot:get-config' - 获取完整配置(主程序专用) +'copilot:update-config' - 更新配置(主程序专用) +'copilot:reset-config' - 重置为默认配置(主程序专用) +'copilot:set-proxy-url' - 设置代理 URL(共享功能) +'copilot:get-proxy-url' - 获取代理 URL(主程序专用) +'copilot:validate-server' - 验证服务器连接(共享功能,1.5秒超时) +``` + +#### 欢迎界面接口 ```typescript -// 配置管理 -'copilot:get-config' - 获取完整配置 -'copilot:update-config' - 更新配置(部分更新) -'copilot:reset-config' - 重置为默认配置 -'copilot:set-proxy-url' - 设置代理 URL(便捷方法) -'copilot:get-proxy-url' - 获取代理 URL(便捷方法) - -// 欢迎界面 'copilot:show-welcome' - 显示欢迎界面 'copilot:complete-welcome' - 完成欢迎流程 ``` -### 4. 使用示例 +#### 窗口控制接口 + +```typescript +'copilot:window-control' - 窗口控制(minimize/maximize/close) +'copilot:window-is-maximized' - 检查窗口最大化状态 +``` + +### 使用示例 #### 在渲染进程中使用配置 ```typescript -// 获取配置 -const config = await window.ipcRenderer.invoke('copilot:get-config'); - -// 更新配置 -await window.ipcRenderer.invoke('copilot:update-config', { - base_url: 'https://new-server.com' -}); +// 主程序中使用完整API +const config = await window.eulercopilot.config.get(); +await window.eulercopilot.config.update({ base_url: 'https://new-server.com' }); -// 完成欢迎流程 -await window.ipcRenderer.invoke('copilot:complete-welcome'); +// 欢迎界面中使用受限API +await window.eulercopilotWelcome.config.setProxyUrl('https://proxy.com'); +const result = await window.eulercopilotWelcome.config.validateServer('https://server.com'); +await window.eulercopilotWelcome.welcome.complete(); ``` #### 在主进程中使用配置 @@ -85,13 +119,14 @@ const config = configManager.readConfig(); // 更新配置 configManager.updateConfig({ base_url: 'new-url' }); -// 检查配置是否存在 +// 检查配置是否存在(首次启动判断) if (!configManager.isConfigExists()) { - // 处理首次启动逻辑 + // 处理首次启动逻辑,显示欢迎界面 + showWelcomeWindow(); } ``` -### 5. 配置文件格式 +### 配置文件格式 默认配置文件 (`desktop-config.json`) 格式: @@ -103,10 +138,31 @@ if (!configManager.isConfigExists()) { 配置文件位置:`{userData}/Config/desktop-config.json` -### 6. 待完成的工作 +### 实现状态 + +✅ **已完成的功能**: + +- 配置管理系统(完整的CRUD操作) +- 首次启动检测和欢迎窗口自动显示 +- 三层预加载脚本架构(主程序、欢迎界面、共享模块) +- IPC通信层和API职责分离 +- 服务器验证(1.5秒快速响应) +- 配置文件备份和恢复机制 +- 开发环境构建和监控系统 -1. **欢迎界面 UI**: 需要创建实际的欢迎界面 HTML/Vue 组件 +🚧 **需要完善的功能**: + +1. **欢迎界面 UI**: 当前为基础HTML模板,需要创建完整的配置界面组件 2. **国际化**: 为欢迎界面添加多语言支持 +3. **用户指南**: 添加更详细的配置帮助信息 + +📊 **开发环境验证结果**: + +- ✅ Vite开发服务器正常启动(端口自动检测:3000/3001/3002/...) +- ✅ 预加载脚本编译成功(主预载和欢迎预载) +- ✅ 首次启动逻辑正常工作 +- ✅ 欢迎窗口成功显示 +- ⚠️ Chrome DevTools自动填充警告(不影响功能) ## API 参考 @@ -177,7 +233,7 @@ export class ConfigManager { #### 主要接口 -##### 配置管理接口 +##### 配置管理 ```typescript // 获取配置 @@ -204,7 +260,7 @@ ipcRenderer.invoke('copilot:validate-server', url: string): Promise<{ }> ``` -##### 欢迎流程接口 +##### 欢迎流程 ```typescript // 显示欢迎窗口 @@ -311,9 +367,32 @@ interface DesktopConfig { } ``` -### 欢迎界面 API +### 欢迎界面当前实现 + +当前欢迎界面 (`electron/welcome/index.html`) 为基础HTML模板: + +```html + + +
+ +