fix(mcp): resolve panic on nil tags argument in toolAddService
This commit is contained in:
+8
-12
@@ -379,6 +379,13 @@ func toolAddService(args map[string]interface{}) (interface{}, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tagsStr := ""
|
||||||
|
if rawTags, ok := args["tags"]; ok && rawTags != nil {
|
||||||
|
if arr, ok := rawTags.([]interface{}); ok {
|
||||||
|
tagsStr = tagsToString(arr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
svc := models.Service{
|
svc := models.Service{
|
||||||
Name: strings.TrimSpace(name),
|
Name: strings.TrimSpace(name),
|
||||||
URL: url,
|
URL: url,
|
||||||
@@ -386,22 +393,11 @@ func toolAddService(args map[string]interface{}) (interface{}, error) {
|
|||||||
Icon: icon,
|
Icon: icon,
|
||||||
CategoryID: categoryID,
|
CategoryID: categoryID,
|
||||||
Status: "unknown",
|
Status: "unknown",
|
||||||
Tags: tagsToString(args["tags"].([]interface{})),
|
Tags: tagsStr,
|
||||||
IsEnabled: isEnabled,
|
IsEnabled: isEnabled,
|
||||||
HealthCheckURL: strings.TrimSpace(healthURL),
|
HealthCheckURL: strings.TrimSpace(healthURL),
|
||||||
HealthCheckEnabled: healthEnabled,
|
HealthCheckEnabled: healthEnabled,
|
||||||
}
|
}
|
||||||
// tags 需要单独处理(args["tags"] 可能不存在)
|
|
||||||
if rawTags, ok := args["tags"]; ok {
|
|
||||||
if arr, ok := rawTags.([]interface{}); ok {
|
|
||||||
svc.Tags = tagsToString(arr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if svc.Tags == "" {
|
|
||||||
if arr, ok := args["tags"].([]interface{}); ok {
|
|
||||||
svc.Tags = tagsToString(arr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := database.DB.Create(&svc).Error; err != nil {
|
if err := database.DB.Create(&svc).Error; err != nil {
|
||||||
return nil, fmt.Errorf("创建失败: %v", err)
|
return nil, fmt.Errorf("创建失败: %v", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user