From ffbf67765d2ae447d62333eed85100a15685d781 Mon Sep 17 00:00:00 2001 From: zhou zhou <3272660260@qq.com> Date: 星期四, 19 三月 2026 12:27:59 +0800 Subject: [PATCH] #AI.内置工具治理 --- version/db/ai_feature.sql | 140 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 140 insertions(+), 0 deletions(-) diff --git a/version/db/ai_feature.sql b/version/db/ai_feature.sql index d5cd06f..35b3112 100644 --- a/version/db/ai_feature.sql +++ b/version/db/ai_feature.sql @@ -56,6 +56,10 @@ `env_json` text COMMENT '鐜鍙橀噺 JSON', `headers_json` text COMMENT '璇锋眰澶� JSON', `request_timeout_ms` int(11) DEFAULT NULL COMMENT '璇锋眰瓒呮椂鏃堕棿', + `health_status` varchar(32) DEFAULT 'NOT_TESTED' COMMENT '鍋ュ悍鐘舵��', + `last_test_time` datetime DEFAULT NULL COMMENT '鏈�杩戞祴璇曟椂闂�', + `last_test_message` varchar(500) DEFAULT NULL COMMENT '鏈�杩戞祴璇曚俊鎭�', + `last_init_elapsed_ms` bigint(20) DEFAULT NULL COMMENT '鏈�杩戝垵濮嬪寲鑰楁椂', `sort` int(11) DEFAULT '0' COMMENT '鎺掑簭', `tenant_id` bigint(20) DEFAULT NULL COMMENT '绉熸埛', `status` int(11) DEFAULT '1' COMMENT '鐘舵��', @@ -76,6 +80,9 @@ `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛 ID', `tenant_id` bigint(20) DEFAULT NULL COMMENT '绉熸埛', `last_message_time` datetime DEFAULT NULL COMMENT '鏈�鍚庢秷鎭椂闂�', + `memory_summary` longtext COMMENT '璁板繂鎽樿', + `memory_facts` text COMMENT '鍏抽敭浜嬪疄', + `pinned` tinyint(1) DEFAULT '0' COMMENT '鏄惁缃《', `status` int(11) DEFAULT '1' COMMENT '鐘舵��', `deleted` int(11) DEFAULT '0' COMMENT '鍒犻櫎鏍囪', `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿', @@ -92,6 +99,7 @@ `seq_no` int(11) NOT NULL COMMENT '娑堟伅搴忓彿', `role` varchar(32) NOT NULL COMMENT '娑堟伅瑙掕壊', `content` longtext COMMENT '娑堟伅鍐呭', + `content_length` int(11) DEFAULT NULL COMMENT '鍐呭闀垮害', `user_id` bigint(20) NOT NULL COMMENT '鐢ㄦ埛 ID', `tenant_id` bigint(20) DEFAULT NULL COMMENT '绉熸埛', `deleted` int(11) DEFAULT '0' COMMENT '鍒犻櫎鏍囪', @@ -117,6 +125,138 @@ EXECUTE builtin_code_stmt; DEALLOCATE PREPARE builtin_code_stmt; +SET @mcp_health_status_exists := ( + SELECT COUNT(1) + FROM `information_schema`.`COLUMNS` + WHERE `TABLE_SCHEMA` = DATABASE() + AND `TABLE_NAME` = 'sys_ai_mcp_mount' + AND `COLUMN_NAME` = 'health_status' +); +SET @mcp_health_status_sql := IF( + @mcp_health_status_exists = 0, + 'ALTER TABLE `sys_ai_mcp_mount` ADD COLUMN `health_status` varchar(32) DEFAULT ''NOT_TESTED'' COMMENT ''鍋ュ悍鐘舵��'' AFTER `request_timeout_ms`', + 'SELECT 1' +); +PREPARE mcp_health_status_stmt FROM @mcp_health_status_sql; +EXECUTE mcp_health_status_stmt; +DEALLOCATE PREPARE mcp_health_status_stmt; + +SET @mcp_last_test_time_exists := ( + SELECT COUNT(1) + FROM `information_schema`.`COLUMNS` + WHERE `TABLE_SCHEMA` = DATABASE() + AND `TABLE_NAME` = 'sys_ai_mcp_mount' + AND `COLUMN_NAME` = 'last_test_time' +); +SET @mcp_last_test_time_sql := IF( + @mcp_last_test_time_exists = 0, + 'ALTER TABLE `sys_ai_mcp_mount` ADD COLUMN `last_test_time` datetime DEFAULT NULL COMMENT ''鏈�杩戞祴璇曟椂闂�'' AFTER `health_status`', + 'SELECT 1' +); +PREPARE mcp_last_test_time_stmt FROM @mcp_last_test_time_sql; +EXECUTE mcp_last_test_time_stmt; +DEALLOCATE PREPARE mcp_last_test_time_stmt; + +SET @mcp_last_test_message_exists := ( + SELECT COUNT(1) + FROM `information_schema`.`COLUMNS` + WHERE `TABLE_SCHEMA` = DATABASE() + AND `TABLE_NAME` = 'sys_ai_mcp_mount' + AND `COLUMN_NAME` = 'last_test_message' +); +SET @mcp_last_test_message_sql := IF( + @mcp_last_test_message_exists = 0, + 'ALTER TABLE `sys_ai_mcp_mount` ADD COLUMN `last_test_message` varchar(500) DEFAULT NULL COMMENT ''鏈�杩戞祴璇曚俊鎭�'' AFTER `last_test_time`', + 'SELECT 1' +); +PREPARE mcp_last_test_message_stmt FROM @mcp_last_test_message_sql; +EXECUTE mcp_last_test_message_stmt; +DEALLOCATE PREPARE mcp_last_test_message_stmt; + +SET @mcp_last_init_elapsed_exists := ( + SELECT COUNT(1) + FROM `information_schema`.`COLUMNS` + WHERE `TABLE_SCHEMA` = DATABASE() + AND `TABLE_NAME` = 'sys_ai_mcp_mount' + AND `COLUMN_NAME` = 'last_init_elapsed_ms' +); +SET @mcp_last_init_elapsed_sql := IF( + @mcp_last_init_elapsed_exists = 0, + 'ALTER TABLE `sys_ai_mcp_mount` ADD COLUMN `last_init_elapsed_ms` bigint(20) DEFAULT NULL COMMENT ''鏈�杩戝垵濮嬪寲鑰楁椂'' AFTER `last_test_message`', + 'SELECT 1' +); +PREPARE mcp_last_init_elapsed_stmt FROM @mcp_last_init_elapsed_sql; +EXECUTE mcp_last_init_elapsed_stmt; +DEALLOCATE PREPARE mcp_last_init_elapsed_stmt; + +UPDATE `sys_ai_mcp_mount` +SET `health_status` = 'NOT_TESTED' +WHERE `health_status` IS NULL OR `health_status` = ''; + +SET @chat_session_pinned_exists := ( + SELECT COUNT(1) + FROM `information_schema`.`COLUMNS` + WHERE `TABLE_SCHEMA` = DATABASE() + AND `TABLE_NAME` = 'sys_ai_chat_session' + AND `COLUMN_NAME` = 'pinned' +); +SET @chat_session_pinned_sql := IF( + @chat_session_pinned_exists = 0, + 'ALTER TABLE `sys_ai_chat_session` ADD COLUMN `pinned` tinyint(1) DEFAULT ''0'' COMMENT ''鏄惁缃《'' AFTER `last_message_time`', + 'SELECT 1' +); +PREPARE chat_session_pinned_stmt FROM @chat_session_pinned_sql; +EXECUTE chat_session_pinned_stmt; +DEALLOCATE PREPARE chat_session_pinned_stmt; + +SET @chat_session_summary_exists := ( + SELECT COUNT(1) + FROM `information_schema`.`COLUMNS` + WHERE `TABLE_SCHEMA` = DATABASE() + AND `TABLE_NAME` = 'sys_ai_chat_session' + AND `COLUMN_NAME` = 'memory_summary' +); +SET @chat_session_summary_sql := IF( + @chat_session_summary_exists = 0, + 'ALTER TABLE `sys_ai_chat_session` ADD COLUMN `memory_summary` longtext COMMENT ''璁板繂鎽樿'' AFTER `last_message_time`', + 'SELECT 1' +); +PREPARE chat_session_summary_stmt FROM @chat_session_summary_sql; +EXECUTE chat_session_summary_stmt; +DEALLOCATE PREPARE chat_session_summary_stmt; + +SET @chat_session_facts_exists := ( + SELECT COUNT(1) + FROM `information_schema`.`COLUMNS` + WHERE `TABLE_SCHEMA` = DATABASE() + AND `TABLE_NAME` = 'sys_ai_chat_session' + AND `COLUMN_NAME` = 'memory_facts' +); +SET @chat_session_facts_sql := IF( + @chat_session_facts_exists = 0, + 'ALTER TABLE `sys_ai_chat_session` ADD COLUMN `memory_facts` text COMMENT ''鍏抽敭浜嬪疄'' AFTER `memory_summary`', + 'SELECT 1' +); +PREPARE chat_session_facts_stmt FROM @chat_session_facts_sql; +EXECUTE chat_session_facts_stmt; +DEALLOCATE PREPARE chat_session_facts_stmt; + +SET @chat_message_length_exists := ( + SELECT COUNT(1) + FROM `information_schema`.`COLUMNS` + WHERE `TABLE_SCHEMA` = DATABASE() + AND `TABLE_NAME` = 'sys_ai_chat_message' + AND `COLUMN_NAME` = 'content_length' +); +SET @chat_message_length_sql := IF( + @chat_message_length_exists = 0, + 'ALTER TABLE `sys_ai_chat_message` ADD COLUMN `content_length` int(11) DEFAULT NULL COMMENT ''鍐呭闀垮害'' AFTER `content`', + 'SELECT 1' +); +PREPARE chat_message_length_stmt FROM @chat_message_length_sql; +EXECUTE chat_message_length_stmt; +DEALLOCATE PREPARE chat_message_length_stmt; + BEGIN; INSERT INTO `sys_ai_prompt` (`id`, `name`, `code`, `scene`, `system_prompt`, `user_prompt_template`, `tenant_id`, `status`, `deleted`, `create_time`, `create_by`, `update_time`, `update_by`, `memo`) -- Gitblit v1.9.1