为当前设备增加保存与设备号生成 #6

Closed
opened 2026-08-06 15:56:23 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:需求
  • 父级大工单:#1
  • 所属 MVP / 版本:#2 / MVP
  • 阶段:1. UI 与工程骨架
  • 依赖:#5

要解决什么

“当前设备”组只有设备号和设备名,没有独立保存入口。用户无法提交当前客户端信息;首次保存时也没有生成设备号。

做什么 / 不做什么

  • 做:
    • 在 client/src/settings_ui.py 的“当前设备”组增加独立保存按钮;
    • 在 client/src/settings_ui_event.py 绑定保存事件;
    • 设备号为空或显示“待生成”时,根据本机系统与硬件特征生成不暴露原始特征的客户端设备号;
    • 已有设备号时原样保留,不重新生成;
    • 通过独立信号提交 device_id 和 device_name。
  • 不做:
    • 不修改 Android 设备列表的“保存”按钮及其信号;
    • 不接入 SQLite 或其他持久化实现;
    • 不读取或记录凭据;
    • 不修改 PDD 任务页面。

已确认的实现方案

  1. UI 新增 currentDeviceSaveButton,继续使用 PyQt-Fluent-Widgets 的保存图标按钮。
  2. 事件层新增 currentDeviceSaveRequested(str, str),与 Android 设备的 saveRequested(str, str) 分开。
  3. 首次点击时组合 Windows 系统标识、机器架构和硬件节点信息,使用 SHA-256 摘要生成 CLIENT-<16位十六进制>,不显示原始硬件信息。
  4. 输入框已有非占位设备号时直接复用;生成后立即回填只读设备号输入框。
  5. 忙碌状态下禁用当前设备保存按钮,防止重复提交。

预计修改:

  • client/src/settings_ui.py
  • client/src/settings_ui_event.py

验收标准

  • “当前设备”组显示独立保存按钮;
  • 首次保存时生成并回填格式正确的设备号;
  • 再次保存时设备号保持不变;
  • 保存事件发出设备号和去除首尾空格后的设备名;
  • 当前设备保存与 Android 设备保存使用不同按钮和信号;
  • 忙碌状态下当前设备保存按钮不可用;
  • 两个文件通过语法检查和离屏事件测试。

验证方式

从 client/ 执行:

C:/Python310/python.exe -m py_compile src/settings_ui.py src/settings_ui_event.py

使用离屏 Qt 创建 SettingsPage,分别验证首次保存、重复保存、已有设备号、独立信号和忙碌状态。

## 基本信息 - 类型:需求 - 父级大工单:#1 - 所属 MVP / 版本:#2 / MVP - 阶段:1. UI 与工程骨架 - 依赖:#5 ## 要解决什么 “当前设备”组只有设备号和设备名,没有独立保存入口。用户无法提交当前客户端信息;首次保存时也没有生成设备号。 ## 做什么 / 不做什么 - 做: - 在 `client/src/settings_ui.py` 的“当前设备”组增加独立保存按钮; - 在 `client/src/settings_ui_event.py` 绑定保存事件; - 设备号为空或显示“待生成”时,根据本机系统与硬件特征生成不暴露原始特征的客户端设备号; - 已有设备号时原样保留,不重新生成; - 通过独立信号提交 `device_id` 和 `device_name`。 - 不做: - 不修改 Android 设备列表的“保存”按钮及其信号; - 不接入 SQLite 或其他持久化实现; - 不读取或记录凭据; - 不修改 PDD 任务页面。 ## 已确认的实现方案 1. UI 新增 `currentDeviceSaveButton`,继续使用 PyQt-Fluent-Widgets 的保存图标按钮。 2. 事件层新增 `currentDeviceSaveRequested(str, str)`,与 Android 设备的 `saveRequested(str, str)` 分开。 3. 首次点击时组合 Windows 系统标识、机器架构和硬件节点信息,使用 SHA-256 摘要生成 `CLIENT-<16位十六进制>`,不显示原始硬件信息。 4. 输入框已有非占位设备号时直接复用;生成后立即回填只读设备号输入框。 5. 忙碌状态下禁用当前设备保存按钮,防止重复提交。 预计修改: - `client/src/settings_ui.py` - `client/src/settings_ui_event.py` ## 验收标准 - [x] “当前设备”组显示独立保存按钮; - [x] 首次保存时生成并回填格式正确的设备号; - [x] 再次保存时设备号保持不变; - [x] 保存事件发出设备号和去除首尾空格后的设备名; - [x] 当前设备保存与 Android 设备保存使用不同按钮和信号; - [x] 忙碌状态下当前设备保存按钮不可用; - [x] 两个文件通过语法检查和离屏事件测试。 ## 验证方式 从 `client/` 执行: ```powershell C:/Python310/python.exe -m py_compile src/settings_ui.py src/settings_ui_event.py ``` 使用离屏 Qt 创建 `SettingsPage`,分别验证首次保存、重复保存、已有设备号、独立信号和忙碌状态。
Author
Owner

状态:进行中。采用独立当前设备保存按钮和信号;只生成并回填设备号,不在本工单接入 SQLite。

状态:进行中。采用独立当前设备保存按钮和信号;只生成并回填设备号,不在本工单接入 SQLite。
Author
Owner

实施完成,等待用户验收

  • “当前设备”组已增加独立保存按钮;
  • 首次保存生成 CLIENT-<16位十六进制> 并回填;已有设备号保持不变;
  • 新增 currentDeviceSaveRequested(device_id, device_name),与 Android 设备保存信号分开;
  • 忙碌状态下按钮禁用;
  • 未接入 SQLite,持久化留给后续数据库工单。

验证:CURRENT_DEVICE_SAVE_OK、MAIN_WINDOW_CURRENT_DEVICE_SAVE_OK;语法检查和 git diff --check 通过。既有 PyQt5 字体目录警告不影响断言。

提交:实现 ed66390,归档 2fafa05。本地归档:docs/task/6-为当前设备增加保存与设备号生成.md。

工单保持打开,等待用户验收。

## 实施完成,等待用户验收 - “当前设备”组已增加独立保存按钮; - 首次保存生成 `CLIENT-<16位十六进制>` 并回填;已有设备号保持不变; - 新增 `currentDeviceSaveRequested(device_id, device_name)`,与 Android 设备保存信号分开; - 忙碌状态下按钮禁用; - 未接入 SQLite,持久化留给后续数据库工单。 验证:`CURRENT_DEVICE_SAVE_OK`、`MAIN_WINDOW_CURRENT_DEVICE_SAVE_OK`;语法检查和 `git diff --check` 通过。既有 PyQt5 字体目录警告不影响断言。 提交:实现 `ed66390`,归档 `2fafa05`。本地归档:`docs/task/6-为当前设备增加保存与设备号生成.md`。 工单保持打开,等待用户验收。
Author
Owner

用户已确认 PDD 任务与参数设置 UI 验收通过。本工单验收完成,现关闭。

用户已确认 PDD 任务与参数设置 UI 验收通过。本工单验收完成,现关闭。
ila closed this issue 2026-08-06 16:01:16 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#6