5.8 KiB
5.8 KiB
id, title, phase, deps, status, created, context_ref, work_branch, write_paths
| id | title | phase | deps | status | created | context_ref | work_branch | write_paths | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T-101 | 固定任务跑通拼多多关键词搜索 | 1 |
|
DONE | 2026-07-25 | 1c1c158149 |
main |
|
问题 / 背景
Phase 0 已证明设备、无障碍、workflow 和任务输入可用,但尚未让肉包执行任何真实 拼多多动作。最高风险假设是:在拼多多 8.17.0 上,能否只依赖可访问性语义稳定打开 搜索、输入固定关键词并确认进入结果页,同时对异常页面安全停止。
关联需求与交互
- 功能:F-004 的关键词搜索部分、F-007 安全失败。
- 用户故事:US-004、US-006。
- 交互:Android“探针”页,用户显式点击开始和停止。
- 架构:
WorkflowRunner+PinduoduoSearchAutomation+ 无障碍 driver。
方案
- 使用固定脱敏关键词,不读取真实订单标题,也不调用 VLM。
- 把页面文本分类和搜索 workflow adapter 保持为纯 Kotlin 可测边界。
- 无障碍 driver 只对
com.xunmeng.pinduoduo操作,使用 resource ID、editable、 文本和 content description,不使用屏幕坐标。 - 步骤为打开 App、进入搜索、输入并提交、验证结果页;每步有 timeout 和最多一次 retry。
- 登录、验证码、风控、支付边界立即
BLOCKED;未知页面连续观察后安全停止。 - Android“探针”页展示当前步骤、终态和停止按钮;不执行商品点击或下单。
验收要点
- 用户显式点击后打开拼多多并提交固定关键词。
- 成功条件是识别到搜索结果页,不以“点击已发出”冒充成功。
- 全流程不用坐标,不进入商品详情、不提交订单、不支付。
- 登录、验证码、风控、未知页和支付边界产生可区分的
BLOCKED。 - 每步 timeout、retry 和用户停止由 T-003 runner 执行。
- 页面分类和 adapter 使用 Fake driver 有自动化测试。
- 拼多多 8.17.0 真机 smoke 通过并保存不含私有内容的证据。
lintDebug test assembleDebug通过。
边界
- 不从真实 Shopee 标题生成搜索词;固定词只验证页面自动化。
- 不浏览候选、不点击商品、不滚动结果列表。
- 不使用 Shizuku shell、ADB 坐标、OCR 或 VLM 作为降级。
- 不绕过登录、验证码、风控或平台提示。
执行记录
2026-07-25:任务开始
- 基于 T-004 提交
1c1c158开始。 - 测试基线为 OnePlus PKG110、Android 16/API 36、拼多多 8.17.0;肉包采购无障碍 已启用并连接。
2026-07-25:实现
- 增加纯 Kotlin 页面分类器和
PinduoduoSearchAutomation。页面节点必须同时可见、 启用并唯一匹配;结果页必须同时出现精确固定关键词、搜索头和至少 3 个排序控件。 - 增加 Android 无障碍 driver。打开搜索只点击语义节点或其可点击祖先,输入只使用
ACTION_SET_TEXT,并从新的根节点重新读取精确文本后才算成功;没有坐标或 shell 降级。 - workflow 固定执行打开 App、输入、提交和验证四步,沿用 T-003 的 timeout、有限 retry、停止和单实例约束。登录、验证码、风控、未知页面及订单/支付边界直接阻塞。
- 新增“拼多多搜索探针”默认工作页,显示固定词、当前步骤、终态和开始/停止操作。 Activity 恢复后延迟复检无障碍连接,避免系统服务晚连接造成按钮状态滞后。
- 修正 Debug fixture 资产与 lint model 的 Gradle 任务依赖,使完整验证不受增量任务 顺序影响。
2026-07-25:自动化验证
gradlew.bat lintDebug test assembleDebug --no-daemon成功。- App Debug/Release、task contract 和导入器共 12 份报告、62 次测试,0 failure、 0 error、0 skipped。
- 页面分类覆盖首页、输入页、精确结果页、隐藏/禁用伪节点以及登录、验证码、风控、 未知页和订单/支付边界;Fake driver 覆盖成功、瞬态 retry 和安全阻塞。
- 普通 Debug APK 中
assets/probe-fixtures/条目数为 0。
2026-07-25:真机 smoke
- 从肉包“开始搜索探针”按钮显式启动;App 使用固定脱敏词执行,未读取或显示私有 蝦皮样本。
- 拼多多 8.17.0 结果页采集到 174 个可访问节点:精确关键词存在、结果页搜索头存在、 4 个排序控件存在、搜索输入框为 0、订单/支付边界为 0。
ACTION_SET_TEXT后的新根节点精确回读通过,肉包最终显示SUCCEEDED且四步均 完成;logcat 未发现肉包崩溃或 ANR。- smoke XML/PNG 只保存在被忽略的
.local/t101-smoke/,未纳入 Git。重装后 ColorOS 出现一次系统无障碍“保持开启”确认,确认后服务正常绑定;产品代码没有绕过该权限。
后续
- T-102 从当前结果页浏览并采集最多 5 个候选;仍不得无界滚动、点击下单或支付。
- 从不属于已识别首页/输入页/当前固定词结果页的状态启动时,当前实现按
UNKNOWN_PAGE安全阻塞,不猜测返回路径。