| | |
| | | `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 '状态', |
| | |
| | | `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 '创建时间', |
| | |
| | | `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 '删除标记', |
| | |
| | | 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`) |