让现场人员无需先在 Admin 手工录入未知 goods_id 或 PDD URL,即可从当前已打开的 PDD 商品详情页发起一次受控采集,并把结构化商品数据、goods_id 和标准商品 URL 一并提交到 Admin,降低已售罄商品寻找替代商品后的录入成本。
prototypes/<本工单号>/v1/index.html
https://mobile.yangkeduo.com/goods.html?goods_id={goods_id}
a181b2a
参考本地 D:/chengma/cmroubao_old 已验证思路:
D:/chengma/cmroubao_old
p.pinduoduo.com
mobile.yangkeduo.com
参考代码仅作为实现证据,不直接整模块复制:
PinduoduoClipboardRelay.kt
PinduoduoSharedProductLinkResolver.kt
AndroidPinduoduoCandidateDriver.kt
BuyerAccessibilityService.kt
POST /api/agent/v1/current-page-collection-tasks
requestId
agent_current_page
running
next → claim → start
POST /api/agent/v1/current-page-collection-tasks/{taskId}/identify
shareUrl
pddProductId
识别成功后继续复用:
POST /api/agent/v1/tasks/{taskId}/result
POST /api/agent/v1/tasks/{taskId}/fail
collection_task.pdd_product_id
url_snapshot
goods_id_snapshot
collection_task
admin
pdd_product_id
collection_rule_id
DEVICE_BUSY
AGENT_MANUAL_RULE_NOT_CONFIGURED
CURRENT_PDD_PAGE_NOT_FOUND
PDD_SHARE_UNAVAILABLE
PDD_SHARE_LINK_INVALID
taskId
deviceId
ruleSnapshot
已按用户确认的补充方案完成第一阶段,尚未修改 Android、Server 或数据库生产代码。
6a8eb736191a826306a7f360
prototypes/101/v1/index.html
acdd59a
PASS
python dev_scripts/harness.py check --strict
git diff --check
quantux_verify.py
quickjs
状态:等待用户审核 #101 v1 原型。
用户已明确确认“执行 #101,并允许数据库迁移”。
本次严格按已审核的 #101 v1 设计实施:
明确不包含:自动搜索/选择相似商品、自动替换旧商品或虾皮关联、采购、创建订单、支付、OCR/VLM,以及保存原始控件树、截图或完整分享文案。
collector.pdd.current-page-share.v1
用户已明确授权数据库迁移。本机 MySQL 8.4 已执行迁移 1787790000000_agent_current_page_collection:
1787790000000_agent_current_page_collection
cd server && go test ./...
cd android && .\gradlew.bat testDebugUnitTest assembleDebug
python dev_scripts/harness.py sync --check
git diff --cached --check
28c3cb5 feat: collect current PDD page from Agent (#101)
线上页面已更新并回读,随后本地镜像一致性检查通过:
79f7b1e9e9058db1e9453db6f74dbe7219ffb16f
579d9b25297d7b404c68aca4a29ef3179555baa9
ecfe6f881cb937688547b0fe819734813d93dd1b
9253f4f7557eeb014032edd7b0645de19a1516f5
工单保持打开,等待用户真机验收。
用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
No dependencies set.
The note is not visible to the blocked user.
所属与来源
目标
让现场人员无需先在 Admin 手工录入未知 goods_id 或 PDD URL,即可从当前已打开的 PDD 商品详情页发起一次受控采集,并把结构化商品数据、goods_id 和标准商品 URL 一并提交到 Admin,降低已售罄商品寻找替代商品后的录入成本。
已确认用户流程
交互设计要求
prototypes/<本工单号>/v1/index.html,资源使用相对路径并可离线浏览。临时任务与服务端方案
https://mobile.yangkeduo.com/goods.html?goods_id={goods_id}补充决策(2026-08-26 用户确认)
a181b2a)为基线,不覆盖 #100 的历史原型。分享链接与 goods_id 方案
参考本地
D:/chengma/cmroubao_old已验证思路:p.pinduoduo.com与mobile.yangkeduo.com;逐跳校验有限重定向、限制响应大小和超时,最终提取纯数字 goods_id。参考代码仅作为实现证据,不直接整模块复制:
PinduoduoClipboardRelay.ktPinduoduoSharedProductLinkResolver.ktAndroidPinduoduoCandidateDriver.ktBuyerAccessibilityService.ktAPI 与数据草案(v1,待原型审核后实施)
Agent 接口
POST /api/agent/v1/current-page-collection-tasksrequestId。agent_current_page的标准采集任务,固定设备、固化规则快照、直接进入running、建立租约并返回任务载荷。next → claim → start;这样正常轮询没有抢占窗口。requestId重放返回同一任务,不续租、不创建第二条任务。POST /api/agent/v1/current-page-collection-tasks/{taskId}/identifyrequestId和从新鲜剪贴板分享文本中唯一提取出的shareUrl;Android 不上传整段分享文案或其他剪贴板内容。pddProductId、标准 URL 和 goods_id 快照绑定到任务;若同商品已有活动采集任务或身份冲突则失败并结束当前任务。requestId幂等返回同一识别结果;不同身份不得覆盖首次已确认身份。识别成功后继续复用:
POST /api/agent/v1/tasks/{taskId}/result提交结构化结果;POST /api/agent/v1/tasks/{taskId}/fail提交失败。最小数据变更
collection_task.pdd_product_id、url_snapshot、goods_id_snapshot改为只允许agent_current_page且尚未完成身份识别的运行中任务暂时为空;普通采集任务仍强制非空。collection_task增加受约束的来源字段,当前仅admin与agent_current_page;列表/详情把后者显示为“Agent 当前页面”,不新增状态。pdd_product_id后参与;当前页面任务创建时先由设备运行槽防并发,identify 事务绑定商品时再检查并占商品活动槽。collection_rule_id。运行时仍检查规则存在、未删除、已启用且能力兼容;规则快照一经任务创建不可变。admin和回滚方案。执行迁移前再次等待用户确认。失败语义
DEVICE_BUSY→ “设备正在执行任务,请稍后再试”;AGENT_MANUAL_RULE_NOT_CONFIGURED→ “请先配置 Agent 手动采集规则”。CURRENT_PDD_PAGE_NOT_FOUND→ “没有找到商品详情页”;PDD_SHARE_UNAVAILABLE/PDD_SHARE_LINK_INVALID→ “无法识别商品链接”。安全与能力边界
taskId、deviceId和ruleSnapshot,一台设备仍只串行执行一个任务。前置依赖与并行性
原型与实施门禁
第一阶段:设计
第二阶段:生产实施(审核后)
验收标准
设计验收
后续生产验收
验证计划
风险
文档影响
#101 v1 原型已完成,等待审核
已按用户确认的补充方案完成第一阶段,尚未修改 Android、Server 或数据库生产代码。
设计证据
6a8eb736191a826306a7f360prototypes/101/v1/index.htmlacdd59a覆盖范围
验证
PASS,10 个界面、159 个组件、25 条交互连线,无运行时错误和不支持组件。python dev_scripts/harness.py check --strict:通过。git diff --check:通过。quantux_verify.py因环境未安装quickjs未运行;未擅自安装依赖。服务端同版本导出验证已通过。文档与风险
状态:等待用户审核 #101 v1 原型。
开始实施(2026-08-27)
用户已明确确认“执行 #101,并允许数据库迁移”。
本次严格按已审核的 #101 v1 设计实施:
agent_current_page任务增加必要来源、临时空快照与默认规则配置约束;明确不包含:自动搜索/选择相似商品、自动替换旧商品或虾皮关联、采购、创建订单、支付、OCR/VLM,以及保存原始控件树、截图或完整分享文案。
实施完成,待验收(2026-08-27)
实现结果
collection_task新增来源与识别幂等信息,PDD 商品外键在识别前允许为空;新增单行 Agent 手动采集默认规则设置。collector.pdd.current-page-share.v1与可配置分享/复制入口、超时参数。数据库迁移
用户已明确授权数据库迁移。本机 MySQL 8.4 已执行迁移
1787790000000_agent_current_page_collection:验证
cd server && go test ./...:通过。cd android && .\gradlew.bat testDebugUnitTest assembleDebug:通过,APK 构建成功。python dev_scripts/harness.py check --strict:通过。python dev_scripts/harness.py sync --check:通过。git diff --cached --check:通过;敏感值扫描 0 命中。28c3cb5 feat: collect current PDD page from Agent (#101)(尚未推送)。Wiki-first 证据
线上页面已更新并回读,随后本地镜像一致性检查通过:
79f7b1e9e9058db1e9453db6f74dbe7219ffb16f579d9b25297d7b404c68aca4a29ef3179555baa9ecfe6f881cb937688547b0fe819734813d93dd1b9253f4f7557eeb014032edd7b0645de19a1516f5尚未验证 / 边界
工单保持打开,等待用户真机验收。
用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。