Client 现在可以从 Admin 领取采集任务并保存到 SQLite,也已经有独立的 uiautomator2 商品采集服务,但两部分尚未连接:
本工单把“领取 → Android 采集 → 本地持久化 → Admin 提交”串成一个安全、可恢复的采集任务闭环。
collect
PddDeviceService
PddCollectService.collect()
claimed → running
running → result_pending
result_pending → succeeded
manual_review
pdd_data
HttpAdminGateway
Idempotency-Key
sending
pending
点击“获取任务”时:
claimed
关闭后重新启动,已领取任务和待提交结果仍能继续处理。
docs/client/04-admin-api-contract.md
goods_id
client/src/pdd_ui_event.py
client/src/http_admin_gateway.py
client/src/task_repository.py
client/test/
docs/task/
实际文件以实现时的最小改动为准。
result_pending
git revert
与先创建的 #32 范围重复。有效的执行恢复与 Outbox 要求已补充到 #32,本工单关闭,后续统一按 #32 实施和跟踪。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
Client 现在可以从 Admin 领取采集任务并保存到 SQLite,也已经有独立的 uiautomator2 商品采集服务,但两部分尚未连接:
本工单把“领取 → Android 采集 → 本地持久化 → Admin 提交”串成一个安全、可恢复的采集任务闭环。
做什么
collect,不处理采购。PddDeviceService会话。PddCollectService.collect(),禁止复制第二套采集逻辑。claimed → runningrunning → result_pendingresult_pending → succeededmanual_reviewpdd_data、执行记录和 Outbox 成功结果事件。HttpAdminGateway实现成功结果与失败结果提交接口,使用持久化的Idempotency-Key。sending恢复成pending;交互规则
点击“获取任务”时:
claimed任务,直接执行最早的一条,不再领取;关闭后重新启动,已领取任务和待提交结果仍能继续处理。
不做什么
数据与接口要求
docs/client/04-admin-api-contract.md及 #31 的最终契约。goods_id、标题、店铺、销量、评价、规格、价格和价格采样说明。pdd_data保存在本地,不只保存表格摘要。预计修改范围
client/src/pdd_ui_event.py:触发后台执行并更新界面状态。client/src/http_admin_gateway.py:实现成功/失败提交。client/src/task_repository.py:补充状态迁移、执行结果和 Outbox 原子写入。client/test/:服务、Repository、Gateway、线程与恢复测试。docs/task/。实际文件以实现时的最小改动为准。
验收标准
pdd_data和 Outbox 事件原子落库claimed、result_pending和遗留sending状态风险与回退
git revert回退;数据库迁移如有新增只能追加,不能改写旧迁移。ila referenced this issue2026-08-07 16:58:15 +08:00
ila referenced this issue2026-08-07 16:58:15 +08:00
与先创建的 #32 范围重复。有效的执行恢复与 Outbox 要求已补充到 #32,本工单关闭,后续统一按 #32 实施和跟踪。