2026-09-07,本地服务正式采购任务 CG99 已进入 PDD 商品规格面板,但失败为“有界搜索后未找到精确规格”。用户观察颜色/尺码较多,目标可能需要横向滑动;要求在尽量不影响当前高成功率采购流程的前提下修复。
基线提交:1f40a7f。
1f40a7f
spec_probe
PurchaseRehearsalExecutor.locateExactSpec()
只在既有精确规格直接查找和纵向有界搜索均未找到目标颜色时,增加基于已解析颜色行的横向有界兜底搜索,并继续只点击服务端下发的逐字精确值。
dimension=color
specHorizontalSwipes=12
stableEdgeReads=2
恢复既有精确规格选择行为的非 UI 缺陷,不新增页面或交互,不需要原型。
修改点位于公共规格选择器,回归风险为低到中。通过“原成功路径不变、仅颜色最终不可见时进入横向兜底”、严格精确匹配、有限次数与完整回归降低风险。付款永久禁止。
gitea.env
实现:
代码:
fix/230-horizontal-spec-selection
7b9fcfb fix(agent): search horizontally for exact purchase color (#230)
验证:
PurchaseRehearsalExecutorTest
scripts/verify.ps1 -Component android
python dev_scripts/harness.py check --strict
git diff --check
3D222F30246E007A5A91249AB51BA0608834DC13F01B2BAB93C6B7F259DA704F
192.168.0.173:42681
未自动重试 CG99,未修改地址、未创建订单、未支付。CG99 可由用户手动执行同任务重试验收。无长期规则或契约变化,跳过 Wiki 更新。
实施前工作区不存在未提交业务源码;既有 settings.yml 本机超时改动、重复 Wiki 镜像头、原型与临时文件均与本工单无关,其中原始控件树禁止入库,已全部原样保留且未纳入提交。
settings.yml
0.9.53 真机重试 CG99 后,目标颜色已成功选中,但尺码未选中并返回无诊断后缀的旧错误“有界搜索后未找到精确规格”。数据库确认首趟探测存在 5 个尺码,固化目标尺码位于第 3 项;当前实现仅 dimension=color 进入横向兜底,尺码仍只执行纵向搜索。
v2 调整:
新增验收:长尺码位于横向后页可精确选中;首屏尺码零横滑;颜色横向选中后尺码使用独立新锚点;单列且无横向容器的尺码不横滑;既有颜色及全部采购回归通过。
仍不修改服务端、规则、状态机、地址、价格、订单和支付行为;不自动重试 CG99。
4e6afc2 fix(agent): search horizontally for exact purchase size (#230)
7b9fcfb
color
size
dimension
7AFBECC4276DE9F1DBFC5E7BE12D108A101998DB68B066E187210826D65A6460
未自动重试 CG99,未修改地址、未创建订单、未支付。请由用户手动执行同任务重试验收。无长期契约/规则变化,跳过 Wiki 更新;既有无关工作区改动继续保留。
用户确认继续 #230 v3。最新 CG99 错误为 dimension=size;horizontalSwipes=0;verticalRecoverySwipes=0;visibleCandidates=2;reason=restoreSwipeFailed,设备已确认 0.9.54(67)。 修正上层同排多值即横滑、底层要求横向容器的不一致;横向容器不存在时按纵向网格继续有界搜索;滑动后重新定位,移除旧锚点回退,稳定判定包括布局变化并区分预算与边界。细分底层锚点、容器、手势失败诊断。补充真实结构回归,构建安装;不自动执行真实订单。 实际底层失败原因尚缺日志证据,不将缺少容器写为已证实根因。无 API、数据库、规则与业务安全边界变化,作为既有精确选择内部修复,无长期 Wiki 影响。 当前无 Gitea MCP,沿用已记录的安全配置 API 回退。
用户已授权修复。现场两个 RecyclerView 中心偏差18/20像素,旧定位只比较类型与中心±32,两个均命中使纵滑失败。人工从尺码标题上滑后目标精确文字出现,enabled/clickable=true、selected=false,祖先为外层规格容器。 方案:优先按当前节点路径及类型、完整边界校验重新定位;路径变化只允许唯一完整边界匹配,歧义或失效保持失败。补嵌套同中心与路径失效测试,构建安装,不自动下单。恢复既有滚动行为,无长期Wiki变化。当前Gitea MCP不可用,沿用API回退。
提交666d19a,基于v3提交c2c1044。此次仅修正swipePurchaseIn的容器重定位:递归路径与capture一致,优先当前路径+类型+四边界校验,路径变化时只接受唯一完整边界候选,冲突拒绝。 新增5项测试覆盖现场嵌套近中心容器、同边界按路径区分、路径变化唯一回退、旧路径被不同几何节点复用、类型及四边界校验。scripts/verify.ps1 -Component android 的Debug/Release全量单测和APK构建通过,harness check --strict及git diff --check通过。 设备10空闲检查通过,已覆盖安装192.168.0.173:42681,回读0.9.56(69),GoAuto无障碍仍启用。SHA256 D4C56CDAACF5083E7FE519E6D2CC6CF4F5946CCFC0450BE0015A7DEF7CDD8561。 未自动重试CG99、改地址或下单。实际选码成功仍需用户重试验证,不能以单测代替真机验收。无长期规则变化,跳过Wiki,无关改动保留。 补记v3:c2c1044实现普通网格纵向恢复及横滑失败继续搜索,相关回归及全量Android测试通过。上次集中回写遭429未成功。 当前Git远端仍返回HTTP429,c2c1044和666d19a尚未推送;远端恢复后补推送。
补记:远端恢复,c2c1044与666d19a已随#232推送成功。用户反馈CG99采购成功,记录真机结果;未视作整个工单正式验收关闭。
No dependencies set.
The note is not visible to the blocked user.
原始需求摘要
2026-09-07,本地服务正式采购任务 CG99 已进入 PDD 商品规格面板,但失败为“有界搜索后未找到精确规格”。用户观察颜色/尺码较多,目标可能需要横向滑动;要求在尽量不影响当前高成功率采购流程的前提下修复。
当前事实与根因
基线提交:
1f40a7f。spec_probe已采集 20 个颜色、5 个尺码;固化目标颜色位于探测颜色数组第 14 项,目标尺码位于第 3 项,说明服务端匹配结果属于当次真实候选。PurchaseRehearsalExecutor.locateExactSpec()只执行 DOWN 3 次、UP 6 次纵向搜索,没有横向颜色搜索。目标
只在既有精确规格直接查找和纵向有界搜索均未找到目标颜色时,增加基于已解析颜色行的横向有界兜底搜索,并继续只点击服务端下发的逐字精确值。
非目标
实施方案
dimension=color且原路径返回目标不可见时,启动横向兜底;单列纵向颜色不横滑。specHorizontalSwipes=12、stableEdgeReads=2作为上限和稳定边界;页面关闭、容器/行消失、滑动失败、目标歧义或不可用均 fail-closed。设计证据
恢复既有精确规格选择行为的非 UI 缺陷,不新增页面或交互,不需要原型。
验收
风险与控制
修改点位于公共规格选择器,回归风险为低到中。通过“原成功路径不变、仅颜色最终不可见时进入横向兜底”、严格精确匹配、有限次数与完整回归降低风险。付款永久禁止。
依赖、并行与文档影响
gitea.env+ Gitea API;凭据不输出、不入库。实施完成,待人工验收
实现:
specHorizontalSwipes=12与stableEdgeReads=2,避免两套常量漂移。代码:
fix/230-horizontal-spec-selection7b9fcfb fix(agent): search horizontally for exact purchase color (#230)验证:
PurchaseRehearsalExecutorTest定向测试通过;新增覆盖横向后页精确颜色、首屏零横滑、单列不横滑、横滑失败安全终止。scripts/verify.ps1 -Component android:Debug/Release 单元测试与 Debug APK 构建通过。python dev_scripts/harness.py check --strict、git diff --check:通过。3D222F30246E007A5A91249AB51BA0608834DC13F01B2BAB93C6B7F259DA704F。192.168.0.173:42681,回读 0.9.53(66),GoAuto 无障碍服务仍启用。未自动重试 CG99,未修改地址、未创建订单、未支付。CG99 可由用户手动执行同任务重试验收。无长期规则或契约变化,跳过 Wiki 更新。
实施前工作区不存在未提交业务源码;既有
settings.yml本机超时改动、重复 Wiki 镜像头、原型与临时文件均与本工单无关,其中原始控件树禁止入库,已全部原样保留且未纳入提交。v2 范围更新(CG99 真机回归)
0.9.53 真机重试 CG99 后,目标颜色已成功选中,但尺码未选中并返回无诊断后缀的旧错误“有界搜索后未找到精确规格”。数据库确认首趟探测存在 5 个尺码,固化目标尺码位于第 3 项;当前实现仅
dimension=color进入横向兜底,尺码仍只执行纵向搜索。v2 调整:
新增验收:长尺码位于横向后页可精确选中;首屏尺码零横滑;颜色横向选中后尺码使用独立新锚点;单列且无横向容器的尺码不横滑;既有颜色及全部采购回归通过。
仍不修改服务端、规则、状态机、地址、价格、订单和支付行为;不自动重试 CG99。
v2 实施完成,待人工验收
4e6afc2 fix(agent): search horizontally for exact purchase size (#230)(基于 v17b9fcfb)实现:
color泛化为color/size,但当前可见和原纵向有界搜索仍优先,原成功路径不进入新逻辑。dimension及横纵次数、候选数、终止原因,不记录规格正文、坐标、控件树或截图。验证:
PurchaseRehearsalExecutorTest定向测试通过。scripts/verify.ps1 -Component android:Debug/Release 单测与 Debug APK 构建通过。python dev_scripts/harness.py check --strict、git diff --check:通过。7AFBECC4276DE9F1DBFC5E7BE12D108A101998DB68B066E187210826D65A6460。192.168.0.173:42681,回读为 0.9.54(67),GoAuto 无障碍服务仍启用。未自动重试 CG99,未修改地址、未创建订单、未支付。请由用户手动执行同任务重试验收。无长期契约/规则变化,跳过 Wiki 更新;既有无关工作区改动继续保留。
v3 开始实施
用户确认继续 #230 v3。最新 CG99 错误为 dimension=size;horizontalSwipes=0;verticalRecoverySwipes=0;visibleCandidates=2;reason=restoreSwipeFailed,设备已确认 0.9.54(67)。
修正上层同排多值即横滑、底层要求横向容器的不一致;横向容器不存在时按纵向网格继续有界搜索;滑动后重新定位,移除旧锚点回退,稳定判定包括布局变化并区分预算与边界。细分底层锚点、容器、手势失败诊断。补充真实结构回归,构建安装;不自动执行真实订单。
实际底层失败原因尚缺日志证据,不将缺少容器写为已证实根因。无 API、数据库、规则与业务安全边界变化,作为既有精确选择内部修复,无长期 Wiki 影响。
当前无 Gitea MCP,沿用已记录的安全配置 API 回退。
v4 开始实施:真机嵌套容器定位冲突
用户已授权修复。现场两个 RecyclerView 中心偏差18/20像素,旧定位只比较类型与中心±32,两个均命中使纵滑失败。人工从尺码标题上滑后目标精确文字出现,enabled/clickable=true、selected=false,祖先为外层规格容器。
方案:优先按当前节点路径及类型、完整边界校验重新定位;路径变化只允许唯一完整边界匹配,歧义或失效保持失败。补嵌套同中心与路径失效测试,构建安装,不自动下单。恢复既有滚动行为,无长期Wiki变化。当前Gitea MCP不可用,沿用API回退。
v4 实现、测试、安装完成,真机待验收
提交666d19a,基于v3提交c2c1044。此次仅修正swipePurchaseIn的容器重定位:递归路径与capture一致,优先当前路径+类型+四边界校验,路径变化时只接受唯一完整边界候选,冲突拒绝。
新增5项测试覆盖现场嵌套近中心容器、同边界按路径区分、路径变化唯一回退、旧路径被不同几何节点复用、类型及四边界校验。scripts/verify.ps1 -Component android 的Debug/Release全量单测和APK构建通过,harness check --strict及git diff --check通过。
设备10空闲检查通过,已覆盖安装192.168.0.173:42681,回读0.9.56(69),GoAuto无障碍仍启用。SHA256 D4C56CDAACF5083E7FE519E6D2CC6CF4F5946CCFC0450BE0015A7DEF7CDD8561。
未自动重试CG99、改地址或下单。实际选码成功仍需用户重试验证,不能以单测代替真机验收。无长期规则变化,跳过Wiki,无关改动保留。
补记v3:c2c1044实现普通网格纵向恢复及横滑失败继续搜索,相关回归及全量Android测试通过。上次集中回写遭429未成功。
当前Git远端仍返回HTTP429,c2c1044和666d19a尚未推送;远端恢复后补推送。
补记:远端恢复,c2c1044与666d19a已随#232推送成功。用户反馈CG99采购成功,记录真机结果;未视作整个工单正式验收关闭。