
QiuSWandClaude Opus 5
95b5f05ae8
fix(#277): 图搜候选点击改瞄有文案子节点,关联不再被跨币种判据挡死
真机连续排查出三处缺陷,均已实测确认:
1) 候选卡片点不动。快照里 SnapshotNode.label 只取节点自身的 text/
contentDescription,而 clickFreshDetailed 重新定位时用
preferredOrDescendantLabel()(会往子孙里挖)。候选卡片是自身无文案的
FrameLayout,两者算出的 label 一个是空串一个是标题文字,永远对不上,
重找直接 TARGET_NOT_FOUND。改为瞄准卡片内最靠上的有文案子节点,由
clickFreshDetailed 既有的向上走到可点祖先逻辑落到卡片容器上。
卡片内文案的归属同时从 path 前缀改为几何包含——path 父子语义从未核对,
几何包含已用真机 dump 直接验证。
2) 错误码拆分。IMAGE_SEARCH_NO_CANDIDATES 此前同时表示“结果页没出现”和
“卡片点不动”,定位问题时完全分不清。拆为 RESULTS_NOT_READY /
NO_CANDIDATES / CANDIDATE_CLICK_FAILED,并把 clickFreshDetailed 的
result 与 reason 带进失败消息——这两个值本来就有,此前被丢弃。
3) 自动关联从上线起一次都没执行过。snapshot.PriceGuardSkipped 与
shopee_product.currency != "CNY" 两处各自 return nil,而 priceSkipped
的唯一来源就是 referenceCurrency != "CNY",两者是同一个条件;线上 26902
个虾皮商品全部是 TWD。表现为图搜任务 completed、PDD 商品采集完整,但
关联停在旧值,采购因此无法创建(订单 26091536MJHXG8 即如此)。
币种不同只说明价格没法比,不说明关联不该建立,两件事已解耦。
补偿控制是 image_search_linked 标记,已显示在商品页与采购视图。
ImageSearchPriceAllowed 零调用方,加 [未接线] 标注,避免再被当成生效的
防线;待引入可配汇率后再接。
测试夹具默认币种由 CNY 改为 TWD(线上真实币种),并新增跨币种必须关联、
同币种行为不变两个用例。此前夹具用 CNY,所以整套用例全绿而线上从未成功。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F
2026-09-15 16:27:15 +08:00
..
2026-09-15 16:27:15 +08:00
2026-09-07 11:05:24 +08:00
2026-08-15 14:24:45 +08:00