fix(*): 模型选择 - 修复系统渠道 Logo 搜索与前台模型模式误判
This commit is contained in:
1 parent
560d309dfe
commit
4ee5b630ed
4 files changed
+117
-26
No files matched your search
@@ -1,6 +1,15 @@
|
||||
package service
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"infinite-canvas/backend/internal/model"
|
||||
"infinite-canvas/backend/internal/repository"
|
||||
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func TestTaskInputUsesWorkflowProvider(t *testing.T) {
|
||||
tests := []struct {
|
||||
@@ -26,3 +35,49 @@ func TestTaskInputUsesWorkflowProvider(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveTaskModelSelectionAllowsExplicitSystemChannelWhenFrontendModelsEnabled(t *testing.T) {
|
||||
db, err := gorm.Open(sqlite.Open("file:"+newID()+"?mode=memory&cache=shared"), &gorm.Config{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := db.AutoMigrate(&model.ModelChannel{}, &model.ChannelModel{}, &model.ChannelModelPriceTier{}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
channel := model.ModelChannel{ID: "channel-1", Scope: model.ChannelScopeSystem, Enabled: true, Name: "Agnes"}
|
||||
channelModel := model.ChannelModel{
|
||||
ID: "channel-model-1", ChannelID: channel.ID, ModelKey: "agnes-video-2.5", Capability: "video",
|
||||
Protocol: model.ChannelInterfaceNewAPIVideo, BillingMode: "per_second", PriceConfigured: true, Enabled: true,
|
||||
}
|
||||
if err := db.Create(&channel).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := db.Create(&channelModel).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
input, err := normalizeTaskInput(map[string]any{
|
||||
"mode": "video",
|
||||
"config": providerConfig{ChannelID: channel.ID, Model: channelModel.ModelKey, InterfaceType: string(channelModel.Protocol)},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
routed, resolvedInput, err := (&Service{repo: repository.New(db)}).resolveTaskModelSelection(input, "", "canvas_video", "", true)
|
||||
if err != nil {
|
||||
t.Fatalf("resolveTaskModelSelection() error = %v", err)
|
||||
}
|
||||
if routed != nil || resolvedInput["config"] == nil {
|
||||
t.Fatalf("resolveTaskModelSelection() routed = %#v, input = %#v", routed, resolvedInput)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveTaskModelSelectionStillRequiresLogicalModelWithoutExplicitSystemChannel(t *testing.T) {
|
||||
_, _, err := (&Service{}).resolveTaskModelSelection(map[string]any{
|
||||
"mode": "video",
|
||||
"config": map[string]any{"model": "agnes-video-2.5"},
|
||||
}, "", "canvas_video", "", true)
|
||||
if err == nil || !strings.Contains(err.Error(), "logicalModelId") {
|
||||
t.Fatalf("resolveTaskModelSelection() error = %v, want logicalModelId validation", err)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user