From 01a154b194cf5067be092556b7937a7b79e6110d Mon Sep 17 00:00:00 2001 From: gxmst Date: Thu, 30 Jul 2026 17:50:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(discovery):=20getAvailableModels=20?= =?UTF-8?q?=E4=BC=A0=E5=85=A5=20spaceId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `fetchAvailableModelsMetadata` 给 `getAvailableModels` 发的是空 body `{}`, 上游一律返回 400 ValidationError。调用方用 `if err == nil` 吞掉了这个错误, 所以失败没有任何征兆:`meta.Models` 恒为空,模型列表永久回落到 `builtinModelDefinitions()` 的内置表,自动同步实际上从未生效。 该接口要求 `spaceId`。补上之后可正常返回账号的完整模型目录。 Co-Authored-By: Claude Fable 5 --- internal/app/account_discovery.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/app/account_discovery.go b/internal/app/account_discovery.go index e33dada..f6d9703 100644 --- a/internal/app/account_discovery.go +++ b/internal/app/account_discovery.go @@ -145,8 +145,13 @@ func fetchLoadUserContentMetadata(ctx context.Context, session *loginHTTPSession return meta, nil } -func fetchAvailableModelsMetadata(ctx context.Context, session *loginHTTPSession, upstream NotionUpstream, clientVersion string, activeUserID string) ([]ModelDefinition, error) { - payload, err := postNotionLoginJSON(ctx, session, upstream, upstream.API("getAvailableModels"), clientVersion, upstream.HomeURL(), activeUserID, map[string]any{}) +func fetchAvailableModelsMetadata(ctx context.Context, session *loginHTTPSession, upstream NotionUpstream, clientVersion string, activeUserID string, spaceID string) ([]ModelDefinition, error) { + spaceID = strings.TrimSpace(spaceID) + if spaceID == "" { + return nil, fmt.Errorf("getAvailableModels requires a space_id") + } + body := map[string]any{"spaceId": spaceID} + payload, err := postNotionLoginJSON(ctx, session, upstream, upstream.API("getAvailableModels"), clientVersion, upstream.HomeURL(), activeUserID, body) if err != nil { return nil, err } @@ -220,7 +225,7 @@ func discoverImportedAccountMetadata(ctx context.Context, cfg AppConfig, account } if strings.TrimSpace(meta.ClientVersion) != "" { - if models, err := fetchAvailableModelsMetadata(ctx, session, upstream, meta.ClientVersion, firstNonEmpty(meta.UserID, lookupUserID)); err == nil { + if models, err := fetchAvailableModelsMetadata(ctx, session, upstream, meta.ClientVersion, firstNonEmpty(meta.UserID, lookupUserID), meta.SpaceID); err == nil { meta.Models = models } }