# Implementation Plan: Go Version Management ## Overview 本实现计划将 Go 版本管理功能集成到 PHPer 开发环境管理器中。实现将遵循现有的 NodeManager 和 PythonManager 架构模式,确保代码一致性和可维护性。所有代码将使用 TypeScript 编写,与项目现有技术栈保持一致。 ## Tasks - [x] 1. 创建 Go 管理器后端服务 - [x] 1.1 创建 GoManager.ts 服务类 - 创建 `electron/services/GoManager.ts` 文件 - 定义核心接口和类型(GoVersion, AvailableGoVersion, GoInfo) - 实现基础类结构和 ConfigStore 集成 - _Requirements: 1.1, 4.1, 6.1_ - [x] 1.2 为核心结构编写单元测试 - 测试基础类初始化和配置集成 - _Requirements: 1.1, 4.1, 6.1_ - [x] 2. 实现版本获取和管理功能 - [x] 2.1 实现 golang.org API 集成 - 从 `https://golang.org/dl/?mode=json` 获取版本列表 - 解析 API 响应并提取 Windows 64位版本 - 实现缓存机制(5分钟缓存) - 添加备用版本列表 - _Requirements: 1.1_ - [x] 2.2 为 API 集成编写属性测试 - **Property 1: API Version Fetching Consistency** - **Validates: Requirements 1.1** - [x] 2.3 实现已安装版本检测 - 扫描本地 Go 安装目录 - 验证安装完整性(go.exe, gofmt.exe 等) - 检测当前活动版本 - 获取版本详细信息 - _Requirements: 4.1, 4.2, 4.5, 5.1, 5.2_ - [x] 2.4 为版本检测编写属性测试 - **Property 9: Version Information Completeness** - **Validates: Requirements 4.2, 4.3** - [x] 3. 实现下载和安装功能 - [x] 3.1 实现文件下载管理器 - 支持 HTTPS 下载和进度跟踪 - 实现 SHA256 校验和验证 - 处理下载中断和重试 - 集成到现有的下载进度系统 - _Requirements: 1.2, 1.3_ - [x] 3.2 为下载功能编写属性测试 - **Property 2: Download URL Construction** - **Property 3: Download Progress Reporting** - **Validates: Requirements 1.2, 1.3** - [x] 3.3 实现 Go 版本安装逻辑 - ZIP 文件解压到目标目录 - 安装后验证和完整性检查 - 重复安装检测和防护 - 清理临时文件 - _Requirements: 1.4, 1.5, 5.1, 5.2, 5.3, 5.4_ - [x] 3.4 为安装功能编写属性测试 - **Property 4: Installation Validation Completeness** - **Property 5: Duplicate Installation Prevention** - **Validates: Requirements 1.4, 1.5, 5.1, 5.2, 5.3, 5.4** - [x] 4. 实现环境变量管理 - [x] 4.1 实现环境变量更新逻辑 - 使用 PowerShell 脚本更新用户环境变量 - 设置 GOROOT、GOPATH 和 PATH - 清理旧版本的路径配置 - _Requirements: 3.1, 6.1, 6.2, 6.3, 6.4_ - [x] 4.2 为环境变量管理编写属性测试 - **Property 7: Active Version Environment Management** - **Property 14: GOPATH Default Configuration** - **Validates: Requirements 3.1, 6.1, 6.2, 6.3, 6.4** - [x] 4.3 实现版本切换和验证 - 版本激活和环境变量更新 - 切换后的功能验证 - 系统级 Go 命令验证 - _Requirements: 3.2, 3.3, 3.4_ - [x] 4.4 为版本切换编写属性测试 - **Property 11: Environment Variable Validation** - **Validates: Requirements 3.2, 3.4** - [x] 5. 实现卸载和清理功能 - [x] 5.1 实现版本卸载逻辑 - 文件系统清理和目录删除 - 活动版本的环境变量清理 - 配置状态更新 - _Requirements: 2.2, 2.3, 2.4, 2.5_ - [x] 5.2 为卸载功能编写属性测试 - **Property 6: File System Cleanup on Uninstall** - **Property 8: Version State Consistency** - **Validates: Requirements 2.2, 2.4** - [x] 6. 实现错误处理和用户反馈 - [x] 6.1 实现综合错误处理系统 - 网络错误、磁盘空间、权限检查 - 描述性错误消息和解决建议 - 成功操作的详细反馈 - _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_ - [x] 7. 实现 IPC 通信层 - [x] 7.1 在主进程中注册 Go 管理 IPC 处理器 - 在 `electron/main.ts` 中添加 Go 相关的 IPC 处理函数 - 注册 go:getVersions, go:getAvailableVersions, go:install, go:uninstall, go:setActive 等 - 集成 GoManager 实例 - _Requirements: 所有后端功能_ - [x] 7.2 更新预加载脚本 - 在 `electron/preload.ts` 中暴露 Go 管理 API - 添加 go 对象到 electronAPI - 确保类型安全的 IPC 通信 - _Requirements: 所有后端功能_ - [x] 8. 实现前端 Vue 组件 - [x] 8.1 创建 GoManager.vue 组件 - 创建 `src/views/GoManager.vue` 文件 - 设置组件模板和基本布局(参考 NodeManager.vue 和 PythonManager.vue) - 实现 KeepAlive 缓存支持 - 添加响应式数据管理 - _Requirements: 7.1, 7.5_ - [x] 8.2 实现版本列表显示功能 - 已安装版本的卡片式展示 - 版本信息显示(版本号、路径、状态) - 活动版本的视觉标识 - 空状态处理和友好提示 - _Requirements: 4.1, 4.2, 4.3, 4.4_ - [x] 8.3 实现版本操作界面 - 安装新版本对话框 - 可用版本列表和选择 - 卸载确认对话框 - 版本切换操作按钮 - _Requirements: 1.1, 2.1, 3.2_ - [x] 8.4 实现下载进度和状态反馈 - 下载进度条和状态显示 - 操作加载状态和按钮禁用 - 成功/错误消息提示 - 集成到现有的下载进度监听系统 - _Requirements: 1.3, 8.4, 8.5_ - [x] 9. 集成到主应用程序 - [x] 9.1 添加 Go 管理页面路由 - 在 `src/router/index.ts` 中添加 Go 管理路由 - 路径: `/go`, 名称: `go`, 组件: `GoManager.vue` - 添加页面标题元数据 - _Requirements: 7.1_ - [x] 9.2 更新应用程序导航 - 在主导航中添加 Go 管理入口 - 添加 Go 相关的图标 - 确保视觉一致性 - _Requirements: 7.2, 7.3, 7.4_ - [x] 10. 检查点 - 完整功能验证 - 确保所有功能正常工作 - 验证用户体验和界面一致性 - 询问用户是否有问题或需要调整 ## Notes - 后端 GoManager 服务已完全实现,包含所有核心功能和错误处理 - 属性测试已实现,覆盖所有关键正确性属性 - 需要完成 IPC 通信层、前端组件和应用集成 - 每个任务都引用了具体的需求条目以确保可追溯性 - 所有代码将使用 TypeScript 编写,与项目技术栈保持一致 - 实现将遵循现有的 NodeManager 和 PythonManager 架构模式