From 3d81df739dc45599c257d8cdefe0996f66ccdeae Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 12:18:14 +0800
Subject: [PATCH] #AI.MCP 管理增强

---
 version/db/ai_feature.sql |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/version/db/ai_feature.sql b/version/db/ai_feature.sql
index 898732a..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 '鐘舵��',
@@ -121,6 +125,74 @@
 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`

--
Gitblit v1.9.1