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
@@ -15,7 +15,8 @@ package main
|
||||
// (既有 6 家的键与值逐字不变,主人已在用的配置不受影响)。
|
||||
//
|
||||
// ⇒ 加一家 provider = `plugins/tools/io/search` 加一个接入位文件 + 表里一行,**本文件一行
|
||||
// 都不用改**,`.env` 一个键都不用加。
|
||||
// 都不用改**,`.env` 一个键都不用加。`tencent_wsa` / `metaso` 就是这么进来的(两家都
|
||||
// **没有** env 字段:`.env` 已冻结,它们的 key / 基地址只从面板文件取)。
|
||||
|
||||
import (
|
||||
"strings"
|
||||
@@ -55,7 +56,10 @@ type searchProviderWire struct {
|
||||
// 云家部分)。它只服务两处:`.env` 缺失时的播种内容(seedWebSearchFile),以及
|
||||
// 「没有可用文件」时的生效投影(envEffectiveWebSearch)。
|
||||
//
|
||||
// ⚠️ 它**不是**逐条的兜底层:文件存在时,文件里没有的家就是没有(见 resolveSearchProviders)。
|
||||
// ⚠️ 它**不是**「本期内置几家」的名单:登记表里还有两家**没有 env 字段**的家
|
||||
// (tencent_wsa / metaso,`.env` 已冻结 ⇒ 不给它们加键),它们只从面板文件生效
|
||||
// (`resolveSearchProviders` 按 `search.Descriptors()` 逐家投影,不经过本函数)。
|
||||
// 它也**不是**逐条的兜底层:文件存在时,文件里没有的家就是没有(见 resolveSearchProviders)。
|
||||
// 这条口径由 `wire_web_search_panel_test.go` 的
|
||||
// `TestWireIOTools_PanelConfigClearedProviderDoesNotReviveFromEnv` 钉住。
|
||||
func searchProviderVector(ws config.WebSearchConfig) []searchProviderWire {
|
||||
|
||||
Reference in new issue
Block a user