248 lines
7.3 KiB
Markdown
248 lines
7.3 KiB
Markdown
# Go Desk 需求文档
|
||
|
||
> **文档版本**:v1.0
|
||
> **创建时间**:2025-12-29
|
||
> **维护者**: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`:所属机构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 基础功能
|
||
|
||
- [x] 应用启动和窗口管理
|
||
- [x] 前后端通信机制
|
||
- [x] 数据库连接(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)
|
||
- [x] 项目初始化和框架搭建
|
||
- [ ] 数据库连接配置
|
||
- [ ] 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 的更新机制设计思路
|
||
|
||
---
|
||
|
||
**当前阶段**:实现用户查询展示功能,修改维护功能后续考虑。
|
||
|