# BlueCard SSLink 一键获取工具 — Windows 图形化程序 PRD

**版本**: v1.0  
**日期**: 2026-04-30  
**状态**: Draft  
**产品负责人**: 蓝卡云维护平台团队  

---

## 目录

1. [产品概述](#1-产品概述)
2. [目标用户](#2-目标用户)
3. [功能需求列表](#3-功能需求列表)
4. [UI 设计建议](#4-ui-设计建议)
5. [推荐技术选型及理由](#5-推荐技术选型及理由)
6. [API 接口集成方案](#6-api-接口集成方案)
7. [数据流与核心业务流程](#7-数据流与核心业务流程)
8. [错误处理与边界情况](#8-错误处理与边界情况)
9. [开发周期估算](#9-开发周期估算)
10. [验收标准](#10-验收标准)
11. [附录](#11-附录)

---

## 1. 产品概述

### 1.1 产品背景

BlueCard 云维护平台提供 SSLink 一键远程连接功能，用于通过 SocksCap64 代理访问用户现场的嵌入式设备（蓝卡设备）。目前已有成熟的 Linux 命令行版本（`get_sslink.sh`），但 Windows 用户缺乏便捷的图形化操作界面。本产品即为 Windows 环境下开发的图形化替代方案。

### 1.2 产品定位

一款轻量级、开箱即用的 Windows 桌面工具，通过图形界面调取 BlueCard 后端 API，实现设备搜索、远程连接建立、SSLink 连接串生成与复制的一站式操作。

### 1.3 核心价值

- **降低使用门槛**：运维人员无需记忆命令行参数，点点鼠标即可获取 SSLink
- **提升效率**：模糊搜索、自动连接、一键复制，3 步完成操作
- **统一体验**：中文界面，与 Linux 脚本功能对等，并增加可视化交互优势

### 1.4 非功能目标

- **启动速度**：冷启动 ≤ 3 秒
- **内存占用**：空闲状态 ≤ 80MB
- **打包体积**：最终分发包 ≤ 50MB（可考虑 UPX 压缩）
- **兼容性**：支持 Windows 10 / Windows 11（x64）
- **无运行时依赖**：打包为单一 exe，用户双击即用

---

## 2. 目标用户

| 用户角色 | 描述 | 典型场景 |
|---------|------|---------|
| 现场运维工程师 | 负责蓝卡设备现场部署与维护 | 到达客户现场，需要快速远程连接到目标设备进行调试 |
| 远程技术支持 | 在办公室远程维护多地设备 | 接到报修工单，搜索设备号并建立远程连接 |
| 售后/实施人员 | 设备上线后配置与验收 | 批量检查设备在线状态，逐个建立远程通道 |

**用户特征**：
- 非专业 IT 人员居多，习惯图形界面
- 主要使用 Windows 系统
- 需要快速、可靠地拿到 SSLink 连接串
- 对命令行有抵触或不熟练

---

## 3. 功能需求列表

### 3.1 核心功能（P0 — Must Have）

| ID | 功能 | 描述 | 优先级 |
|----|------|------|--------|
| F-01 | 设备模糊搜索 | 用户在输入框中输入设备号/设备名称关键字，回车或点击"搜索"按钮触发 API 搜索 | P0 |
| F-02 | 设备列表展示 | 以表格形式展示匹配结果：序号、设备号、设备名称、状态（在线/离线）、远程状态、设备 IP | P0 |
| F-03 | 多设备选择弹窗 | 当搜索结果匹配多个设备时，弹出列表窗口供用户选择确认 | P0 |
| F-04 | 设备详情展示 | 选定设备后展示完整信息：设备号、名称、状态、远程状态、操作人、设备 IP、代理端口 | P0 |
| F-05 | SSLink 生成与展示 | 成功建立远程连接后，生成完整 SSLink 字符串，清晰展示在界面中 | P0 |
| F-06 | 参数详情展示 | 分解展示 SSLink 的各个参数：协议、地址、端口、密码、加密方式 | P0 |
| F-07 | 一键复制 SSLink | 点击"复制"按钮将完整 SSLink 字符串复制到 Windows 剪贴板 | P0 |
| F-08 | 登录认证 | 启动时自动使用预设账号（lhj）登录 BlueCard 平台，获取会话 Cookie | P0 |
| F-09 | 自动建立远程连接 | 选定设备后自动检测远程状态，如未远程则发起远程连接请求并等待建立 | P0 |
| F-10 | 连接状态轮询 | 发起远程连接后轮询设备状态，等待端口分配完成 | P0 |
| F-11 | 错误提示与重试 | 操作失败时提供清晰的错误信息，并支持重试 | P0 |

### 3.2 增强功能（P1 — Should Have）

| ID | 功能 | 描述 | 优先级 |
|----|------|------|--------|
| F-12 | 登录状态持久化 | 保存登录会话，程序重启后自动恢复（Cookie 文件持久化） | P1 |
| F-13 | 操作日志面板 | 在界面底部显示操作日志（时间戳+日志级别+消息），方便排查问题 | P1 |
| F-14 | 连接超时自动处理 | 远程连接等待超时（默认 15 秒）后给出明确提示，并告知用户可选操作 | P1 |
| F-15 | 设备离线提示 | 选中的设备为离线状态时，明确提示无法连接并给出建议 | P1 |
| F-16 | 加载状态指示 | API 请求中显示加载动画或进度条，避免用户重复操作 | P1 |

### 3.3 可选功能（P2 — Nice to Have）

| ID | 功能 | 描述 | 优先级 |
|----|------|------|--------|
| F-17 | 默认设备号快速搜索 | 启动时默认搜索最近一次使用的设备号（本地配置记忆） | P2 |
| F-18 | 历史记录 | 保存最近使用的 10 个设备号，支持下拉快速选择 | P2 |
| F-19 | 主题切换 | 支持浅色/深色主题切换 | P2 |
| F-20 | 自动更新 | 检测新版本并提示用户下载更新 | P2 |
| F-21 | 导出日志 | 将操作日志导出为文本文件，便于问题上报 | P2 |
| F-22 | 批量操作 | 支持批量建立多个设备的远程连接（同一平台可复用 session） | P2 |
| F-23 | 非交互模式快捷入口 | 命令行参数支持 `winslink.exe -s <设备号>` 直接获取并自动复制到剪贴板 | P2 |
| F-24 | 密码修改 | 在设置页面支持修改登录密码（默认为 1） | P2 |

---

## 4. UI 设计建议

### 4.1 整体布局

采用 **单窗口 + 卡片分区** 设计，窗口固定大小（建议 800×600），不可缩放（简化布局）或支持最小缩放（≥640×480）。

```
┌────────────────────────────────────────────────┐
│  🔗 蓝卡云 · SSLink 一键获取工具     [—][□][×]  │  ← 标题栏
├────────────────────────────────────────────────┤
│  搜索区                                        │
│  ┌──────────────────────────────────┐ [搜索]  │  ← 输入框 + 按钮
│  │ 请输入设备号或设备名称...        │          │
│  └──────────────────────────────────┘          │
├────────────────────────────────────────────────┤
│  设备信息 (结果展示区)                         │
│  ┌────────────────────────────────────────┐   │
│  │  设备号: 1603805001                     │   │  ← 卡片式信息展示
│  │  名称:   靖江-JJ-02                     │   │
│  │  状态:   ● 在线   远程状态: ● 已远程   │   │
│  │  设备IP: 192.168.1.100  代理端口: 12345│   │
│  └────────────────────────────────────────┘   │
├────────────────────────────────────────────────┤
│  SSLink 结果                                  │
│  ┌────────────────────────────────────────┐   │
│  │ sslink:SocksCap64 -i1.2.3.4 -p12345...│   │  ← SSLink 完整串
│  │ ┌──────────────────────────────────┐   │   │
│  │ │ 协议: SocksCap64  地址: 1.2.3.4  │   │   │  ← 参数详情
│  │ │ 端口: 12345      密码: 123456    │   │   │
│  │ │ 加密: chacha20-ietf-poly1305     │   │   │
│  │ └──────────────────────────────────┘   │   │
│  │                   [📋 复制 SSLink]     │   │  ← 一键复制按钮
│  └────────────────────────────────────────┘   │
├────────────────────────────────────────────────┤
│  操作日志                              [清空] │  ← 日志面板
│  │ [12:00:01] [INFO] 登录成功 ✅              │
│  │ [12:00:02] [INFO] 搜索设备...              │
│  │ [12:00:03] [INFO] 远程连接已建立 ✅        │
├────────────────────────────────────────────────┤
│  状态栏: 当前账号: lhj | 已登录 | 就绪       │  ← 底部状态
└────────────────────────────────────────────────┘
```

### 4.2 多设备选择弹窗

当搜索结果 ≥ 2 个时，弹出独立选择窗口，支持表格展示和点击行选择：

```
┌──────────────────────────────────────────────┐
│  🔍 选择设备 — 共找到 3 个匹配结果    [×]   │
├──────────────────────────────────────────────┤
│  ┌────┬────────────────┬────────────────┬───┐│
│  │ #  │ 设备号          │ 名称           │IP ││  ← 可点击行
│  ├────┼────────────────┼────────────────┼───┤│
│  │ 1  │ 1603805001     │ 靖江-JJ-02     │...││
│  │ 2  │ 1603805002     │ 靖江-JJ-03     │...││
│  │ 3  │ 1603805003     │ 南京-NJ-01     │...││
│  └────┴────────────────┴────────────────┴───┘│
│                                              │
│              [确认选择]  [取消]              │
└──────────────────────────────────────────────┘
```

### 4.3 状态与颜色规范

| 状态 | 颜色 | 图标 | 使用场景 |
|------|------|------|---------|
| 在线 | 绿色 (#27AE60) | ● | 设备状态、成功提示 |
| 离线 | 红色 (#E74C3C) | ● | 设备状态、错误提示 |
| 已远程 | 绿色 (#27AE60) | ● | 远程状态 |
| 未远程 | 橙色 (#F39C12) | ● | 远程状态 |
| 加载中 | 蓝色 (#3498DB) | ⟳ | 请求进行中 |
| 中性 | 灰色 (#7F8C8D) | — | 普通信息 |

### 4.4 交互反馈

- **搜索**: 输入框支持 Enter 快捷键触发搜索
- **加载**: 按钮点击后变为禁用状态并显示 "搜索中..." / "连接中..."，防止重复提交
- **选择**: 多设备弹窗支持双击行确认、键盘上下键 + Enter 选择
- **复制**: 复制成功后按钮闪烁或短暂显示 "✅ 已复制" 状态
- **日志**: 自动滚动至最新日志行

---

## 5. 推荐技术选型及理由

### 方案一（推荐）：Python + tkinter + ttkbootstrap

| 技术 | 版本 | 用途 |
|------|------|------|
| Python | 3.10+ | 主语言 |
| tkinter | 内置 | GUI 框架 |
| ttkbootstrap | 1.10+ | 美化主题，支持 Material Design 风格 |
| requests | 2.28+ | HTTP API 调用 |
| pyperclip | 1.8+ | 剪贴板操作 |
| pyinstaller | 6.x | 打包为独立 exe |

**选择理由**：

| 维度 | 说明 |
|------|------|
| 开发效率 | Python 语法简洁，requests 库调用 API 代码量极小；Linux 脚本已有的 Python 解析逻辑可直接复用 |
| 跨平台一致性 | 后端逻辑与现有 Linux 脚本完全一致（相同 API、相同参数），迁移成本极低 |
| GUI 上手难度 | tkinter 是 Python 内置库，无需额外安装；ttkbootstrap 一行代码即可应用现代主题 |
| 打包与分发 | PyInstaller 可打包为单文件 exe，无需用户安装 Python 运行时 |
| 团队能力 | 假定团队有 Python 基础，学习曲线平缓 |

**项目结构**：

```
winslink/
├── main.py                  # 入口：启动 GUI 应用
├── app/
│   ├── __init__.py
│   ├── gui.py               # 主窗口布局与交互逻辑
│   ├── dialogs.py           # 弹窗（多设备选择、设置等）
│   ├── styles.py            # 主题样式与颜色定义
│   └── widgets.py           # 自定义组件（日志面板、卡片等）
├── core/
│   ├── __init__.py
│   ├── api_client.py        # 封装所有 API 调用（登录、搜索、获取配置、远程连接）
│   ├── sslink_builder.py    # SSLink 字符串构建与参数解析
│   └── session.py           # Cookie 会话管理与持久化
├── utils/
│   ├── __init__.py
│   ├── logger.py            # 日志工具类（支持 GUI 实时回显 + 文件日志）
│   └── clipboard.py         # 剪贴板操作封装
├── config/
│   └── settings.py          # 配置常量（URL、账号、超时等）
├── resources/
│   └── icon.ico             # 应用图标
└── build/
    └── spec/                # PyInstaller 打包配置
```

### 方案二（备选）：C# WinForms (.NET 6+)

| 技术 | 用途 |
|------|------|
| C# + WinForms | GUI 框架，官方支持，Windows 原生 |
| HttpClient | HTTP API 调用 |
| System.Windows.Clipboard | 剪贴板操作 |

**优势**：原生 Windows 风格，无需打包运行时，性能更好。  
**劣势**：开发效率低于 Python；需要额外处理 JSON 序列化；与现有 Linux 脚本无代码复用可能。

### 方案三（备选）：Python + PyQt5

**优势**：UI 更现代，组件丰富（QTableView、QListWidget 等），支持 CSS 样式。  
**劣势**：打包体积较大（~60MB），学习曲线比 tkinter 陡峭，对简单场景过度设计。

---

### 推荐结论

**首选 Python + tkinter + ttkbootstrap**，理由：
1. 核心业务逻辑（API 调用、JSON 解析、SSLink 构建）与现有 Linux 脚本完全一致，可以抄写 Python 片段
2. ttkbootstrap 可以让 tkinter 程序具备现代化外观
3. 开发周期最短，1-2 天即可完成核心功能

---

## 6. API 接口集成方案

### 6.1 接口清单

| 步骤 | 接口 | 方法 | 参数 | 返回 | 说明 |
|------|------|------|------|------|------|
| 1.登录 | `/service/login2.do` | POST | `username=lhj, password1=1, verify=1` | JSON `{status:"success",...}` | 获取会话 Cookie（JSESSIONID） |
| 2.搜索 | `/service/device/pageLoad` | POST | `deviceSnAll={关键字}&deviceNameAll=-1&deviceStateAll=-1&page=1&rows=50` | JSON `{rows:[...], total:N}` | 模糊搜索设备列表 |
| 3.获取服务器地址 | `/service/device/getConfig` | POST | 无参数 | 纯文本 IP 地址 | 获取中转服务器 IP |
| 4.远程连接 | `/service/device/deviceLink` | POST | `deviceSn={SN}&remote_people=windows_client` | JSON `{state:"success",...}` | 发起远程连接请求 |
| 5.轮询状态（重复使用搜索接口） | `/service/device/pageLoad` | POST | `deviceSnAll={精确SN}&...` | JSON `{rows:[{port8080,remote,...}]}` | 查询连接建立进度 |

### 6.2 会话管理

```
登录 POST /login2.do
  ↓
获取 Cookie: JSESSIONID=xxx
  ↓
所有后续请求携带 Cookie（requests 的 Session 对象自动管理）
  ↓
如需持久化 → 保存 Cookie 到本地文件（cookiejar）
```

### 6.3 重试策略

与现有 Linux 脚本保持一致：

| 操作 | 最大重试次数 | 重试间隔 | 说明 |
|------|------------|---------|------|
| 登录 | 3 次 | 3 秒 | 网络波动时自动重试 |
| 远程连接 | 3 次 | 3 秒 | 服务端可能因并发拒绝 |
| 连接轮询 | 15 秒窗口 | 1 秒/次 | 轮询等待端口分配完成 |

### 6.4 请求头规范

所有 POST 请求统一使用：
- `Content-Type: application/x-www-form-urlencoded`
- 搜索和远程连接请求额外添加：`X-Requested-With: XMLHttpRequest`

---

## 7. 数据流与核心业务流程

### 7.1 主流程

```
用户打开程序
    │
    ▼
自动登录平台 ──失败──→ 显示错误 "登录失败，请检查网络"
    │ 成功
    ▼
显示主界面（搜索框可用）
    │
用户输入设备号/名称，点击"搜索"
    │
    ▼
搜索设备 ──失败──→ 显示错误 "未找到匹配设备"
    │
    ▼
解析搜索结果
    │
    ├── 0 个 → 提示 "未找到匹配设备"
    ├── 1 个 → 自动选中
    └── ≥2 个 → 弹出多设备选择窗口 → 用户选择
    │
    ▼
显示设备详情信息
    │
    ▼
获取服务器地址 ──失败──→ 显示错误
    │
    ▼
检查设备状态
    ├── 离线 → 提示 "设备离线，无法建立连接"
    └── 在线 → 继续
    │
    ▼
检查远程状态
    ├── 已远程 → 直接获取端口 → 生成 SSLink
    └── 未远程 → 发起远程连接请求
         │
         ▼
    轮询等待（最多 15 秒）
    ├── 成功 → 获取端口 → 生成 SSLink
    └── 超时 → 提示 "连接超时，请稍后重试"
    │
    ▼
展示 SSLink 完整串 + 参数详情
    │
用户点击 "复制 SSLink" → 复制到剪贴板 → 显示 "✅ 已复制"
```

### 7.2 异常流程

| 场景 | 处理方式 |
|------|---------|
| 网络不可达 | 捕获 requests.ConnectionError，提示 "无法连接服务器" + 重试按钮 |
| 登录失败（密码错误） | 显示 "认证失败，请检查账号密码" |
| Cookie 过期 | 静默重新登录后重试当前操作 |
| 搜索结果 JSON 解析失败 | 显示 "数据解析异常" + 原始响应片段供排查 |
| 设备远程连接返回非 success | 根据 state 字段显示特定错误信息 |
| 端口一直为 0 | 等待超时后提示 "连接建立超时，请稍后手动重试" |

---

## 8. 错误处理与边界情况

### 8.1 输入校验

- **搜索框**：不允许纯空格输入
- **设备号格式**：不强制校验格式，支持随意关键字模糊搜索

### 8.2 并发与状态管理

- 搜索过程中禁用搜索按钮，防止重复提交
- 连接过程中禁用设备选择操作
- 程序关闭前等待正在进行中的 API 请求完成或超时（超时 3 秒后强制退出）

### 8.3 UI 状态机

| 状态 | 搜索框 | 搜索按钮 | 获取按钮 | 复制按钮 | 说明 |
|------|--------|---------|---------|---------|------|
| 初始化 | 可用 | 可用 | 禁用 | 禁用 | 程序启动完成，等待用户输入 |
| 搜索中 | 禁用 | 禁用（显示"搜索中..."） | 禁用 | 禁用 | API 请求进行中 |
| 已选中设备 | 可用 | 可用 | 可用（显示"获取 SSLink"） | 禁用 | 等待用户点击获取 |
| 连接中 | 禁用 | 禁用 | 禁用（显示"连接中..."） | 禁用 | 远程连接建立中 |
| 获取成功 | 可用 | 可用 | 可用（显示"重新获取"） | 可用 | SSLink 已展示 |
| 错误状态 | 可用 | 可用 | 禁用 | 禁用 | 显示错误提示 |

### 8.4 线程模型

- 主线程：UI 渲染与事件响应
- 工作线程（后台线程）：API 请求、轮询
- 使用 `threading.Thread` + 队列回调更新 UI
- 避免在非主线程中直接操作 tkinter 组件，通过 `after()` 方法安全更新

---

## 9. 开发周期估算

| 阶段 | 任务 | 工时 | 产出 |
|------|------|------|------|
| **Phase 1: 核心框架搭建 (1天)** | | | |
| 1.1 | 项目初始化、目录结构搭建 | 1h | 项目模板 |
| 1.2 | API 客户端实现（登录 + 搜索 + getConfig + 远程连接） | 4h | `api_client.py` |
| 1.3 | 会话管理与 Cookie 持久化 | 1h | `session.py` |
| 1.4 | SSLink 构建工具类 | 1h | `sslink_builder.py` |
| **Phase 2: GUI 开发 (1.5天)** | | | |
| 2.1 | 主窗口布局（搜索区 + 设备信息+ SSLink 展示 + 日志面板） | 4h | `gui.py` |
| 2.2 | 多设备选择弹窗 | 2h | `dialogs.py` |
| 2.3 | 样式与主题（ttkbootstrap 集成） | 1h | `styles.py` |
| 2.4 | 日志面板 | 1h | `widgets.py` + `logger.py` |
| **Phase 3: 逻辑集成 (1天)** | | | |
| 3.1 | 搜索→选择→获取→展示 全流程联调 | 4h | 完整功能流 |
| 3.2 | 线程管理、UI 状态切换 | 2h | 工作线程 |
| 3.3 | 错误处理与边界情况 | 2h | 异常处理 |
| **Phase 4: 测试与打包 (1天)** | | | |
| 4.1 | 功能测试（正常流程 + 异常流程） | 3h | 测试报告 |
| 4.2 | PyInstaller 打包配置 | 2h | `winslink.exe` |
| 4.3 | 兼容性测试（Win10 / Win11） | 2h | 兼容性确认 |
| 4.4 | 文档编写（使用说明 + README） | 1h | 文档 |

### 总计：约 4.5 人日（约 1 周内交付）

**说明**：
- 以上估算是针对熟悉 Python + tkinter 的全栈开发者
- Phase 1 和 Phase 2 可并行开发（前后端分离）
- 如需添加 P2 功能，每个功能额外增加 0.5~1 天

---

## 10. 验收标准

### 10.1 功能验收

| # | 验收项 | 预期结果 | 验收方式 |
|---|--------|---------|---------|
| AC-01 | 程序启动后自动登录 | 底部状态栏显示"已登录" | 观察 |
| AC-02 | 输入完整设备号搜索 | 直接展示该设备详情 | 操作验证 |
| AC-03 | 输入模糊关键字搜索（匹配多个） | 弹出多设备选择窗口 | 操作验证 |
| AC-04 | 输入不存在的设备号搜索 | 显示"未找到匹配设备" | 操作验证 |
| AC-05 | 选中设备后点击"获取 SSLink" | 显示 SSLink 完整串及参数详情 | 操作验证 |
| AC-06 | 设备在线但未远程时自动建立连接 | 日志显示连接过程，最终获取 SSLink | 操作验证 |
| AC-07 | 设备离线时尝试连接 | 显示"设备离线"提示 | 操作验证 |
| AC-08 | 点击"复制 SSLink" | SSLink 被复制到剪贴板，按钮显示"✅ 已复制" | 打开记事本粘贴验证 |
| AC-09 | 搜索过程中快速点击按钮 | 按钮被禁用，不会并发提交 | 操作验证 |
| AC-10 | 网络断开时操作 | 显示"无法连接服务器"错误 | 拔网线测试 |

### 10.2 非功能验收

| # | 验收项 | 标准 |
|---|--------|------|
| AC-11 | 启动时间 | 冷启动 ≤ 5 秒（含登录请求） |
| AC-12 | 打包体积 | ≤ 50MB |
| AC-13 | 内存占用 | 空闲 ≤ 100MB |
| AC-14 | Win10 / Win11 兼容性 | 在两种系统上功能正常 |
| AC-15 | 中文界面完整性 | 所有 UI 元素均为中文 |
| AC-16 | 连续操作 50 次稳定性 | 无闪退、无内存泄漏 |

### 10.3 交付物

- [ ] `winslink.exe` — 打包后的可执行文件
- [ ] `source/` — 完整源代码
- [ ] `README.md` — 使用说明（含界面截图）
- [ ] `CHANGELOG.md` — 版本变更记录
- [ ] 自动登录默认不提供修改入口（如需修改账号密码，修改 `settings.py` 后重新打包）

---

## 11. 附录

### 11.1 与 Linux 脚本功能对照表

| 功能 | Linux 脚本 | Windows 图形化程序 | 差异 |
|------|-----------|-------------------|------|
| 命令行参数 | ✅ 支持 | ❌ 不依赖 | GUI 无需参数 |
| 模糊搜索 | ✅ 支持 | ✅ 支持 | 一致 |
| 多设备选择 | ✅ 终端交互 | ✅ 弹窗 | GUI 体验更优 |
| 设备详情展示 | ✅ 终端表格 | ✅ 卡片展示 | GUI 更清晰 |
| SSLink 输出 | ✅ 终端打印 | ✅ 界面展示 | GUI 可复制 |
| 一键复制 | ✅ xclip/pbcopy/wl-copy | ✅ pyperclip | 一致 |
| 连接轮询 | ✅ 15s 循环 | ✅ 15s 轮询 | 一致 |
| 日志输出 | ✅ 终端颜色日志 | ✅ GUI 日志面板 | GUI 更直观 |
| 重试机制 | ✅ 3 次重试 | ✅ 3 次重试 | 一致 |
| 非交互模式 | ✅ --nonstop 参数 | 🔲 可选 (F-23) | GUI 环境不急需 |

### 11.2 SSLink 格式参考

```
sslink:SocksCap64 -i{server_ip} -p{port} -t6 -u -s123456 -cchacha20-ietf-poly1305 --quit

其中：
  -i         服务器地址（由 getConfig 接口获取）
  -p         代理端口（设备远程连接后分配的 port8080）
  -t6        代理类型（Socks5）
  -u         用户名认证标志
  -s         密码（固定 123456）
  -c         加密方式（固定 chacha20-ietf-poly1305）
  --quit     连接后自动退出
```

### 11.3 默认配置

```python
# settings.py
DEFAULT_DEVICE_SN = "1603805001"
BASE_URL = "http://web.bluecardservice.com/service"
USERNAME = "lhj"
PASSWORD = "1"  # 注意脚本中 password1=1, 密码实际是 "1"
VERIFY = "1"
REMOTE_PEOPLE = "windows_client"
CONNECT_WAIT_SECONDS = 15
MAX_RETRIES = 3
RETRY_DELAY = 3
POLL_INTERVAL = 1  # 轮询间隔（秒）
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
```

### 11.4 风险与缓解措施

| 风险 | 可能性 | 影响 | 缓解措施 |
|------|--------|------|---------|
| BlueCard 后端 API 变更 | 低 | 高 | 将 API 端点设为配置项，易修改 |
| 登录密码硬编码安全隐患 | 中 | 中 | 后续版本支持密码修改界面 |
| PyInstaller 打包兼容问题 | 中 | 中 | 使用虚拟环境 + 指定平台打包 |
| tkinter 在 Win10/11 缩放问题 | 中 | 低 | 使用 ttkbootstrap 处理 DPI 适配 |
| 服务器返回非标准响应 | 低 | 中 | 健壮的错误解析 + 原始响应日志 |

---

*本文档由 Hermes Agent 根据 BlueCard 云维护平台 SSLink 一键获取工具的 Linux 脚本及项目需求生成，技术细节以现有实现为准。*
