- 拆分 FileSystem.vue 为模块化组件架构 - 新增 Markdown Mermaid 图表渲染支持 - 新增 180+ 编程语言代码高亮 - 修复编辑/预览模式切换渲染问题 - 优化亮色/暗色模式主题适配 - 新增 TypeScript 类型定义
7.2 KiB
7.2 KiB
Go Desk 需求文档
文档版本:v0.1.0 创建时间:2026-01-20 维护者:JueChen 状态:已确定
1. 产品概述
1.1 产品定位
Go Desk 是基于 Wails 框架开发的桌面应用程序,用于测试验证技术栈。通过实现用户查询功能,验证以下技术能力:
- 打包和构建流程
- 前后端交互机制
- 与系统资源交互(数据库连接、文件操作等)
- 跨平台桌面应用开发
1.2 技术栈
- 后端:Go v1.25.4
- 框架:Wails v2
- 前端:Vue 3 + Arco Design Vue
- 构建工具:Vite
- 数据库:MySQL (lab_dev)
2. 功能需求
2.1 核心功能:用户查询展示
功能描述
从 MySQL 数据库 lab_dev 的 member_info 表中查询用户信息,并在桌面应用中展示。参考 lab-admin 和 lab-api 中的用户管理功能。
数据表结构
- 表名:
member_info - 主要字段:
memberid:用户ID(主键)membername:姓名account:账号contactphone:联系电话organid:所属机构IDorganname:所属机构名称(需关联查询)role:角色(需关联sys_member_role表获取角色名称)status:状态(1-正常,2-停用,3-删除)createtime:创建时间updatetime:修改时间
查询功能
- 用户列表展示(表格形式)
- 关键字搜索(支持姓名、账号、电话模糊查询)
- 状态筛选(全部/正常/停用/已删除)
- 角色筛选(需关联查询角色表)
- 机构筛选(需关联查询机构表)
- 分页显示
- 排序功能(按创建时间、用户ID等)
展示字段
- 编号(memberid)
- 姓名(membername)
- 账号(account)
- 联系电话(contactphone)
- 所属机构(organname)
- 角色(角色名称,需关联查询)
- 状态(状态标签显示)
- 创建时间(createtime)
- 修改时间(updatetime)
界面要求
- 使用 Arco Design Vue 组件库
- 查询表单(关键字、状态、角色、机构筛选)
- 数据表格展示
- 分页组件
- 状态标签(正常-绿色,停用-橙色,删除-灰色)
2.2 基础功能
- 应用启动和窗口管理
- 前后端通信机制
- 数据库连接(MySQL lab_dev)
- 错误处理和日志记录
- 数据库连接配置管理
2.3 界面需求
- 主界面布局(查询区域 + 表格区域)
- 使用 Arco 基础样式,避免过度自定义
- 响应式布局适配
3. 非功能需求
3.1 性能要求
- 启动时间:< 3秒
- 查询响应:< 500ms
- 内存占用:< 200MB
3.2 兼容性要求
- Windows 10/11(优先)
- macOS(后续考虑)
- Linux(后续考虑)
3.3 用户体验要求
- 界面简洁易用
- 查询操作流畅
- 错误提示友好
- 加载状态提示
4. 数据需求
4.1 数据库连接
- 数据库:MySQL
- 数据库名:lab_dev
- 连接信息:
- Host: localhost
- Port: 3306
- User: root
- Password: 123456
- 连接池配置:
- MaxOpenConns: 25
- MaxIdleConns: 5
- ConnMaxLifetime: 300秒
4.2 数据查询
- 直接查询
member_info表 - 关联查询机构表获取机构名称
- 关联查询
sys_member_role表获取角色信息 - 支持分页查询(limit/offset)
- 支持排序(按字段排序)
4.3 数据交互
- 前端通过
window.go.main调用 Go 方法 - Go 方法返回 JSON 格式数据
- 查询参数:关键字、状态、角色、机构、分页信息
- 返回数据:用户列表、总数
5. 开发优先级
阶段一:最小可用版本(MVP)
- 项目初始化和框架搭建
- 数据库连接配置
- Go 后端:用户查询接口
- 前端:用户列表展示
- 基础查询功能(关键字搜索)
阶段二:功能完善
- 筛选功能(状态、角色、机构)
- 分页功能
- 排序功能
- 关联查询(机构名称、角色名称)
- 界面优化
阶段三:增强功能(后续考虑)
- 用户修改功能
- 用户新增功能
- 用户删除功能
- 数据导出功能
- 性能优化
6. 技术实现要点
6.1 Go 后端
- 使用 GORM 连接 MySQL
- 定义
MemberInfo结构体(参考ops-kit/internal/model/member_info.go) - 实现查询方法,参数不超过 3 个
- 返回 JSON 格式数据
6.2 前端
- 使用 Arco Design Vue 组件
- 表格组件:
a-table - 查询表单:
a-form+a-input+a-select - 分页组件:
a-pagination
6.3 数据库查询
- 基础查询:
SELECT * FROM member_info WHERE ... - 关联查询机构:
LEFT JOIN organ_info ON member_info.organid = organ_info.organid - 关联查询角色:
LEFT JOIN sys_member_role ON member_info.memberid = sys_member_role.memberid
7. 参考实现
- 前端参考:
lab-admin/src/views/member/index.vue - 后端参考:
lab-api/src/main/java/cn/casehub/member/MemberService.java - 数据模型参考:
ops-kit/internal/model/member_info.go - 数据库连接参考:
ops-kit/internal/database/db.go
8. 项目定位说明
8.1 应用用途
测试验证技术栈 - 通过实际项目验证 Wails + Go + Arco-Vue 技术栈的可行性
8.2 目标用户
开发者自己 - 技术型验证项目,用于学习和验证技术能力
8.3 核心验证点
- 打包构建:验证 Wails 的打包和构建流程
- 前后端交互:验证 Go 后端与 Vue 前端的通信机制
- 系统资源交互:验证数据库连接、文件操作等系统资源访问能力
- 跨平台能力:验证 Windows/macOS/Linux 平台兼容性
8.4 数据来源
- 数据库:MySQL lab_dev(本地数据库)
- 数据表:member_info(用户表)
- 连接方式:直接连接,无需外部服务
8.5 离线能力
- 支持离线使用(连接本地数据库)
- 不依赖网络服务
8.6 更新机制评估
复杂度评估:中等复杂度,实现难度不高
实现方式:
-
简单方案(推荐用于验证):
- 应用启动时检查版本号(从配置文件或服务器获取)
- 提示用户有新版本,引导手动下载更新
- 复杂度:低,实现简单
-
完整方案(如需自动更新):
- 版本检查:启动时请求服务器获取最新版本信息
- 下载更新:后台下载更新包(zip/exe)
- 自动替换:下载完成后替换旧版本,重启应用
- 复杂度:中等,需要处理:
- 版本管理(版本号对比)
- 文件下载(断点续传、进度显示)
- 文件替换(Windows 需要关闭进程后替换)
- 错误处理(下载失败、替换失败等)
推荐:
- 当前阶段:暂不实现自动更新,手动更新即可
- 后续考虑:如需实现,建议使用第三方库(如
wails-updater或自行实现简单版本检查)
参考实现:
- Wails 社区有相关更新方案示例
- 可以参考 Electron 的更新机制设计思路
当前阶段:实现用户查询展示功能,修改维护功能后续考虑。