fix(model-catalog): align enabled model summary
This commit is contained in:
@@ -202,6 +202,9 @@ func buildModelCatalog(
|
||||
sourceCount := 0
|
||||
for _, model := range models {
|
||||
platform := platformMap[model.PlatformID]
|
||||
if !catalogSourceEnabled(model, platform) {
|
||||
continue
|
||||
}
|
||||
baseModel := baseModelMap[model.BaseModelID]
|
||||
providerKey := modelProviderKey(model, baseModel, platform)
|
||||
provider := providerMap[providerKey]
|
||||
@@ -271,6 +274,10 @@ func buildModelCatalog(
|
||||
}
|
||||
}
|
||||
|
||||
func catalogSourceEnabled(model store.PlatformModel, platform store.Platform) bool {
|
||||
return model.Enabled && platform.ID != "" && platform.Status == "enabled"
|
||||
}
|
||||
|
||||
func modelCatalogItem(group *catalogGroup, accessRuleGroups map[string]accessRuleGroup) ModelCatalogItem {
|
||||
sources := sortedCatalogSources(group.sources)
|
||||
primary := sources[0]
|
||||
|
||||
@@ -168,6 +168,71 @@ func TestBuildModelCatalogUsesBaseModelProviderForProviderFilters(t *testing.T)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildModelCatalogOnlyUsesEnabledPlatformModels(t *testing.T) {
|
||||
models := []store.PlatformModel{
|
||||
{
|
||||
ID: "enabled-source",
|
||||
PlatformID: "platform-enabled",
|
||||
BaseModelID: "base-deepseek",
|
||||
ModelName: "deepseek-chat",
|
||||
ModelAlias: "DeepSeek Chat",
|
||||
ModelType: store.StringList{"text_generate"},
|
||||
DisplayName: "DeepSeek Chat",
|
||||
Enabled: true,
|
||||
},
|
||||
{
|
||||
ID: "disabled-model",
|
||||
PlatformID: "platform-enabled",
|
||||
BaseModelID: "base-deepseek",
|
||||
ModelName: "deepseek-chat",
|
||||
ModelAlias: "DeepSeek Chat",
|
||||
ModelType: store.StringList{"text_generate"},
|
||||
DisplayName: "DeepSeek Chat",
|
||||
Enabled: false,
|
||||
},
|
||||
{
|
||||
ID: "disabled-platform",
|
||||
PlatformID: "platform-disabled",
|
||||
BaseModelID: "base-deepseek",
|
||||
ModelName: "deepseek-chat",
|
||||
ModelAlias: "DeepSeek Chat",
|
||||
ModelType: store.StringList{"text_generate"},
|
||||
DisplayName: "DeepSeek Chat",
|
||||
Enabled: true,
|
||||
},
|
||||
}
|
||||
platforms := []store.Platform{
|
||||
{ID: "platform-enabled", Provider: "aliyun-bailian-openai", Name: "阿里云百炼(OpenAI兼容)", Status: "enabled"},
|
||||
{ID: "platform-disabled", Provider: "silicon-flow-openai", Name: "硅基流动", Status: "disabled"},
|
||||
}
|
||||
providers := []store.CatalogProvider{
|
||||
{ProviderKey: "deepseek-openai", DisplayName: "DeepSeek"},
|
||||
{ProviderKey: "aliyun-bailian-openai", DisplayName: "阿里云百炼(OpenAI兼容)"},
|
||||
{ProviderKey: "silicon-flow-openai", DisplayName: "硅基流动"},
|
||||
}
|
||||
baseModels := []store.BaseModel{
|
||||
{ID: "base-deepseek", ProviderKey: "deepseek-openai", ProviderModelName: "deepseek-chat", ModelAlias: "DeepSeek Chat"},
|
||||
}
|
||||
|
||||
response := buildModelCatalog(models, platforms, providers, nil, nil, nil, baseModels)
|
||||
if response.Summary.ModelCount != 1 || response.Summary.SourceCount != 1 {
|
||||
t.Fatalf("expected only one enabled source, got %+v", response.Summary)
|
||||
}
|
||||
item := response.Items[0]
|
||||
if item.SourceCount != 1 || len(item.Sources) != 1 || item.Sources[0].ID != "enabled-source" {
|
||||
t.Fatalf("expected only enabled source in item, got sourceCount=%d sources=%+v", item.SourceCount, item.Sources)
|
||||
}
|
||||
if len(item.ProviderKeys) != 1 || item.ProviderKeys[0] != "deepseek-openai" {
|
||||
t.Fatalf("expected base model provider deepseek-openai, got %+v", item.ProviderKeys)
|
||||
}
|
||||
if !hasFilterCount(response.Filters.Providers, "deepseek-openai", 1) {
|
||||
t.Fatalf("expected DeepSeek provider filter, got %+v", response.Filters.Providers)
|
||||
}
|
||||
if hasFilterCount(response.Filters.Providers, "aliyun-bailian-openai", 1) || hasFilterCount(response.Filters.Providers, "silicon-flow-openai", 1) {
|
||||
t.Fatalf("did not expect platform provider filters: %+v", response.Filters.Providers)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBillingConfigLinesShowsTextInputAndOutputPricing(t *testing.T) {
|
||||
lines := billingConfigLines(map[string]any{
|
||||
"text_total": map[string]any{
|
||||
|
||||
Reference in New Issue
Block a user