Private
Public Access
1
0
Files
u-desk/docs/04-功能迭代/GO-DESK-1.尝试/需求.md
绝尘 a5d30684ed 重构:文件系统模块化架构,增强 Markdown 渲染
- 拆分 FileSystem.vue 为模块化组件架构
- 新增 Markdown Mermaid 图表渲染支持
- 新增 180+ 编程语言代码高亮
- 修复编辑/预览模式切换渲染问题
- 优化亮色/暗色模式主题适配
- 新增 TypeScript 类型定义
2026-02-04 03:32:46 +08:00

7.2 KiB
Raw Blame History

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_devmember_info 表中查询用户信息,并在桌面应用中展示。参考 lab-adminlab-api 中的用户管理功能。

数据表结构

  • 表名member_info
  • 主要字段
    • memberid用户ID主键
    • membername:姓名
    • account:账号
    • contactphone:联系电话
    • organid所属机构ID
    • organname:所属机构名称(需关联查询)
    • 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 核心验证点

  1. 打包构建:验证 Wails 的打包和构建流程
  2. 前后端交互:验证 Go 后端与 Vue 前端的通信机制
  3. 系统资源交互:验证数据库连接、文件操作等系统资源访问能力
  4. 跨平台能力:验证 Windows/macOS/Linux 平台兼容性

8.4 数据来源

  • 数据库MySQL lab_dev本地数据库
  • 数据表member_info用户表
  • 连接方式:直接连接,无需外部服务

8.5 离线能力

  • 支持离线使用(连接本地数据库)
  • 不依赖网络服务

8.6 更新机制评估

复杂度评估:中等复杂度,实现难度不高

实现方式

  1. 简单方案(推荐用于验证):

    • 应用启动时检查版本号(从配置文件或服务器获取)
    • 提示用户有新版本,引导手动下载更新
    • 复杂度:低,实现简单
  2. 完整方案(如需自动更新):

    • 版本检查:启动时请求服务器获取最新版本信息
    • 下载更新后台下载更新包zip/exe
    • 自动替换:下载完成后替换旧版本,重启应用
    • 复杂度:中等,需要处理:
      • 版本管理(版本号对比)
      • 文件下载(断点续传、进度显示)
      • 文件替换Windows 需要关闭进程后替换)
      • 错误处理(下载失败、替换失败等)

推荐

  • 当前阶段:暂不实现自动更新,手动更新即可
  • 后续考虑:如需实现,建议使用第三方库(如 wails-updater 或自行实现简单版本检查)

参考实现

  • Wails 社区有相关更新方案示例
  • 可以参考 Electron 的更新机制设计思路

当前阶段:实现用户查询展示功能,修改维护功能后续考虑。