Files
windows-application/README.md

187 lines
6.2 KiB
Markdown
Raw Normal View History

# 云算力平台客户端 - Windows / Linux 桌面应用
2026-01-22 15:14:27 +08:00
基于 Flutter 开发的 Windows 桌面客户端应用,实现与云算力平台的通信、挖矿管理等功能。
## 功能特性
### 1. 主界面信息显示
主界面实时显示以下信息:
- **版本号**:从 `bin/version` 文件读取
2026-01-29 17:10:12 +08:00
- **身份信息**:从 `bin/auth` 文件读取
2026-01-22 15:14:27 +08:00
- **GPU 信息**:通过 `nvidia-smi` 命令自动检测(启动时获取一次)
- 显示 GPU索引、品牌、型号、显存大小
2026-01-22 15:14:27 +08:00
- **硬盘身份码**:通过 `wmic diskdrive get serialnumber` 命令获取
2026-01-29 17:10:12 +08:00
- **当前状态**:实时显示客户端连接状态:\n - 🔴 **离线**:未连接服务器,红色指示\n - 🟢 **在线**:已连接服务器,绿色指示\n - 🟡 **挖矿中**:租约挖矿进行中,黄色指示\n - 🔵 **持续挖矿中**:持续挖矿任务进行中,蓝色指示\n
2026-01-22 15:14:27 +08:00
### 2. 版本更新功能
- 自动检查远程版本(从配置的 `update_url` 获取)
- 发现新版本时显示更新提示卡片
- 支持一键下载并更新客户端
- 更新完成后在下次启动时自动应用
### 3. 主要功能按钮
#### 3.1 查看日志
- 实时动态显示客户端日志
- 支持自动滚动和手动滚动
- 可刷新和清空日志
- 日志文件位置:`bin/logs/client.log`
#### 3.2 查看/修改配置
- **表单式配置编辑**:采用输入框形式,而非直接文本编辑
- 每个配置项都有复选框,勾选后才能编辑
- 按配置节分组显示:
- 客户端配置server_url, update_url
- LolMiner 配置
- Rigel 配置
- BzMiner 配置
- 代理配置
- 持续挖矿配置
- 配置文件位置:`bin/mining.windows.conf`
- 修改后需点击保存按钮保存更改
#### 3.3 挖矿信息
- **按钮状态**:一直显示,但只有在挖矿中状态时才能点击
- 显示当前挖矿任务的详细信息:
- 币种、算法、矿池、矿池地址
- 钱包地址、矿工号
- 挖矿软件、进程ID
- 任务结束时间、剩余时间
- **实时日志显示**
- 显示挖矿软件的标准输出和错误输出
- 支持自动滚动和手动滚动
- 可清空日志
- 日志格式与外部查看日志布局相似
#### 3.4 重启
- 点击后显示确认对话框
- 重启过程中显示加载动画,禁用所有操作
- 重启完成后显示成功/失败结果提示
- 自动重新初始化所有服务
#### 3.5 退出程序
- 点击后显示确认对话框
- 确认后安全退出应用程序
## 技术架构
### 核心模块
- **ClientCore**TCP 通信核心,处理与服务器的连接、心跳、消息收发
- **MiningManager**:挖矿软件管理,支持 lolminer、rigel、bzminer
- **SustainMiner**:持续挖矿管理,在无租约期间自动挖矿
- **SystemInfoService**系统信息获取GPU、硬盘序列号等
- **ConfigService**配置文件管理INI 格式)
- **UpdateService**:版本检查和更新管理
2026-01-29 17:10:12 +08:00
- **DatabaseService**:挖矿任务日志管理(基于 `bin/mining_tasks.log` 的 JSON 行记录,用于保存 / 恢复当前或最近一次挖矿任务)
- **LogService**:客户端日志文件管理
2026-01-22 15:14:27 +08:00
### 数据存储
- **配置文件**`bin/mining.windows.conf`INI 格式)
- **身份文件**`bin/auth`
- **版本文件**`bin/version`
2026-01-29 17:10:12 +08:00
- **挖矿任务日志**`bin/mining_tasks.log`JSON 行格式,仅记录当前 / 最近任务,用于断线恢复)
2026-01-22 15:14:27 +08:00
- **日志文件**`bin/logs/client.log`
### 通信协议
- **协议**TCP Socket
- **消息格式**JSON每行一条消息
- **心跳机制**:服务器发送 ping客户端回复 pong
- **身份认证**:格式为 `身份信息::硬盘身份码`
## 配置文件说明
配置文件 `bin/mining.windows.conf` 采用 INI 格式,包含以下配置节:
### [client]
- `server_url`服务器地址RabbitMQ 通信目标)
- `update_url`:更新服务器地址(用于版本检查和更新)
### [lolminer] / [rigel] / [bzminer]
- `path`:挖矿软件路径(使用双反斜杠 `\\`
### [proxy]
- `proxy`是否启用代理true/false
### [sustain]
- `enabled`:是否启用持续挖矿
- `algo`:算法
- `coin`:币种
- `miner`:挖矿软件名
- `pool_url`:矿池地址
- `wallet`:钱包地址
- `worker_id`:矿工号
- `pool_user`:矿池用户名(可选)
- `wallet_mining`:是否使用钱包挖矿
## 部署说明
### 开发环境
1. 确保已安装 Flutter SDK 并启用 Windows 桌面支持
2.`windows` 目录下运行:
```bash
flutter pub get
flutter run -d windows
```
### 发布版本
1. 构建发布版本:
```bash
flutter build windows --release
```
2. 部署文件结构:
```
cloud_client_gui.exe
bin/
├── version # 版本文件(必需)
├── auth # 身份信息文件(必需)
├── mining.windows.conf # 配置文件(必需)
├── logs/
│ └── client.log # 日志文件(自动创建)
└── mining_task.db # 数据库文件(自动创建)
```
3. **重要**`bin` 文件夹必须与 `.exe` 文件在同一目录下
## 路径说明
- **开发模式**:程序会自动检测并定位到 `windows/bin` 目录
- **发布模式**`bin` 文件夹应与可执行文件在同一目录
- 所有文件路径都基于可执行文件所在目录自动计算
## 依赖项
主要依赖包:
- `provider`:状态管理
- `sqflite_common_ffi`SQLite 数据库Windows 桌面)
- `ini`INI 文件解析
- `http`HTTP 请求(版本更新)
- `logging`:日志系统
- `path`:路径处理
## 注意事项
1. 首次运行需要确保 `bin` 目录下存在 `version``auth` 文件
2. GPU 信息只在程序启动时获取一次,避免频繁调用系统命令
3. 配置文件修改后需要保存才能生效
4. 重启功能会重新初始化所有服务,可能需要几秒钟时间
5. 挖矿信息按钮在非挖矿状态下会显示为灰色且不可点击
## 开发说明
本项目是基于 Go 客户端功能完全重新实现的 Flutter Windows 桌面应用,实现了与 Go 版本相同的所有核心功能,包括:
- TCP 通信和心跳机制
- 挖矿软件管理
- 持续挖矿支持
- 系统信息获取
- 配置管理
- 版本更新