feat(search): 新增腾讯云·元宝搜索与秘塔搜索两家 provider
接入位表六家扩到八家,端点形状与错误码一字未改(契约 v0.87,仅两处名单)。
- tencent_wsa:POST {base}/SearchPro + Authorization Bearer,零签名。
两条官方口径决定实现:HTTP 状态码恒 200(判失败只能读 Response.Error.Code);
Pages 是「JSON 字符串数组」需二次解析。错误码按官方表分类
(UnauthorizedOperation/AuthFailure.* = 凭据、ResourceUnavailable = 欠费、
RequestLimitExceeded* = 限流),文案只带 code 不带上游 Message。
- metaso:POST {base}/api/v1/search,响应 schema 仅第三方来源且互相打架,
实现走宽松解析(数组候选与字段名回退),逐处标「未实测」。
- 零新 env 键:两家只走 $DATA_DIR/config/plugins/web-search.json,
.env / .env.example 未动;组合根 websearch_providers.go 零功能改动。
- 契约 v0.87:values.provider 合法闭集与 plugin.providers 候选各加两条,
计数不变(14 + 25 + 40 = 79)。
This commit is contained in:
1 parent
8e3311cea2
commit
ce9af42945
21 files changed
+1219
-36
No files matched your search
@@ -112,7 +112,10 @@ func TestWireIOTools_AvailableListExcludesUnconfigured(t *testing.T) {
|
||||
if !strings.Contains(out, search.NameBocha) {
|
||||
t.Fatalf("可用清单里应有 bocha: %q", out)
|
||||
}
|
||||
for _, absent := range []string{search.NameZhipu, search.NameAliyunIQS, search.NameVolcengine, search.NameBaiduQianfan} {
|
||||
for _, absent := range []string{
|
||||
search.NameZhipu, search.NameAliyunIQS, search.NameVolcengine, search.NameBaiduQianfan,
|
||||
search.NameTencentWSA, search.NameMetaso,
|
||||
} {
|
||||
if strings.Contains(out, absent) {
|
||||
t.Fatalf("缺 key 的 %s 不得出现在可用清单里: %q", absent, out)
|
||||
}
|
||||
@@ -170,16 +173,17 @@ func TestWireIOTools_SelectedCloudProviderIsUsed(t *testing.T) {
|
||||
}
|
||||
|
||||
// TestWireIOTools_ProviderVectorSummary 是一句「本期内置哪几家」的防回归:
|
||||
// 六家的名字都必须被 search 包登记(新增一家别忘了加文件 + 注册表一行)。
|
||||
// 八家的名字都必须被 search 包登记(新增一家别忘了加文件 + 注册表一行)。
|
||||
func TestWireIOTools_ProviderVectorSummary(t *testing.T) {
|
||||
t.Parallel()
|
||||
want := map[string]bool{
|
||||
search.NameSearXNG: true, search.NameZhipu: true, search.NameAliyunIQS: true,
|
||||
search.NameBocha: true, search.NameVolcengine: true, search.NameBaiduQianfan: true,
|
||||
search.NameTencentWSA: true, search.NameMetaso: true,
|
||||
}
|
||||
got := search.KnownNames()
|
||||
if len(got) != len(want) {
|
||||
t.Fatalf("KnownNames() = %v, want %d 家(本期内置:searxng/zhipu/aliyun_iqs/bocha/volcengine/baidu_qianfan)",
|
||||
t.Fatalf("KnownNames() = %v, want %d 家(本期内置:searxng/zhipu/aliyun_iqs/bocha/volcengine/baidu_qianfan/tencent_wsa/metaso)",
|
||||
got, len(want))
|
||||
}
|
||||
for _, n := range got {
|
||||
|
||||
Reference in new issue
Block a user