From 246c40c4e69b0ae04e76ceb200ed051249c73bde Mon Sep 17 00:00:00 2001 From: euvre <93761161+euvre@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:09:16 +0800 Subject: [PATCH] fix: show resolved embedding model display name in dataset list (#17415) --- internal/dao/kb.go | 1 + internal/entity/dataset.go | 1 + internal/service/dataset/crud.go | 11 ++++++++++- internal/service/memory.go | 10 +++++----- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/internal/dao/kb.go b/internal/dao/kb.go index 0f0c403db5..e1a315e1dd 100644 --- a/internal/dao/kb.go +++ b/internal/dao/kb.go @@ -182,6 +182,7 @@ func (dao *KnowledgebaseDAO) GetByTenantIDs(ctx context.Context, db *gorm.DB, te knowledgebase.language, knowledgebase.description, knowledgebase.tenant_id, knowledgebase.permission, knowledgebase.doc_num, knowledgebase.token_num, knowledgebase.chunk_num, knowledgebase.parser_id, knowledgebase.embd_id, + knowledgebase.tenant_embd_id, user.nickname, user.avatar as tenant_avatar, knowledgebase.update_time`). Joins("LEFT JOIN user ON knowledgebase.tenant_id = user.id"). Where("((knowledgebase.tenant_id IN ? AND knowledgebase.permission = ?) OR knowledgebase.tenant_id = ?) AND knowledgebase.status = ?", diff --git a/internal/entity/dataset.go b/internal/entity/dataset.go index 0e74f16ff3..6f3dc62147 100644 --- a/internal/entity/dataset.go +++ b/internal/entity/dataset.go @@ -235,6 +235,7 @@ type KnowledgebaseListItem struct { ChunkNum int64 `json:"chunk_num"` ParserID string `json:"parser_id"` EmbdID string `json:"embd_id"` + TenantEmbdID *string `json:"tenant_embd_id,omitempty"` Nickname string `json:"nickname"` TenantAvatar *string `json:"tenant_avatar,omitempty"` UpdateTime *int64 `json:"update_time,omitempty"` diff --git a/internal/service/dataset/crud.go b/internal/service/dataset/crud.go index 51716e9daf..d666014ee6 100644 --- a/internal/service/dataset/crud.go +++ b/internal/service/dataset/crud.go @@ -383,11 +383,20 @@ func (d *DatasetService) ListDatasets(ctx context.Context, id, name string, page } data := make([]map[string]interface{}, 0, len(kbs)) + modelNameCache := make(map[string]string) for _, kb := range kbs { if kb == nil { continue } - data = append(data, datasetListItemToMap(kb)) + item := datasetListItemToMap(kb) + // Mirror the memory list: surface the concrete model display name + // (modelName@instance@provider) instead of a raw tenant_model ID. + tenantEmbdID := ptrStringValue(kb.TenantEmbdID) + if tenantEmbdID == "" && isHexID(kb.EmbdID) { + tenantEmbdID = kb.EmbdID + } + item["embedding_model"] = service.ResolveTenantModelDisplayName(tenantEmbdID, kb.EmbdID, modelNameCache) + data = append(data, item) } return data, total, common.CodeSuccess, nil diff --git a/internal/service/memory.go b/internal/service/memory.go index a11427db38..6ee0fbd7d3 100644 --- a/internal/service/memory.go +++ b/internal/service/memory.go @@ -1469,8 +1469,8 @@ func (s *MemoryService) ListMemories(ctx context.Context, userID string, tenantI } memoryMap := map[string]interface{}{ "id": resp.ID, - "llm_id": resolveTenantModelDisplayName(ptrStringValue(resp.TenantLLMID), resp.LLMID, modelNameCache), - "embd_id": resolveTenantModelDisplayName(ptrStringValue(resp.TenantEmbdID), resp.EmbdID, modelNameCache), + "llm_id": ResolveTenantModelDisplayName(ptrStringValue(resp.TenantLLMID), resp.LLMID, modelNameCache), + "embd_id": ResolveTenantModelDisplayName(ptrStringValue(resp.TenantEmbdID), resp.EmbdID, modelNameCache), "name": resp.Name, "avatar": resp.Avatar, "tenant_id": resp.TenantID, @@ -1491,10 +1491,10 @@ func (s *MemoryService) ListMemories(ctx context.Context, userID string, tenantI }, nil } -// resolveTenantModelDisplayName turns a tenant_model ID into +// ResolveTenantModelDisplayName turns a tenant_model ID into // modelName@instance@provider. rawModelID is the API-facing fallback -// stored on memory.llm_id / memory.embd_id. -func resolveTenantModelDisplayName(tenantModelID, rawModelID string, cache map[string]string) string { +// stored on memory.llm_id / memory.embd_id / knowledgebase.embd_id. +func ResolveTenantModelDisplayName(tenantModelID, rawModelID string, cache map[string]string) string { tenantModelID = strings.TrimSpace(tenantModelID) rawModelID = strings.TrimSpace(rawModelID) if tenantModelID == "" || strings.Contains(tenantModelID, "@") {