# 176 重新采集和重新采购支持当前行兜底 - 类型:需求 - 父级大工单:#1 - 所属 MVP / 版本:#2 - 状态:已完成,待用户验收 - 日期:2026-08-12 - Gitea 工单: ## 背景与目标 原来的“重新采集”和“重新采购”只读取复选框勾选集。用户已经单击选中任务行时,仍需再次点击较小的复选框。本任务增加当前行兜底,同时保留批量勾选的明确优先级和原有采购安全门禁。 ## 最终方案 - 集中使用 `_rerun_target_task_ids()` 解析目标:存在勾选时返回全部勾选任务;没有勾选时返回当前行的稳定 `remote_task_id`。 - 只要列表存在真实任务就允许点击“重新采集”和“重新采购”;没有勾选和当前行时在底部状态区提示用户先勾选或单击一行。 - 当前行和复选框继续相互独立,重新上报和删除仍只接受勾选集。 - 事件层、批量类型过滤、Android 设备预检、确认弹窗和采购不可逆门禁没有改动。 与建单方案的实现细节差异:不需要监听每一次当前行变化来反复启停按钮。列表存在真实任务时保持按钮可用,由点击时的统一目标解析给出兜底或提示,代码更直白,也能覆盖“尚未选择当前行”的提示场景。 ## 改了哪些 - `client/src/pdd_ui.py`:增加重新执行目标解析和缺少目标提示,调整按钮启用规则及无障碍名称。 - `client/test/test_pdd_ui.py`:覆盖当前行兜底、勾选优先、缺少目标提示,以及重新上报和删除边界。 - `client/test/test_pdd_ui_event.py`:更新有真实任务时重新执行按钮可用的既有断言。 - `docs/client/05-ui-specification.md`:记录勾选优先、当前行兜底的稳定交互规则。 ## 验收结果 | 验收标准 | 结果 | |---|---| | 勾选任务时只使用勾选集 | 通过 | | 无勾选时使用当前行的稳定任务编号 | 通过 | | 无勾选且无当前行时显示明确提示 | 通过 | | 单击当前行不改变勾选状态 | 通过 | | 重新上报和删除仍只作用于勾选集 | 通过 | | 原有类型过滤、设备预检及采购安全门禁不变 | 通过 | | 占位空行不成为操作目标 | 通过 | ## 测试 - 执行的命令:在 `client` 目录执行 `$env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_ui*.py'` - 结果:68 个测试全部通过。 - 执行的命令:在 `client` 目录执行 `$env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py'` - 结果:439 个 Client 测试全部通过。 - **没验证到的部分**:未进行人工鼠标操作验收;本次没有改变真机自动化和采购执行逻辑。 ## 相关提交 - `bb7a502` feat: 重新执行支持当前行兜底 (#176)