最新 Client 对真实采购任务完成一次提交后,会按设计记录 PURCHASE_OUTCOME_UNKNOWN 并在 5 秒后进入只读核单。真机显示两个微信候选的 Android 应用选择器时,#261 的严格识别没有命中:代码尝试启动 PDD,但选择器仍覆盖前台,最终以 RECONCILE_ORDER_PAGE_TIMEOUT / PDD 正在从微信中间页恢复 转人工。
PURCHASE_OUTCOME_UNKNOWN
RECONCILE_ORDER_PAGE_TIMEOUT / PDD 正在从微信中间页恢复
现有识别依赖控件树主包至少出现 3 次、组合后的 _label() 精确等于标题或“微信”,容易被混合包名、text 与 content-desc 重复值、OEM Resolver 包名和标题差异破坏。
_label()
text
content-desc
client/src/pdd_u2_purchase_reconcile_adapter.py
app_current()
android
ChooserActivity
ResolverActivity
RECONCILE_ANDROID_CHOOSER_UNRECOGNIZED
RECONCILE_ANDROID_CHOOSER_STUCK
client/test/test_pdd_u2_purchase_reconcile_adapter.py
text/content-desc
docs/client/06-quality-security.md
从 client/ 执行:
client/
C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_reconcile_adapter.py test/test_pdd_u2_purchase_reconcile_adapter.py C:/Python310/python.exe -m pytest -q test/test_pdd_u2_purchase_reconcile_adapter.py test/test_purchase_recovery.py test/test_purchase_task_service.py C:/Python310/python.exe -m pytest -q test $env:QT_QPA_PLATFORM="offscreen" C:/Python310/python.exe -c "from src.ui_main import MainWindow; from PyQt5.QtWidgets import QApplication; app=QApplication([]); w=MainWindow(); print('OK'); app.quit()" Remove-Item Env:QT_QPA_PLATFORM
真机只允许对已提交订单执行只读核单。需要手机重新确认 ADB 调试授权;不得为了验收再次提交订单或触发付款。
风险是误把其他系统页面识别成选择器并按返回。必须同时具备标题、微信候选、可信前台 package/activity,且最多返回一次。回退时恢复 #261 的严格识别并安全转人工;不可清除不可逆标记或重启下单流程。
com.android.intentresolver
OK
cg46
2a0c17a
6fa23dc
docs/task/263-增强双微信系统选择器识别并安全返回PDD.md
当前运行中的 Client 启动于本提交之前,真机验收前必须确认 ADB 授权并重启 Client,再通过 #262 对 cg46 执行“继续核单”。
状态:待用户验收。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
最新 Client 对真实采购任务完成一次提交后,会按设计记录
PURCHASE_OUTCOME_UNKNOWN并在 5 秒后进入只读核单。真机显示两个微信候选的 Android 应用选择器时,#261 的严格识别没有命中:代码尝试启动 PDD,但选择器仍覆盖前台,最终以RECONCILE_ORDER_PAGE_TIMEOUT / PDD 正在从微信中间页恢复转人工。现有识别依赖控件树主包至少出现 3 次、组合后的
_label()精确等于标题或“微信”,容易被混合包名、text与content-desc重复值、OEM Resolver 包名和标题差异破坏。做什么 / 不做什么
text和content-desc;兼容确认过的 Android Resolver 包和标题变体;无法确认时输出明确诊断;保留一次返回门禁和回归测试。PURCHASE_OUTCOME_UNKNOWN语义;不选择任何微信;不点击“仅此一次”“始终”“去支付”或其他支付控件;不循环返回、不重新下单、不付款;不修改 Admin、数据库结构或存量任务。怎么做
client/src/pdd_u2_purchase_reconcile_adapter.py:text/content-desc,不使用拼接标签判断选择器。app_current()的 package/activity 作为前台证据;不再要求控件树中至少 3 个android节点。ChooserActivity/ResolverActivity精确值或安全后缀。RECONCILE_ANDROID_CHOOSER_UNRECOGNIZED;一次返回后仍存在时返回RECONCILE_ANDROID_CHOOSER_STUCK。client/test/test_pdd_u2_purchase_reconcile_adapter.py:增加混合包名、text/content-desc重复、Resolver 包、标题变体、未知 Activity 和未知系统页面测试。docs/client/06-quality-security.md中稳定的识别和一次返回规则;不记录原始控件树或账号信息。验收标准
text与content-desc同时包含相同标题或微信名称时仍能正确识别。怎么验证
从
client/执行:真机只允许对已提交订单执行只读核单。需要手机重新确认 ADB 调试授权;不得为了验收再次提交订单或触发付款。
风险和回退
风险是误把其他系统页面识别成选择器并按返回。必须同时具备标题、微信候选、可信前台 package/activity,且最多返回一次。回退时恢复 #261 的严格识别并安全转人工;不可清除不可逆标记或重启下单流程。
实施完成,待用户验收
最终实现
text与content-desc,不再因拼接值导致标题或微信候选匹配失败。android、com.android.intentresolver及ChooserActivity/ResolverActivity安全后缀。PURCHASE_OUTCOME_UNKNOWN、不可逆标记或存量任务。验证结果
OK。cg46数据。提交与归档
2a0c17a6fa23dcdocs/task/263-增强双微信系统选择器识别并安全返回PDD.md当前运行中的 Client 启动于本提交之前,真机验收前必须确认 ADB 授权并重启 Client,再通过 #262 对
cg46执行“继续核单”。状态:待用户验收。