Private
Public Access
1
0

重构:文件系统模块化架构,优化应用启动流程

This commit is contained in:
2026-01-28 00:28:54 +08:00
parent 4a9b25a505
commit 8c577f70e7
123 changed files with 32030 additions and 967 deletions

View File

@@ -0,0 +1,247 @@
# 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 的更新机制设计思路
---
**当前阶段**:实现用户查询展示功能,修改维护功能后续考虑。