8.6 KiB
8.6 KiB
Go Desk 设备调用测试功能设计
文档版本:v0.1.0 创建时间:2026-01-20 维护者:JueChen 状态:设计阶段
1. 功能概述
实现系统资源访问和设备调用测试功能,验证 Wails 应用与系统资源的交互能力。
2. 功能需求
2.1 系统信息获取
- CPU 信息:核心数、使用率、型号
- 内存信息:总内存、已用内存、可用内存
- 磁盘信息:磁盘列表、总容量、已用容量、可用容量
- 系统信息:操作系统、架构、主机名
- 网络信息:IP 地址、网络接口列表
2.2 文件系统操作
- 读取文件:读取指定路径的文件内容
- 写入文件:写入内容到指定文件
- 列出目录:获取目录下的文件和文件夹列表
- 创建目录:创建新目录
- 删除文件/目录:删除指定路径的文件或目录
- 文件信息:获取文件大小、修改时间、权限等
2.3 系统操作
- 环境变量:读取系统环境变量
- 执行命令:执行系统命令(可选,需谨慎)
- 打开文件/目录:使用系统默认程序打开
- 文件选择对话框:选择文件或目录
2.4 进程信息
- 进程列表:获取当前运行的进程列表
- 进程详情:获取指定进程的详细信息
3. 技术实现
3.1 Go 后端实现
3.1.1 系统信息模块
// internal/system/system.go
package system
// GetSystemInfo 获取系统信息
func GetSystemInfo() (map[string]interface{}, error)
// GetCPUInfo 获取 CPU 信息
func GetCPUInfo() (map[string]interface{}, error)
// GetMemoryInfo 获取内存信息
func GetMemoryInfo() (map[string]interface{}, error)
// GetDiskInfo 获取磁盘信息
func GetDiskInfo() ([]map[string]interface{}, error)
3.1.2 文件系统模块
// internal/filesystem/fs.go
package filesystem
// ReadFile 读取文件
func ReadFile(path string) (string, error)
// WriteFile 写入文件
func WriteFile(path, content string) error
// ListDir 列出目录
func ListDir(path string) ([]map[string]interface{}, error)
// CreateDir 创建目录
func CreateDir(path string) error
// DeletePath 删除文件或目录
func DeletePath(path string) error
// GetFileInfo 获取文件信息
func GetFileInfo(path string) (map[string]interface{}, error)
3.1.3 App 方法暴露
// app.go 中添加方法
// GetSystemInfo 获取系统信息
func (a *App) GetSystemInfo() (map[string]interface{}, error)
// GetCPUInfo 获取 CPU 信息
func (a *App) GetCPUInfo() (map[string]interface{}, error)
// GetMemoryInfo 获取内存信息
func (a *App) GetMemoryInfo() (map[string]interface{}, error)
// GetDiskInfo 获取磁盘信息
func (a *App) GetDiskInfo() ([]map[string]interface{}, error)
// ReadFile 读取文件
func (a *App) ReadFile(path string) (string, error)
// WriteFile 写入文件
func (a *App) WriteFile(path, content string) error
// ListDir 列出目录
func (a *App) ListDir(path string) ([]map[string]interface{}, error)
// CreateDir 创建目录
func (a *App) CreateDir(path string) error
// DeletePath 删除文件或目录
func (a *App) DeletePath(path string) error
// GetFileInfo 获取文件信息
func (a *App) GetFileInfo(path string) (map[string]interface{}, error)
// GetEnvVars 获取环境变量
func (a *App) GetEnvVars() (map[string]string, error)
// OpenPath 打开文件或目录
func (a *App) OpenPath(path string) error
3.2 前端实现
3.2.1 系统信息展示
- 系统信息卡片(Arco Card)
- 实时刷新按钮
- 信息表格展示
3.2.2 文件系统操作界面
- 文件浏览器组件
- 路径输入框
- 操作按钮(读取、写入、删除等)
- 文件内容编辑器(文本区域)
3.2.3 测试页面布局
┌─────────────────────────────────────┐
│ 系统信息测试 │
├─────────────────────────────────────┤
│ [刷新] │
│ ┌─────────┬─────────┬─────────┐ │
│ │ CPU │ 内存 │ 磁盘 │ │
│ └─────────┴─────────┴─────────┘ │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ 文件系统测试 │
├─────────────────────────────────────┤
│ 路径: [________________] [浏览] │
│ ┌───────────────────────────────┐ │
│ │ 文件列表 │ │
│ │ - file1.txt │ │
│ │ - folder1/ │ │
│ └───────────────────────────────┘ │
│ [读取] [写入] [删除] [创建目录] │
└─────────────────────────────────────┘
4. 依赖库
4.1 Go 依赖
// 系统信息
github.com/shirou/gopsutil/v3/cpu
github.com/shirou/gopsutil/v3/mem
github.com/shirou/gopsutil/v3/disk
github.com/shirou/gopsutil/v3/host
// 文件操作
os
path/filepath
io/ioutil
// 系统操作
os/exec
runtime
4.2 安装命令
go get github.com/shirou/gopsutil/v3/cpu
go get github.com/shirou/gopsutil/v3/mem
go get github.com/shirou/gopsutil/v3/disk
go get github.com/shirou/gopsutil/v3/host
5. 实现细节
5.1 系统信息获取
CPU 信息:
- 使用
gopsutil/cpu获取 CPU 核心数、使用率 - 使用
runtime.NumCPU()获取逻辑核心数
内存信息:
- 使用
gopsutil/mem获取内存统计 - 转换为 MB/GB 单位显示
磁盘信息:
- 使用
gopsutil/disk获取磁盘分区和使用情况 - 过滤系统盘和可访问盘
系统信息:
- 使用
gopsutil/host获取主机信息 - 使用
runtime.GOOS和runtime.GOARCH获取平台信息
5.2 文件系统操作
路径安全:
- 验证路径合法性
- 防止路径遍历攻击
- 限制操作范围(可选)
错误处理:
- 文件不存在
- 权限不足
- 路径无效
文件编码:
- 文本文件使用 UTF-8
- 二进制文件提示用户
5.3 跨平台兼容
- Windows:使用
os/exec执行系统命令 - Linux/Mac:使用相应的系统调用
- 路径分隔符:使用
filepath.Join处理
6. 文件结构
go-desk/
├── internal/
│ ├── system/
│ │ └── system.go # 系统信息获取
│ └── filesystem/
│ └── fs.go # 文件系统操作
├── app.go # 添加系统调用方法
└── frontend/src/
└── components/
├── SystemInfo.vue # 系统信息组件
└── FileSystem.vue # 文件系统组件
7. 安全考虑
- 路径验证:防止路径遍历攻击
- 权限检查:确保有足够的权限执行操作
- 操作限制:限制危险操作(如删除系统文件)
- 输入验证:验证所有用户输入
- 错误信息:不暴露敏感系统信息
8. 测试用例
8.1 系统信息测试
- 获取 CPU 信息成功
- 获取内存信息成功
- 获取磁盘信息成功
- 信息格式正确
8.2 文件系统测试
- 读取文件成功
- 写入文件成功
- 列出目录成功
- 创建目录成功
- 删除文件成功
- 路径验证有效
- 错误处理正确
9. 开发优先级
阶段一:基础系统信息
- CPU 信息获取
- 内存信息获取
- 系统基本信息
阶段二:文件系统基础操作
- 读取文件
- 列出目录
- 文件信息获取
阶段三:文件系统完整操作
- 写入文件
- 创建目录
- 删除文件/目录
阶段四:高级功能
- 磁盘信息
- 网络信息
- 环境变量
- 打开文件/目录
10. 注意事项
- 性能:系统信息获取可能较慢,考虑异步调用
- 权限:某些操作需要管理员权限
- 跨平台:不同平台的行为可能不同
- 错误处理:完善的错误提示和日志记录
下一步:根据此设计文档开始实现设备调用测试功能。