批量重新采集并拆分任务执行按钮 #138

Closed
opened 2026-08-11 10:29:13 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:需求
  • 父级大工单:#1
  • 所属 MVP / 版本:#2 / MVP
  • 阶段:PDD 任务批量人工执行
  • 依赖:#131、#63、#70

要解决什么

把单条“重新执行”拆成“重新采集”和“重新采购”。本工单实现勾选多条后的采集类型过滤、安全预检、确认、串行内存队列、停止和汇总。

做什么 / 不做什么

  • 做:按钮顺序为“重新上报 → 重新采集 → 重新采购 → 删除”。
  • 做:重新采集过滤采购任务,允许待执行、等待重试、已完成、失败、已取消和人工处理状态。
  • 做:跳过运行中、结果待提交、存在未发送 Outbox 或已在当前批次中的任务。
  • 做:确认框显示选中、可执行、类型过滤和安全跳过数量;每条开始前再次校验。
  • 做:同一 Android 设备线程串行执行;停止取消尚未开始任务,完成显示成功、失败、待上报、跳过和取消数量。
  • 不做:本工单不执行采购;不并发控制手机;不持久化批量队列;不改 Admin 接口、pdd_data、状态枚举和数据库结构。

怎么做

  • 修改 client/src/task_models.py、task_repository.py、pdd_ui.py、pdd_ui_event.py。
  • 增加不可变批量预检结果;Repository 一次连接完成预检并在每项执行前复核。
  • 复用现有固定设备 QObject + QThread,不从工作线程访问 QWidget。
  • 更新 Repository、UI、事件与线程生命周期测试,以及 docs/client/01-requirements.md、02-architecture.md、05-ui-specification.md、06-quality-security.md。

验收标准

  • 两个按钮在紧凑和宽布局均可见,顺序正确并有无障碍名称。
  • 混合勾选时准确显示可采集、过滤采购和安全跳过数量。
  • 仅采集任务按稳定编号串行执行,采购任务不操作手机。
  • 待执行及已确认采集终态可重做;运行中、待提交和未发送 Outbox 被跳过。
  • 每条开始前再次校验,停止不会改变尚未开始任务。
  • 完成反馈区分成功、失败、待上报、跳过和取消。
  • 外部操作不并发,Client 全量测试通过。
  • 不修改数据库结构、Admin 接口或采购安全逻辑。

怎么验证

# client 目录
C:/Python310/python.exe -m unittest discover -s test -p 'test_task_repository.py' -v
C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_ui_event.py' -v
C:/Python310/python.exe -m py_compile src/pdd_ui.py src/pdd_ui_event.py src/task_repository.py src/task_models.py
C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py' -q

离屏验证主窗口;真机只验证采集队列,不执行采购或下单。

风险和回退

  • 确认后状态可能变化,每条开始前必须复核。
  • uiautomator2 单次调用只能在下一安全点停止。
  • 回退提交即可恢复旧入口;无数据库迁移。
## 基本信息 - 类型:需求 - 父级大工单:#1 - 所属 MVP / 版本:#2 / MVP - 阶段:PDD 任务批量人工执行 - 依赖:#131、#63、#70 ## 要解决什么 把单条“重新执行”拆成“重新采集”和“重新采购”。本工单实现勾选多条后的采集类型过滤、安全预检、确认、串行内存队列、停止和汇总。 ## 做什么 / 不做什么 - 做:按钮顺序为“重新上报 → 重新采集 → 重新采购 → 删除”。 - 做:重新采集过滤采购任务,允许待执行、等待重试、已完成、失败、已取消和人工处理状态。 - 做:跳过运行中、结果待提交、存在未发送 Outbox 或已在当前批次中的任务。 - 做:确认框显示选中、可执行、类型过滤和安全跳过数量;每条开始前再次校验。 - 做:同一 Android 设备线程串行执行;停止取消尚未开始任务,完成显示成功、失败、待上报、跳过和取消数量。 - 不做:本工单不执行采购;不并发控制手机;不持久化批量队列;不改 Admin 接口、pdd_data、状态枚举和数据库结构。 ## 怎么做 - 修改 `client/src/task_models.py`、`task_repository.py`、`pdd_ui.py`、`pdd_ui_event.py`。 - 增加不可变批量预检结果;Repository 一次连接完成预检并在每项执行前复核。 - 复用现有固定设备 `QObject + QThread`,不从工作线程访问 QWidget。 - 更新 Repository、UI、事件与线程生命周期测试,以及 `docs/client/01-requirements.md`、`02-architecture.md`、`05-ui-specification.md`、`06-quality-security.md`。 ## 验收标准 - [ ] 两个按钮在紧凑和宽布局均可见,顺序正确并有无障碍名称。 - [ ] 混合勾选时准确显示可采集、过滤采购和安全跳过数量。 - [ ] 仅采集任务按稳定编号串行执行,采购任务不操作手机。 - [ ] 待执行及已确认采集终态可重做;运行中、待提交和未发送 Outbox 被跳过。 - [ ] 每条开始前再次校验,停止不会改变尚未开始任务。 - [ ] 完成反馈区分成功、失败、待上报、跳过和取消。 - [ ] 外部操作不并发,Client 全量测试通过。 - [ ] 不修改数据库结构、Admin 接口或采购安全逻辑。 ## 怎么验证 ```powershell # client 目录 C:/Python310/python.exe -m unittest discover -s test -p 'test_task_repository.py' -v C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_ui_event.py' -v C:/Python310/python.exe -m py_compile src/pdd_ui.py src/pdd_ui_event.py src/task_repository.py src/task_models.py C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py' -q ``` 离屏验证主窗口;真机只验证采集队列,不执行采购或下单。 ## 风险和回退 - 确认后状态可能变化,每条开始前必须复核。 - uiautomator2 单次调用只能在下一安全点停止。 - 回退提交即可恢复旧入口;无数据库迁移。
Author
Owner

实施完成,等待验收

  • 实现提交:598c808
  • 归档提交:a6f3a91
  • 本地归档:docs/task/138-批量重新采集并拆分任务执行按钮.md

已完成:

  • “重新执行”拆为“重新采集”和“重新采购”,操作顺序调整为“重新上报 → 重新采集 → 重新采购 → 删除”。
  • 多选记录先由 Repository 批量预检,采集队列自动过滤采购任务,并显示可执行、过滤和安全阻止数量。
  • 固定 Android 设备线程逐条重新采集;每条开始前再次校验,支持安全停止和成功/失败/跳过汇总。
  • 更新 Client 规则、架构、UI 和质量文档。

验证:

  • Client 全量 370 项测试通过。
  • PyQt5 离屏窗口冒烟测试输出 SMOKE_OK。
  • 未做真实 Android 多任务重新采集,等待真机验收。
## 实施完成,等待验收 - 实现提交:`598c808` - 归档提交:`a6f3a91` - 本地归档:`docs/task/138-批量重新采集并拆分任务执行按钮.md` 已完成: - “重新执行”拆为“重新采集”和“重新采购”,操作顺序调整为“重新上报 → 重新采集 → 重新采购 → 删除”。 - 多选记录先由 Repository 批量预检,采集队列自动过滤采购任务,并显示可执行、过滤和安全阻止数量。 - 固定 Android 设备线程逐条重新采集;每条开始前再次校验,支持安全停止和成功/失败/跳过汇总。 - 更新 Client 规则、架构、UI 和质量文档。 验证: - Client 全量 370 项测试通过。 - PyQt5 离屏窗口冒烟测试输出 `SMOKE_OK`。 - 未做真实 Android 多任务重新采集,等待真机验收。
Author
Owner

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

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