fix(model-catalog): align enabled model summary

This commit is contained in:
2026-05-24 23:06:24 +08:00
parent 71950d2b4f
commit 355d8cad74
4 changed files with 79 additions and 7 deletions
@@ -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{