任务详情字段支持双击复制 #145

Closed
opened 2026-08-24 11:27:09 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:需求
  • 父级大工单:#1
  • 所属 MVP / 版本:#2
  • 阶段:PDD 任务详情交互

要解决什么

任务详情窗口中的商品标题、商品编号、商品链接、店铺名等内容目前只是只读 Label,采购人员需要手工拖选,不能通过双击快速复制完整字段值。

做什么 / 不做什么

  • 做:双击详情中的字段值时,把该字段的完整内容复制到 Windows 剪贴板。
  • 做:字段值仍可用鼠标选择,并支持键盘选择与 Ctrl+C。
  • 做:窗口内显示简短中文反馈,说明复制了哪个字段。
  • 做:颜色复制颜色名称,价格单独复制;尺码复制尺码文字。
  • 做:为可复制内容提供工具提示和无障碍说明。
  • 不做:字段名称不参与复制;商品链接只复制,不自动打开。
  • 不做:不修改数据库、Admin 接口、任务数据、采集采购和下单流程。
  • 不做:不增加第三方依赖,不修改 PyQt5 技术栈。

已确认的实现方案

  • 在 client/src/task_detail_view.py 新增小型 CopyableBodyLabel,继承现有 Fluent BodyLabel。
  • 统一开启文本选择,并在双击时通过 QApplication.clipboard() 复制完整文本。
  • 控件发出复制成功信号,由详情窗口底部的状态文字统一反馈,避免每个控件自行弹窗。
  • 基础信息、采集信息、最近错误、颜色名称/价格和尺码使用该控件;标题和字段名称保持普通 Label。
  • 在 client/test/test_task_detail_view.py 覆盖双击复制、键盘选择能力和反馈文字。
  • 更新 docs/client/05-ui-specification.md。

预计修改文件:

  • client/src/task_detail_view.py
  • client/test/test_task_detail_view.py
  • docs/client/05-ui-specification.md

验收标准

  • 双击商品标题、编号、链接、店铺名等字段值会复制完整内容。
  • 颜色名称、颜色价格和尺码可以分别复制。
  • 字段名称和章节标题不会被误复制。
  • 复制成功后窗口内显示明确、短暂且不阻断操作的中文反馈。
  • 字段值可以用鼠标或键盘选择,并支持 Ctrl+C。
  • 商品链接不会因复制而打开浏览器。
  • 空值和“未采集”文字复制时不会报错。
  • PyQt5 离屏测试及 Client 全量测试通过。
  • 不修改数据库、Admin、自动化和采购安全逻辑。

验证方式

从 client/ 目录执行:

$env:QT_QPA_PLATFORM="offscreen"
C:/Python310/python.exe -m unittest discover -s test -p "test_task_detail_view.py" -v
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"
Remove-Item Env:QT_QPA_PLATFORM

人工打开任务详情,分别双击基础信息、颜色、价格、尺码、店铺和商品链接,检查剪贴板与反馈文字。

风险和回退

  • 双击不能成为唯一入口,因此同时保留标准文本选择和 Ctrl+C。
  • 复制反馈只更新窗口内状态,不弹模态窗口、不抢夺焦点。
  • 可整体回退本工单提交,数据和接口不受影响。
## 基本信息 - 类型:需求 - 父级大工单:#1 - 所属 MVP / 版本:#2 - 阶段:PDD 任务详情交互 ## 要解决什么 任务详情窗口中的商品标题、商品编号、商品链接、店铺名等内容目前只是只读 Label,采购人员需要手工拖选,不能通过双击快速复制完整字段值。 ## 做什么 / 不做什么 - 做:双击详情中的字段值时,把该字段的完整内容复制到 Windows 剪贴板。 - 做:字段值仍可用鼠标选择,并支持键盘选择与 `Ctrl+C`。 - 做:窗口内显示简短中文反馈,说明复制了哪个字段。 - 做:颜色复制颜色名称,价格单独复制;尺码复制尺码文字。 - 做:为可复制内容提供工具提示和无障碍说明。 - 不做:字段名称不参与复制;商品链接只复制,不自动打开。 - 不做:不修改数据库、Admin 接口、任务数据、采集采购和下单流程。 - 不做:不增加第三方依赖,不修改 PyQt5 技术栈。 ## 已确认的实现方案 - 在 `client/src/task_detail_view.py` 新增小型 `CopyableBodyLabel`,继承现有 Fluent `BodyLabel`。 - 统一开启文本选择,并在双击时通过 `QApplication.clipboard()` 复制完整文本。 - 控件发出复制成功信号,由详情窗口底部的状态文字统一反馈,避免每个控件自行弹窗。 - 基础信息、采集信息、最近错误、颜色名称/价格和尺码使用该控件;标题和字段名称保持普通 Label。 - 在 `client/test/test_task_detail_view.py` 覆盖双击复制、键盘选择能力和反馈文字。 - 更新 `docs/client/05-ui-specification.md`。 预计修改文件: - `client/src/task_detail_view.py` - `client/test/test_task_detail_view.py` - `docs/client/05-ui-specification.md` ## 验收标准 - [x] 双击商品标题、编号、链接、店铺名等字段值会复制完整内容。 - [x] 颜色名称、颜色价格和尺码可以分别复制。 - [x] 字段名称和章节标题不会被误复制。 - [x] 复制成功后窗口内显示明确、短暂且不阻断操作的中文反馈。 - [x] 字段值可以用鼠标或键盘选择,并支持 `Ctrl+C`。 - [x] 商品链接不会因复制而打开浏览器。 - [x] 空值和“未采集”文字复制时不会报错。 - [x] PyQt5 离屏测试及 Client 全量测试通过。 - [x] 不修改数据库、Admin、自动化和采购安全逻辑。 ## 验证方式 从 `client/` 目录执行: ```powershell $env:QT_QPA_PLATFORM="offscreen" C:/Python310/python.exe -m unittest discover -s test -p "test_task_detail_view.py" -v C:/Python310/python.exe -m unittest discover -s test -p "test_*.py" Remove-Item Env:QT_QPA_PLATFORM ``` 人工打开任务详情,分别双击基础信息、颜色、价格、尺码、店铺和商品链接,检查剪贴板与反馈文字。 ## 风险和回退 - 双击不能成为唯一入口,因此同时保留标准文本选择和 `Ctrl+C`。 - 复制反馈只更新窗口内状态,不弹模态窗口、不抢夺焦点。 - 可整体回退本工单提交,数据和接口不受影响。
Author
Owner

实施完成,待用户验收

已完成:

  • 任务详情字段值支持双击复制完整内容;
  • 字段获得焦点后可按 Ctrl+C 复制,并保留鼠标/键盘文本选择;
  • 颜色名称、颜色价格和尺码分别复制;
  • 底部显示“已复制:字段名”,2 秒后恢复提示;
  • 商品链接只复制,不打开浏览器;
  • 字段名称和章节标题不参与复制。

验证:

  • python -m py_compile src/task_detail_view.py:通过;
  • 任务详情离屏测试:8 项通过;
  • Client 全量测试:379 项通过。

提交:07c5a85
归档:docs/task/145-任务详情字段支持双击复制.md
归档提交:045ee40

未验证:Windows 有界面环境逐项人工双击、Narrator 播报。当前状态:待验收,工单保持开启。

## 实施完成,待用户验收 已完成: - 任务详情字段值支持双击复制完整内容; - 字段获得焦点后可按 `Ctrl+C` 复制,并保留鼠标/键盘文本选择; - 颜色名称、颜色价格和尺码分别复制; - 底部显示“已复制:字段名”,2 秒后恢复提示; - 商品链接只复制,不打开浏览器; - 字段名称和章节标题不参与复制。 验证: - `python -m py_compile src/task_detail_view.py`:通过; - 任务详情离屏测试:8 项通过; - Client 全量测试:379 项通过。 提交:`07c5a85` 归档:`docs/task/145-任务详情字段支持双击复制.md` 归档提交:`045ee40` 未验证:Windows 有界面环境逐项人工双击、Narrator 播报。当前状态:待验收,工单保持开启。
Author
Owner

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:ad44f83。现关闭工单。

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:`ad44f83`。现关闭工单。
ila closed this issue 2026-08-24 11:46:26 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/cmautobuy#145