feat: 更新 Server 后端服务
- 更新 agent handler 和 service 层 - 新增 chat_group handler 和 service - 删除废弃的 chat_handler - 更新 tool 相关处理 - 更新 API 文档和依赖 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -147,64 +147,70 @@ func main() {
|
||||
}
|
||||
|
||||
// 3. 自动迁移表
|
||||
if err := db.AutoMigrate(&model.DatabaseInfo{}, &model.SubTableInfo{}, &model.ModelInfo{}, &model.KnowledgeBase{}, &model.KnowledgeDocument{}, &model.User{}, &model.Role{}, &model.Tool{}, &model.MCP{}, &model.Skill{}, &model.Agent{}, &model.AgentSkill{}, &model.AgentKnowledgeBase{}, &model.AgentMemory{}, &model.AgentTeam{}, &model.AgentTask{}, &model.ChatSession{}, &model.ChatMessage{}, &model.ChatGroup{}).Error; err != nil {
|
||||
log.Println("Starting AutoMigrate...")
|
||||
err = db.AutoMigrate(&model.DatabaseInfo{}, &model.SubTableInfo{}, &model.ModelInfo{}, &model.KnowledgeBase{}, &model.KnowledgeDocument{}, &model.User{}, &model.Role{}, &model.Tool{}, &model.MCP{}, &model.Skill{}, &model.Agent{}, &model.AgentSkill{}, &model.AgentKnowledgeBase{}, &model.AgentMemory{}, &model.AgentTeam{}, &model.AgentTask{}, &model.ChatSession{}, &model.ChatMessage{}, &model.ChatGroup{})
|
||||
if err != nil {
|
||||
log.Printf("Warning: AutoMigrate error: %v", err)
|
||||
}
|
||||
log.Println("AutoMigrate completed")
|
||||
|
||||
// 3.2 确保 agents 表存在(使用 SQL 强制创建)
|
||||
db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS agents (
|
||||
id VARCHAR(191) PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description TEXT,
|
||||
owner_id VARCHAR(50) NOT NULL,
|
||||
INDEX idx_owner_id (owner_id),
|
||||
skills TEXT,
|
||||
role_description TEXT,
|
||||
model_provider VARCHAR(50),
|
||||
model_name VARCHAR(100),
|
||||
is_supervisor TINYINT(1) DEFAULT 0,
|
||||
is_active TINYINT(1) DEFAULT 1,
|
||||
created_at DATETIME(3),
|
||||
updated_at DATETIME(3)
|
||||
)
|
||||
`)
|
||||
// 3.2 确保 agents 表存在(仅 MySQL 模式)
|
||||
if cfg.DatabaseType != "sqlite" {
|
||||
db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS agents (
|
||||
id VARCHAR(191) PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
description TEXT,
|
||||
owner_id VARCHAR(50) NOT NULL,
|
||||
INDEX idx_owner_id (owner_id),
|
||||
skills TEXT,
|
||||
role_description TEXT,
|
||||
model_provider VARCHAR(50),
|
||||
model_name VARCHAR(100),
|
||||
is_supervisor TINYINT(1) DEFAULT 0,
|
||||
is_active TINYINT(1) DEFAULT 1,
|
||||
created_at DATETIME(3),
|
||||
updated_at DATETIME(3)
|
||||
)
|
||||
`)
|
||||
}
|
||||
|
||||
// 3.1 确保 users 和 roles 表存在(使用 SQL 强制创建)
|
||||
db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS roles (
|
||||
id VARCHAR(191) PRIMARY KEY,
|
||||
name VARCHAR(191) UNIQUE,
|
||||
permissions TEXT,
|
||||
created_at DATETIME(3),
|
||||
updated_at DATETIME(3)
|
||||
)
|
||||
`)
|
||||
db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id VARCHAR(191) PRIMARY KEY,
|
||||
username VARCHAR(50) UNIQUE NOT NULL,
|
||||
password VARCHAR(191) NOT NULL,
|
||||
email VARCHAR(191),
|
||||
role_id VARCHAR(50) NOT NULL,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
created_at DATETIME(3),
|
||||
updated_at DATETIME(3),
|
||||
INDEX idx_users_username (username),
|
||||
INDEX idx_users_email (email)
|
||||
)
|
||||
`)
|
||||
// 3.1 确保 users 和 roles 表存在(仅 MySQL 模式)
|
||||
if cfg.DatabaseType != "sqlite" {
|
||||
db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS roles (
|
||||
id VARCHAR(191) PRIMARY KEY,
|
||||
name VARCHAR(191) UNIQUE,
|
||||
permissions TEXT,
|
||||
created_at DATETIME(3),
|
||||
updated_at DATETIME(3)
|
||||
)
|
||||
`)
|
||||
db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id VARCHAR(191) PRIMARY KEY,
|
||||
username VARCHAR(50) UNIQUE NOT NULL,
|
||||
password VARCHAR(191) NOT NULL,
|
||||
email VARCHAR(191),
|
||||
role_id VARCHAR(50) NOT NULL,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
created_at DATETIME(3),
|
||||
updated_at DATETIME(3),
|
||||
INDEX idx_users_username (username),
|
||||
INDEX idx_users_email (email)
|
||||
)
|
||||
`)
|
||||
|
||||
// 3.2 确保 tools 表存在(使用 SQL 强制创建)
|
||||
db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS tools (
|
||||
id VARCHAR(191) PRIMARY KEY,
|
||||
name VARCHAR(100) UNIQUE NOT NULL,
|
||||
description TEXT,
|
||||
category VARCHAR(50) NOT NULL,
|
||||
provider VARCHAR(100),
|
||||
security_level VARCHAR(20) DEFAULT 'safe',
|
||||
require_approval BOOLEAN DEFAULT FALSE,
|
||||
// 3.2 确保 tools 表存在(使用 SQL 强制创建)
|
||||
db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS tools (
|
||||
id VARCHAR(191) PRIMARY KEY,
|
||||
name VARCHAR(100) UNIQUE NOT NULL,
|
||||
description TEXT,
|
||||
category VARCHAR(50) NOT NULL,
|
||||
provider VARCHAR(100),
|
||||
security_level VARCHAR(20) DEFAULT 'safe',
|
||||
require_approval BOOLEAN DEFAULT FALSE,
|
||||
parameters TEXT,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at DATETIME(3),
|
||||
@@ -214,6 +220,7 @@ func main() {
|
||||
INDEX idx_tools_status (status)
|
||||
)
|
||||
`)
|
||||
}
|
||||
|
||||
// 3.3 确保 MCP 表存在
|
||||
db.Exec(`
|
||||
@@ -404,7 +411,7 @@ func main() {
|
||||
|
||||
// 初始化群聊服务
|
||||
chatGroupRepo := repository.NewChatGroupRepository(db)
|
||||
chatGroupService := service.NewChatGroupService(chatGroupRepo, agentRepo)
|
||||
chatGroupService := service.NewChatGroupService(chatGroupRepo, agentRepo, cfg.PythonServiceURL)
|
||||
chatGroupHandler := handler.NewChatGroupHandler(chatGroupService)
|
||||
|
||||
var uploadHandler *handler.UploadHandler
|
||||
@@ -548,7 +555,8 @@ func main() {
|
||||
toolGroup := r.Group("/tool")
|
||||
{
|
||||
toolGroup.GET("/list", toolHandler.List)
|
||||
toolGroup.GET("/sync", toolHandler.Sync) // 手动同步
|
||||
toolGroup.GET("/sync", toolHandler.Sync) // 手动同步
|
||||
toolGroup.POST("/sync-from-python", toolHandler.SyncFromPython) // 从Python同步
|
||||
toolGroup.GET("/:id", toolHandler.GetByID)
|
||||
toolGroup.POST("/add", toolHandler.Create)
|
||||
toolGroup.PUT("/:id", toolHandler.Update)
|
||||
|
||||
Reference in New Issue
Block a user