# 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`：所属机构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 的更新机制设计思路

---

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

