Client:重新采集和重新采购支持当前行兜底 #176

Closed
opened 2026-08-12 10:20:30 +08:00 by ila · 2 comments
Owner

1. 基本信息

  • 类型:Client UI 交互优化
  • 父级大工单:#1
  • 所属 MVP:#2
  • 阶段:PDD 任务列表操作

2. 要解决什么

当前“重新采集”和“重新采购”只能操作复选框勾选的任务。用户已经用鼠标选中一行但未勾选复选框时,按钮不可用,必须再点击较小的复选框,操作不够方便。

3. 做什么 / 不做什么

做什么

  • 有勾选任务时,只操作勾选任务。
  • 没有勾选任务时,以表格当前行为单条操作目标。
  • 没有勾选且没有有效当前行时,提示“请勾选任务或单击选择一行”。
  • “重新采集”和“重新采购”使用同一套目标选择规则。
  • 使用 remote_task_id 作为稳定身份;占位空行不能成为操作目标。
  • 单击选择行不改变复选框状态。
  • 保留现有类型过滤、确认弹窗、Android 设备预检、队列和采购不可逆安全门禁。

不做什么

  • 不改变“重新上报”“删除”的批量勾选规则。
  • 不改变数据库、Admin 接口、任务状态和 pdd_data。
  • 不让单击行直接开始任务,不改变双击/Enter 查看详情。
  • 不改变采购下单及核单流程。

4. 已确认的实现方案

预计修改:

  • client/src/pdd_ui.py:集中解析“勾选优先、当前行兜底”的重新执行目标;当前行变化时更新两个按钮的可用状态。
  • client/test/test_pdd_ui.py:覆盖当前行兜底、勾选优先、占位行和不改变勾选状态。
  • docs/client/05-ui-specification.md:记录稳定交互规则。

事件层继续接收稳定任务编号集合,避免把表格行号传给业务层。

5. 验收标准

  • 勾选一条或多条时,重新采集/采购只使用勾选集。
  • 无勾选但存在有效当前行时,可以重新采集/采购该行。
  • 无勾选且无有效当前行时,不启动任务,并给出明确提示。
  • 当前行是另一任务类型时,沿用现有类型过滤提示,不误执行。
  • 单击当前行不会自动勾选复选框。
  • 占位空行不会成为任务目标。
  • 重新上报、删除仍只作用于勾选集。
  • 现有确认、设备预检和采购安全门禁不变。

6. 验证方式

在 client 目录执行:

$env:QT_QPA_PLATFORM='offscreen'
C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_ui*.py'

预期:相关 UI 与事件测试全部通过。

风险和回退

  • 风险:采购按钮若错误选择了非当前任务,可能触发错误采购队列。
  • 控制:勾选集始终优先,目标只传稳定任务编号,现有确认弹窗和不可逆门禁保持不变。
  • 回退:恢复重新执行按钮只读取复选框勾选集的原行为。
## 1. 基本信息 - 类型:Client UI 交互优化 - 父级大工单:#1 - 所属 MVP:#2 - 阶段:PDD 任务列表操作 ## 2. 要解决什么 当前“重新采集”和“重新采购”只能操作复选框勾选的任务。用户已经用鼠标选中一行但未勾选复选框时,按钮不可用,必须再点击较小的复选框,操作不够方便。 ## 3. 做什么 / 不做什么 ### 做什么 - 有勾选任务时,只操作勾选任务。 - 没有勾选任务时,以表格当前行为单条操作目标。 - 没有勾选且没有有效当前行时,提示“请勾选任务或单击选择一行”。 - “重新采集”和“重新采购”使用同一套目标选择规则。 - 使用 `remote_task_id` 作为稳定身份;占位空行不能成为操作目标。 - 单击选择行不改变复选框状态。 - 保留现有类型过滤、确认弹窗、Android 设备预检、队列和采购不可逆安全门禁。 ### 不做什么 - 不改变“重新上报”“删除”的批量勾选规则。 - 不改变数据库、Admin 接口、任务状态和 `pdd_data`。 - 不让单击行直接开始任务,不改变双击/Enter 查看详情。 - 不改变采购下单及核单流程。 ## 4. 已确认的实现方案 预计修改: - `client/src/pdd_ui.py`:集中解析“勾选优先、当前行兜底”的重新执行目标;当前行变化时更新两个按钮的可用状态。 - `client/test/test_pdd_ui.py`:覆盖当前行兜底、勾选优先、占位行和不改变勾选状态。 - `docs/client/05-ui-specification.md`:记录稳定交互规则。 事件层继续接收稳定任务编号集合,避免把表格行号传给业务层。 ## 5. 验收标准 - [x] 勾选一条或多条时,重新采集/采购只使用勾选集。 - [x] 无勾选但存在有效当前行时,可以重新采集/采购该行。 - [x] 无勾选且无有效当前行时,不启动任务,并给出明确提示。 - [x] 当前行是另一任务类型时,沿用现有类型过滤提示,不误执行。 - [x] 单击当前行不会自动勾选复选框。 - [x] 占位空行不会成为任务目标。 - [x] 重新上报、删除仍只作用于勾选集。 - [x] 现有确认、设备预检和采购安全门禁不变。 ## 6. 验证方式 在 `client` 目录执行: ```powershell $env:QT_QPA_PLATFORM='offscreen' C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_ui*.py' ``` 预期:相关 UI 与事件测试全部通过。 ## 风险和回退 - 风险:采购按钮若错误选择了非当前任务,可能触发错误采购队列。 - 控制:勾选集始终优先,目标只传稳定任务编号,现有确认弹窗和不可逆门禁保持不变。 - 回退:恢复重新执行按钮只读取复选框勾选集的原行为。
Author
Owner

实施完成,待用户验收

最终实现

  • 勾选集优先;没有勾选时使用当前行的稳定 remote_task_id。
  • 没有勾选和当前行时提示“请勾选任务或单击选择一行”。
  • 重新上报和删除仍只使用勾选集。
  • 现有类型过滤、Android 设备预检、确认弹窗、队列和采购不可逆门禁未改动。

验证结果

  • PDD UI/事件回归:68 个测试通过。
  • Client 全量回归:439 个测试通过。
  • 未进行人工鼠标操作验收;未改变真机自动化流程。

提交与归档

  • 实现提交:bb7a502
  • 归档提交:e72462b
  • 归档:docs/task/176-重新执行支持当前行兜底.md

状态:已完成,等待用户验收。

## 实施完成,待用户验收 ### 最终实现 - 勾选集优先;没有勾选时使用当前行的稳定 `remote_task_id`。 - 没有勾选和当前行时提示“请勾选任务或单击选择一行”。 - 重新上报和删除仍只使用勾选集。 - 现有类型过滤、Android 设备预检、确认弹窗、队列和采购不可逆门禁未改动。 ### 验证结果 - PDD UI/事件回归:68 个测试通过。 - Client 全量回归:439 个测试通过。 - 未进行人工鼠标操作验收;未改变真机自动化流程。 ### 提交与归档 - 实现提交:`bb7a502` - 归档提交:`e72462b` - 归档:`docs/task/176-重新执行支持当前行兜底.md` 状态:已完成,等待用户验收。
Author
Owner

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

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:`ad44f83`。现关闭工单。
ila closed this issue 2026-08-13 15:58:39 +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#176