feat(t213): complete live SKU price verification
This commit is contained in:
@@ -55,10 +55,9 @@
|
||||
动态词搜索、最多 5 个候选截图采集、结构化需求提取、候选评估和人工确认停止点均已
|
||||
验证。T-201 后端骨架、T-202 P0 原型、T-203 任务 API/管理 Web、T-204 最小鉴权
|
||||
T-205 原子领取/租约状态机、T-206 Android 登录/有限离线、T-207 本地 VLM/候选/
|
||||
证据回传以及 T-211 参考图召回和 SKU 硬匹配均已完成。下一步先做 T-212,修复 Top 5
|
||||
重排后的候选、证据和人工接受映射;再做 T-213,只读采集拼多多规格弹窗。两项完成后
|
||||
再开始 T-208 的逐候选结构化人工理由、修订历史和优化数据闭环;不得提前建设报表、
|
||||
训练管线或外部商品抓取。
|
||||
证据回传、T-211 参考图召回和 SKU 硬匹配、T-212 候选身份映射,以及 T-213 受控
|
||||
规格组合/价格核验均已完成。下一步做 T-208 的逐候选结构化人工理由、修订历史和优化
|
||||
数据闭环;不得提前建设报表、训练管线或外部商品抓取。
|
||||
手机从管理后端领取任务并回传结果,VLM、拼多多自动化和人工确认在 App 本地完成。
|
||||
T-206 增加有限离线执行;T-207 已复用 Roubao 端上 OpenAI 兼容适配器并加密本地 Key。
|
||||
管理后端不保存/代理 VLM,后台任务不能覆盖手机 provider 配置。
|
||||
|
||||
@@ -200,7 +200,8 @@ prompt 前分别限制为 2048 和 512 个 UTF-8 字节。JPEG 在调用前复
|
||||
复核任务参考图的媒体类型、长度和 SHA-256,并在完成、失败或安全停止后 best-effort
|
||||
删除自己创建的媒体。拼多多图片入口、相册页、当前图片或结果页无法唯一确认时停止;
|
||||
不得从用户相册中猜选其他图片。图片搜索只负责召回,VLM 不能改变原始 SKU,也不能
|
||||
把 `UNKNOWN` 规格提升为通过。
|
||||
把 `UNKNOWN` 规格提升为通过。MediaStore 图片从 pending 发布后显式通知变更并等待
|
||||
750 ms 再启动拼多多,给系统媒体索引一个固定、有限的稳定窗口。
|
||||
|
||||
`TaskSource` 是工作流读取任务的唯一边界:
|
||||
|
||||
@@ -303,9 +304,10 @@ PKG110 上的拼多多 8.17.0 服装详情只暴露不可点击的“颜色/款
|
||||
|
||||
`DISCOVERY_INSPECT` 从任务 SKU 的本地规范化结果取得唯一颜色/尺码,按颜色后尺码
|
||||
的固定顺序选择,每次动作后重新读取 selected 与“已选择”摘要;规格区域最多向前
|
||||
滚动 2 次。价格只接受单一、完整的人民币文本并保存分值,区间、券后、条件价格、
|
||||
多价格冲突或无价格一律降级 `UNKNOWN`。若唯一入口落到订单确认页,自动化只能执行
|
||||
系统返回并跳过该候选。
|
||||
滚动 2 次。价格只接受单一、完整的人民币文本,或唯一白名单前缀“首件”后的完整
|
||||
人民币文本,并同时保存原始文本和分值;普通对照促销价、区间、券后、折扣条件、
|
||||
多实际价格冲突或无价格一律降级 `UNKNOWN`。若唯一入口落到订单确认页,自动化只能
|
||||
执行系统返回并跳过该候选。
|
||||
|
||||
评估结束后 automation 不再产生动作,UI 进入 `AWAITING_CONFIRMATION`、
|
||||
`MANUAL_REVIEW` 或 `NO_MATCH`。人员可以把本地建议项标记为可用,或拒绝本次候选;
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@
|
||||
| T-210 | 兼容拼多多 8.17 搜索结果页 | T-101、T-206 | 新旧结果页均可靠识别;其他查询和安全边界不放宽 |
|
||||
| T-211 | 参考图召回与 SKU 硬匹配 Top 5 | T-207、T-210 | 参考图进入拼多多图片搜索;颜色/尺码均匹配才回传 `0..5` 个候选 |
|
||||
| T-212 | 修复 Top 5 ordinal 与证据映射 | T-211 | 重排、推荐、证据和人工接受引用同一原始候选 |
|
||||
| T-213 | 拼多多规格弹窗只读核验 | T-212 | 只读采集颜色/尺码显式选项;不选择规格,不进入订单或支付 |
|
||||
| T-213 | 拼多多候选 SKU 组合与价格核验 | T-212 | 受控选择唯一颜色/尺码并读取组合价;不确认购买,不进入订单或支付 |
|
||||
|
||||
## Phase 3:端到端验证
|
||||
|
||||
|
||||
+19
-18
@@ -4,10 +4,10 @@
|
||||
|
||||
## 当前快照
|
||||
|
||||
- 日期:2026-07-27
|
||||
- 阶段:T-212 已完成;T-213 代码完成,等待用户启用无障碍后执行最后真机 smoke
|
||||
- 日期:2026-07-28
|
||||
- 阶段:T-213 已完成;下一任务为 T-208 候选决策数据与人工理由闭环
|
||||
- Git:当前分支为 `main`;T-001 至 T-004、T-101 至 T-104、T-201 至 T-207、T-209、
|
||||
T-210、T-211、T-212 均已纳入 Git 历史;T-213 已实现,当前仅真机验收阻塞
|
||||
T-210、T-211、T-212、T-213 均已纳入 Git 历史
|
||||
- 生产代码:`android-buyer/` 已接入 Roubao Android 源码
|
||||
- Android:固定 `main@c8a6d7f03422eb01744b01f3ee77bf7757741f7e`;MIT 许可证已保留
|
||||
|
||||
@@ -17,8 +17,9 @@
|
||||
- 本机 Android 工具:JDK 17.0.13、Command-line Tools 22.0、SDK 34、
|
||||
Build Tools 34.0.0、Platform Tools/ADB 37.0.0;用户级 SDK 环境变量已设置
|
||||
- Android Studio:未安装;`winget` 静默安装卡住后已终止,不阻塞命令行构建
|
||||
- 测试:T-213 Android Debug 24 个 suite、143 个测试、0 失败,Debug/Release 回归
|
||||
和 `assembleDebug` 通过;Debug APK `1.4.4 (9)` 已安装并冷启动于 PKG110
|
||||
- 测试:T-213 Android Debug 25 个 suite、148 个测试、0 失败,Debug/Release 回归、
|
||||
`assembleDebug` 和根 `init.ps1` 通过;Debug APK `1.4.10 (15)` 已安装并冷启动于
|
||||
PKG110
|
||||
- 后端测试:T-213 运行 `go test ./...` 通过;T-207 的全包 race 与 migration
|
||||
验证继续有效
|
||||
- 原型:4 个管理 Web 页面和 7 个 Android 页面均可离线独立打开;Playwright
|
||||
@@ -52,8 +53,9 @@
|
||||
分数、置信度和曝光顺序回传 `0..5` 项,弱匹配和未知项不凑数。
|
||||
- T-213 规格核验:`DISCOVERY_INSPECT` 可从唯一“免拼购买”进入规格弹层,按任务
|
||||
SKU 唯一选择颜色/尺码并复核 selected/已选摘要,最多滚动 2 次;严格保存单一
|
||||
人民币组合价和详情/规格双证据。区间/条件/冲突/缺失价格降级 `UNKNOWN`,直达
|
||||
订单确认页只系统返回。候选探查不能加入购物车、提交订单或触发支付。
|
||||
人民币组合价和详情/规格双证据,并允许明确的“首件¥金额”当前单件价。区间、
|
||||
券后、对照促销、冲突或缺失价格降级 `UNKNOWN`,直达订单确认页只系统返回。候选
|
||||
探查不能加入购物车、提交订单或触发支付。
|
||||
- Workflow:纯 Kotlin runner 已支持步骤 timeout、最多 3 次 retry、安全阻塞、
|
||||
用户停止和单 runner 并发拒绝;T-102 已接入搜索加有界候选采集五步
|
||||
- TaskSource:严格 CLI 已生成并验证真实私有 ProbeTask;默认 APK 不含私有 fixture
|
||||
@@ -69,11 +71,11 @@
|
||||
- 离线执行:默认 30 分钟有限授权和 30 秒 best-effort heartbeat 已实现;PKG110
|
||||
真机断开临时后端 95 秒后保持同一 execution,重连后滑动续期;到期持久安全停止,
|
||||
RUNNING 不自动重新分配
|
||||
- 测试设备:OnePlus PKG110,Android 16/API 36;肉包 `1.4.4 (9)`;拼多多
|
||||
- 测试设备:OnePlus PKG110,Android 16/API 36;肉包 `1.4.10 (15)`;拼多多
|
||||
`8.17.0 (81700)`
|
||||
- 设备就绪:拼多多首页、文字/图片搜索、双列候选卡、详情截图和返回均已通过 8.17.0
|
||||
真机验证;最终 APK 重装/force-stop 后 ColorOS 已关闭肉包采购无障碍,当前需采购员
|
||||
在系统无障碍设置中重新启用,不通过 ADB 绕过系统授权
|
||||
真机验证;采购员已在 ColorOS 设置中手动启用肉包采购无障碍,APK 覆盖安装后授权
|
||||
保持且服务已连接
|
||||
- 拼多多 8.17 兼容:结果页可识别新版显示查询词的文本搜索栏和“推荐、手机、女装”等
|
||||
分类栏,也保留旧版“综合、销量、价格、筛选”识别;长任务搜索词的拼多多省略显示须
|
||||
至少两个按序片段对应原词才通过。每次候选探针会重写本次搜索词,不复用已有结果页。
|
||||
@@ -84,9 +86,8 @@
|
||||
已用 CLI 真实导入并逐字段/图片哈希验证,生成物位于被忽略的 `.local/`
|
||||
- 标准启动路径:`$env:RUN_START_COMMAND="1"; .\init.ps1`
|
||||
- 标准验证路径:`.\init.ps1`
|
||||
- 当前 blocker:ColorOS 重装后需采购员手动重新启用肉包无障碍,才能完成 T-213
|
||||
真机 smoke。真实 VLM 服务地址、模型、设备级测试凭证、成本上限和数据留存也尚未
|
||||
确认;当前只支持单 SKU/JPEG;候选探针截图要求 Android 11/API 30+
|
||||
- 当前 blocker:T-213 无阻塞。真实 VLM 服务地址、模型、设备级测试凭证、成本上限
|
||||
和数据留存尚未确认;当前只支持单 SKU/JPEG;候选探针截图要求 Android 11/API 30+
|
||||
|
||||
## 当前目录
|
||||
|
||||
@@ -113,7 +114,7 @@
|
||||
| `docs/tasks/T-210.md` | DONE | 兼容拼多多 8.17 搜索结果页与长词省略显示 |
|
||||
| `docs/tasks/T-211.md` | DONE | 参考图召回、SKU 颜色尺码硬匹配与 0..5 候选回传 |
|
||||
| `docs/tasks/T-212.md` | DONE | 修复重排候选、推荐、证据与人工接受的身份映射 |
|
||||
| `docs/tasks/T-213.md` | BLOCKED | 代码完成;等待手动启用无障碍后执行真机 smoke |
|
||||
| `docs/tasks/T-213.md` | DONE | 真机选择目标 SKU、读取组合价并安全返回 |
|
||||
| `docs/design/` | 已确认 | T-202 原型索引、4 个管理页和 7 个 Android 页面 |
|
||||
| `deepseek总结.txt` | 已有 | 历史讨论摘要,不是正式需求权威 |
|
||||
| `android-buyer/` | 已有 | Roubao `main` 固定 commit 的 Android 基线 |
|
||||
@@ -125,10 +126,10 @@
|
||||
## 任务摘要
|
||||
|
||||
- 已完成:T-001 至 T-004、T-101 至 T-104、T-201 至 T-207、T-209、T-210、T-211、
|
||||
T-212。
|
||||
- 正在进行:T-213 仅剩用户授权后的真机自动化 smoke。
|
||||
- 下一个可领取任务:无;T-208 依赖 T-213 真机验收完成。
|
||||
- 后置任务:T-213 完成后做 T-208 候选决策数据与人工理由闭环,再依次实现商品
|
||||
T-212、T-213。
|
||||
- 正在进行:无。
|
||||
- 下一个可领取任务:T-208 候选决策数据与人工理由闭环。
|
||||
- 后置任务:T-208 完成后依次实现商品
|
||||
持久身份、Admin 下单授权、设备命令、订单 dry-run、单次提交对账和付款提醒。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
+22
-2
@@ -4,14 +4,16 @@ title: 拼多多候选 SKU 组合与价格核验
|
||||
phase: 2
|
||||
deps:
|
||||
- T-212
|
||||
status: BLOCKED
|
||||
status: DONE
|
||||
created: 2026-07-27
|
||||
context_ref: 9a8388f
|
||||
work_branch: null
|
||||
write_paths:
|
||||
- android-buyer/app/build.gradle.kts
|
||||
- docs/tasks/T-213.md
|
||||
- docs/00-ai-start-here.md
|
||||
- docs/04-architecture.md
|
||||
- docs/06-tasks.md
|
||||
- docs/current-state.md
|
||||
- android-buyer/app/src/main/java/com/roubao/autopilot/MainActivity.kt
|
||||
- android-buyer/app/src/main/java/com/roubao/autopilot/accessibility/**
|
||||
@@ -68,7 +70,7 @@ T-211 目前只用候选详情页首屏截图判断颜色和尺码。真机已
|
||||
- [x] 若购买入口直接进入订单确认页,自动化不点击任何页面控件并安全返回。
|
||||
- [x] 每个候选的详情/规格证据、所选规格和价格不会在重排/outbox 中串位。
|
||||
- [x] Android 单元测试、Debug 构建和后端回归通过。
|
||||
- [ ] PKG110、Android 16、肉包/拼多多版本真机 smoke 完成进入弹层、选择测试 SKU、
|
||||
- [x] PKG110、Android 16、肉包/拼多多版本真机 smoke 完成进入弹层、选择测试 SKU、
|
||||
读取组合价格、关闭和返回;确认未创建订单、未进入支付。
|
||||
|
||||
## 边界
|
||||
@@ -120,3 +122,21 @@ T-211 目前只用候选详情页首屏截图判断颜色和尺码。真机已
|
||||
无障碍服务,解除条件是采购员在 ColorOS 系统设置中手动启用肉包无障碍;不得通过
|
||||
ADB 绕过。启用后需验证自动进入规格弹层、选择测试 SKU、读取组合价、关闭并返回,
|
||||
同时确认拼多多没有生成订单或进入支付。
|
||||
- 2026-07-28:采购员手动启用肉包无障碍后继续真机 smoke。补齐拼多多 8.17 详情页
|
||||
短文本“客服”分类、每次图片任务冷启动拼多多、任务切换时清空探针状态,以及 App
|
||||
恢复时用 heartbeat 对账本地 claim;后台已取消或已换任务时不再保留旧候选和旧
|
||||
claim。对应策略均有单元测试。
|
||||
- 2026-07-28:拼多多规格弹层现场价格为 `首件¥16.7`,同时显示非当前的对照文本
|
||||
`大促价¥20.7`。严格价格解析增加唯一白名单前缀“首件”,保存原始文本和
|
||||
`1670` 分;对照促销价、券后价、区间价和多个实际价格仍不能形成自动匹配证据。
|
||||
MediaStore 发布后增加通知和 750 ms 有界稳定等待,避免刚写入的参考图被相册索引
|
||||
过早读取。
|
||||
- 2026-07-28:最终真机任务 `418c23d8-92ea-46fd-9d1a-294eaeb89ce7` 在 PKG110
|
||||
Android 16、肉包 `1.4.10 (15)`、拼多多 `8.17.0 (81700)` 上完成。App 从参考图
|
||||
进入图片结果,打开规格弹层,自动选择 `红色` 和 `XL码/裙长90胸围89`,后台候选
|
||||
保存 `已选择:XL码/裙长90胸围89 红色` 与 `首件 ¥16.7`。验收后由 Admin 请求
|
||||
安全停止,手机确认后任务为 `CANCELED`、`order_submitted=false`,前台返回肉包;
|
||||
全程没有确认规格弹层底部按钮、创建订单或进入支付。
|
||||
- 2026-07-28:Android Debug 25 个 suite、148 个测试全部通过,
|
||||
`assembleDebug` 通过,APK 已覆盖安装;根 `init.ps1` 继续通过 Android
|
||||
Debug/Release 回归和 Go 全包测试。任务完成并解除 T-208 的依赖。
|
||||
|
||||
Reference in New Issue
Block a user