2026-03-11 14:25:55 +08:00
|
|
|
|
package model
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
|
|
"github.com/google/uuid"
|
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// Tool 工具
|
|
|
|
|
|
type Tool struct {
|
|
|
|
|
|
ID string `json:"id" gorm:"primaryKey"`
|
|
|
|
|
|
Name string `json:"name" gorm:"uniqueIndex;size:100;not null"`
|
2026-03-11 14:45:49 +08:00
|
|
|
|
Description string `json:"description" gorm:"type:text"` // 英文描述
|
|
|
|
|
|
DescriptionCN string `json:"description_cn" gorm:"type:text"` // 中文描述
|
2026-03-11 14:25:55 +08:00
|
|
|
|
Category string `json:"category" gorm:"size:50;not null"`
|
|
|
|
|
|
Provider string `json:"provider" gorm:"size:100"`
|
|
|
|
|
|
SecurityLevel string `json:"security_level" gorm:"size:20;default:'safe'"`
|
|
|
|
|
|
RequireApproval bool `json:"require_approval" gorm:"default:false"`
|
|
|
|
|
|
Parameters string `json:"parameters" gorm:"type:text"` // JSON格式存储
|
2026-03-11 14:45:49 +08:00
|
|
|
|
// MCP 特有字段
|
|
|
|
|
|
Transport string `json:"transport" gorm:"size:20;default:'stdio'"` // stdio, http, sse
|
|
|
|
|
|
Command string `json:"command" gorm:"size:500"` // 启动命令
|
|
|
|
|
|
Args string `json:"args" gorm:"type:text"` // 参数,JSON数组格式
|
|
|
|
|
|
Env string `json:"env" gorm:"type:text"` // 环境变量,JSON对象格式
|
|
|
|
|
|
// 状态
|
|
|
|
|
|
Status string `json:"status" gorm:"size:20;default:'active'"`
|
|
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
|
|
UpdatedAt time.Time `json:"updated_at"`
|
2026-03-11 14:25:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// BeforeCreate 创建前自动生成ID
|
|
|
|
|
|
func (t *Tool) BeforeCreate(tx *gorm.DB) error {
|
|
|
|
|
|
if t.ID == "" {
|
|
|
|
|
|
t.ID = uuid.New().String()
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|