mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-16 08:57:30 +02:00
Add files via upload
This commit is contained in:
@@ -325,6 +325,7 @@ func (db *DB) initTables() error {
|
|||||||
session_key TEXT PRIMARY KEY,
|
session_key TEXT PRIMARY KEY,
|
||||||
conversation_id TEXT NOT NULL,
|
conversation_id TEXT NOT NULL,
|
||||||
role_name TEXT NOT NULL DEFAULT '默认',
|
role_name TEXT NOT NULL DEFAULT '默认',
|
||||||
|
agent_mode TEXT NOT NULL DEFAULT 'eino_single',
|
||||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE
|
FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE
|
||||||
);`
|
);`
|
||||||
@@ -750,6 +751,9 @@ func (db *DB) initTables() error {
|
|||||||
if _, err := db.Exec(createRobotUserSessionsTable); err != nil {
|
if _, err := db.Exec(createRobotUserSessionsTable); err != nil {
|
||||||
return fmt.Errorf("创建robot_user_sessions表失败: %w", err)
|
return fmt.Errorf("创建robot_user_sessions表失败: %w", err)
|
||||||
}
|
}
|
||||||
|
if err := db.migrateRobotUserSessionsTable(); err != nil {
|
||||||
|
return fmt.Errorf("迁移robot_user_sessions表失败: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := db.Exec(createProjectsTable); err != nil {
|
if _, err := db.Exec(createProjectsTable); err != nil {
|
||||||
return fmt.Errorf("创建projects表失败: %w", err)
|
return fmt.Errorf("创建projects表失败: %w", err)
|
||||||
@@ -873,6 +877,18 @@ func (db *DB) initTables() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *DB) migrateRobotUserSessionsTable() error {
|
||||||
|
var count int
|
||||||
|
if err := db.QueryRow("SELECT COUNT(*) FROM pragma_table_info('robot_user_sessions') WHERE name='agent_mode'").Scan(&count); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if count == 0 {
|
||||||
|
_, err := db.Exec("ALTER TABLE robot_user_sessions ADD COLUMN agent_mode TEXT NOT NULL DEFAULT 'eino_single'")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// migrateMessagesTable 迁移 messages 表,补充 updated_at 字段。
|
// migrateMessagesTable 迁移 messages 表,补充 updated_at 字段。
|
||||||
// 语义:updated_at 表示该条消息最后一次被写入/更新的时间(例如助手占位消息在任务结束时更新正文)。
|
// 语义:updated_at 表示该条消息最后一次被写入/更新的时间(例如助手占位消息在任务结束时更新正文)。
|
||||||
func (db *DB) migrateMessagesTable() error {
|
func (db *DB) migrateMessagesTable() error {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ type RobotSessionBinding struct {
|
|||||||
SessionKey string
|
SessionKey string
|
||||||
ConversationID string
|
ConversationID string
|
||||||
RoleName string
|
RoleName string
|
||||||
|
AgentMode string
|
||||||
UpdatedAt time.Time
|
UpdatedAt time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,9 +25,9 @@ func (db *DB) GetRobotSessionBinding(sessionKey string) (*RobotSessionBinding, e
|
|||||||
var b RobotSessionBinding
|
var b RobotSessionBinding
|
||||||
var updatedAt string
|
var updatedAt string
|
||||||
err := db.QueryRow(
|
err := db.QueryRow(
|
||||||
"SELECT session_key, conversation_id, role_name, updated_at FROM robot_user_sessions WHERE session_key = ?",
|
"SELECT session_key, conversation_id, role_name, agent_mode, updated_at FROM robot_user_sessions WHERE session_key = ?",
|
||||||
sessionKey,
|
sessionKey,
|
||||||
).Scan(&b.SessionKey, &b.ConversationID, &b.RoleName, &updatedAt)
|
).Scan(&b.SessionKey, &b.ConversationID, &b.RoleName, &b.AgentMode, &updatedAt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
@@ -43,28 +44,36 @@ func (db *DB) GetRobotSessionBinding(sessionKey string) (*RobotSessionBinding, e
|
|||||||
if strings.TrimSpace(b.RoleName) == "" {
|
if strings.TrimSpace(b.RoleName) == "" {
|
||||||
b.RoleName = "默认"
|
b.RoleName = "默认"
|
||||||
}
|
}
|
||||||
|
if strings.TrimSpace(b.AgentMode) == "" {
|
||||||
|
b.AgentMode = "eino_single"
|
||||||
|
}
|
||||||
return &b, nil
|
return &b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpsertRobotSessionBinding 写入或更新机器人会话绑定(包含角色)。
|
// UpsertRobotSessionBinding 写入或更新机器人会话绑定(包含角色)。
|
||||||
func (db *DB) UpsertRobotSessionBinding(sessionKey, conversationID, roleName string) error {
|
func (db *DB) UpsertRobotSessionBinding(sessionKey, conversationID, roleName, agentMode string) error {
|
||||||
sessionKey = strings.TrimSpace(sessionKey)
|
sessionKey = strings.TrimSpace(sessionKey)
|
||||||
conversationID = strings.TrimSpace(conversationID)
|
conversationID = strings.TrimSpace(conversationID)
|
||||||
roleName = strings.TrimSpace(roleName)
|
roleName = strings.TrimSpace(roleName)
|
||||||
|
agentMode = strings.TrimSpace(agentMode)
|
||||||
if sessionKey == "" || conversationID == "" {
|
if sessionKey == "" || conversationID == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if roleName == "" {
|
if roleName == "" {
|
||||||
roleName = "默认"
|
roleName = "默认"
|
||||||
}
|
}
|
||||||
|
if agentMode == "" {
|
||||||
|
agentMode = "eino_single"
|
||||||
|
}
|
||||||
_, err := db.Exec(`
|
_, err := db.Exec(`
|
||||||
INSERT INTO robot_user_sessions (session_key, conversation_id, role_name, updated_at)
|
INSERT INTO robot_user_sessions (session_key, conversation_id, role_name, agent_mode, updated_at)
|
||||||
VALUES (?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?)
|
||||||
ON CONFLICT(session_key) DO UPDATE SET
|
ON CONFLICT(session_key) DO UPDATE SET
|
||||||
conversation_id = excluded.conversation_id,
|
conversation_id = excluded.conversation_id,
|
||||||
role_name = excluded.role_name,
|
role_name = excluded.role_name,
|
||||||
|
agent_mode = excluded.agent_mode,
|
||||||
updated_at = excluded.updated_at
|
updated_at = excluded.updated_at
|
||||||
`, sessionKey, conversationID, roleName, time.Now())
|
`, sessionKey, conversationID, roleName, agentMode, time.Now())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("写入机器人会话绑定失败: %w", err)
|
return fmt.Errorf("写入机器人会话绑定失败: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user