diff --git a/android/app/src/main/java/cn/ilapage/goauto/agent/automation/RuleContract.kt b/android/app/src/main/java/cn/ilapage/goauto/agent/automation/RuleContract.kt index 208f58c..c5898ba 100644 --- a/android/app/src/main/java/cn/ilapage/goauto/agent/automation/RuleContract.kt +++ b/android/app/src/main/java/cn/ilapage/goauto/agent/automation/RuleContract.kt @@ -150,11 +150,22 @@ object AgentCapabilities { const val PDD_PRODUCT_DETAIL_V1 = "collector.pdd.product-detail.v1" const val PDD_CURRENT_PAGE_SHARE_V1 = "collector.pdd.current-page-share.v1" + /** + * 图搜采集能力(#277)。 + * + * `[必须]` 必须与服务端 `task.ImageSearchCapability` 逐字一致。 + * `taskCompatible` 对 source='image_search' 的任务按该能力过滤: + * 设备不声明则图搜任务**永远不会被领取**,且是静默的—— + * 任务停在 pending、不失败也不报错。 + */ + const val PDD_IMAGE_SEARCH_V1 = "pdd.image-search.v1" + val supported: List = listOf( SCHEMA_V2, SWIPE_V1, PDD_PRODUCT_DETAIL_V1, PDD_CURRENT_PAGE_SHARE_V1, + PDD_IMAGE_SEARCH_V1, PurchaseAgentCapabilities.REHEARSAL_V1, PurchaseAgentCapabilities.LIVE_V1, PurchaseAgentCapabilities.SPEC_PROBE_V1, diff --git a/android/app/src/test/java/cn/ilapage/goauto/agent/AgentCapabilitiesTest.kt b/android/app/src/test/java/cn/ilapage/goauto/agent/AgentCapabilitiesTest.kt new file mode 100644 index 0000000..dd8cce2 --- /dev/null +++ b/android/app/src/test/java/cn/ilapage/goauto/agent/AgentCapabilitiesTest.kt @@ -0,0 +1,27 @@ +package cn.ilapage.goauto.agent + +import cn.ilapage.goauto.agent.automation.AgentCapabilities +import org.junit.Assert.assertTrue +import org.junit.Test + +class AgentCapabilitiesTest { + + // #277: 服务端 taskCompatible 对 source='image_search' 的任务按这个能力过滤。 + // 漏声明时图搜任务永远不会被领取,而且是静默的:任务停在 pending、 + // 不失败也不报错。字符串必须与 task.ImageSearchCapability 逐字一致。 + @Test + fun `supported capabilities include the image search capability the server gates on`() { + assertTrue( + "AgentCapabilities.supported 缺少 pdd.image-search.v1,图搜任务将无法被领取", + AgentCapabilities.supported.contains("pdd.image-search.v1"), + ) + } + + @Test + fun `supported capabilities have no duplicates`() { + assertTrue( + "能力清单出现重复项: " + AgentCapabilities.supported, + AgentCapabilities.supported.size == AgentCapabilities.supported.toSet().size, + ) + } +}