| | |
| | | `max_tokens` int(11) DEFAULT NULL COMMENT '最大Token', |
| | | `timeout_ms` int(11) DEFAULT NULL COMMENT '超时时间', |
| | | `streaming_enabled` tinyint(1) DEFAULT '1' COMMENT '是否启用流式响应', |
| | | `validate_status` varchar(32) DEFAULT 'NOT_TESTED' COMMENT '最近校验状态', |
| | | `last_validate_message` varchar(500) DEFAULT NULL COMMENT '最近校验信息', |
| | | `last_validate_elapsed_ms` bigint(20) DEFAULT NULL COMMENT '最近校验耗时', |
| | | `last_validate_time` datetime DEFAULT NULL COMMENT '最近校验时间', |
| | | `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户', |
| | | `status` int(11) DEFAULT '1' COMMENT '状态', |
| | | `deleted` int(11) DEFAULT '0' COMMENT '删除标记', |
| | |
| | | `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 '删除标记', |
| | |
| | | `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 '删除标记', |
| | |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_sys_ai_chat_message_session_seq` (`session_id`,`seq_no`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 对话消息'; |
| | | |
| | | CREATE TABLE IF NOT EXISTS `sys_ai_call_log` ( |
| | | `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', |
| | | `request_id` varchar(128) NOT NULL COMMENT '请求ID', |
| | | `session_id` bigint(20) DEFAULT NULL COMMENT '会话ID', |
| | | `prompt_code` varchar(128) DEFAULT NULL COMMENT 'Prompt编码', |
| | | `prompt_name` varchar(255) DEFAULT NULL COMMENT 'Prompt名称', |
| | | `model` varchar(255) DEFAULT NULL COMMENT '模型', |
| | | `user_id` bigint(20) DEFAULT NULL COMMENT '用户ID', |
| | | `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID', |
| | | `status` varchar(32) DEFAULT NULL COMMENT '状态', |
| | | `error_category` varchar(64) DEFAULT NULL COMMENT '错误分类', |
| | | `error_stage` varchar(64) DEFAULT NULL COMMENT '错误阶段', |
| | | `error_message` varchar(1000) DEFAULT NULL COMMENT '错误信息', |
| | | `configured_mcp_count` int(11) DEFAULT NULL COMMENT '配置MCP数量', |
| | | `mounted_mcp_count` int(11) DEFAULT NULL COMMENT '挂载MCP数量', |
| | | `mounted_mcp_names` varchar(1000) DEFAULT NULL COMMENT '挂载MCP名称', |
| | | `tool_call_count` int(11) DEFAULT NULL COMMENT '工具调用总数', |
| | | `tool_success_count` int(11) DEFAULT NULL COMMENT '工具成功数', |
| | | `tool_failure_count` int(11) DEFAULT NULL COMMENT '工具失败数', |
| | | `elapsed_ms` bigint(20) DEFAULT NULL COMMENT '总耗时', |
| | | `first_token_latency_ms` bigint(20) DEFAULT NULL COMMENT '首包耗时', |
| | | `prompt_tokens` int(11) DEFAULT NULL COMMENT 'Prompt Tokens', |
| | | `completion_tokens` int(11) DEFAULT NULL COMMENT 'Completion Tokens', |
| | | `total_tokens` int(11) DEFAULT NULL COMMENT 'Total Tokens', |
| | | `deleted` int(11) DEFAULT '0' COMMENT '删除标记', |
| | | `create_time` datetime DEFAULT NULL COMMENT '创建时间', |
| | | `update_time` datetime DEFAULT NULL COMMENT '更新时间', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_sys_ai_call_log_tenant_create` (`tenant_id`,`create_time`), |
| | | KEY `idx_sys_ai_call_log_request` (`request_id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 调用日志'; |
| | | |
| | | CREATE TABLE IF NOT EXISTS `sys_ai_mcp_call_log` ( |
| | | `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', |
| | | `call_log_id` bigint(20) NOT NULL COMMENT 'AI调用日志ID', |
| | | `request_id` varchar(128) DEFAULT NULL COMMENT '请求ID', |
| | | `session_id` bigint(20) DEFAULT NULL COMMENT '会话ID', |
| | | `tool_call_id` varchar(128) DEFAULT NULL COMMENT '工具调用ID', |
| | | `mount_name` varchar(255) DEFAULT NULL COMMENT '挂载名称', |
| | | `tool_name` varchar(255) DEFAULT NULL COMMENT '工具名称', |
| | | `status` varchar(32) DEFAULT NULL COMMENT '状态', |
| | | `input_summary` text COMMENT '输入摘要', |
| | | `output_summary` text COMMENT '输出摘要', |
| | | `error_message` varchar(1000) DEFAULT NULL COMMENT '错误信息', |
| | | `duration_ms` bigint(20) DEFAULT NULL COMMENT '耗时', |
| | | `user_id` bigint(20) DEFAULT NULL COMMENT '用户ID', |
| | | `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID', |
| | | `create_time` datetime DEFAULT NULL COMMENT '创建时间', |
| | | PRIMARY KEY (`id`), |
| | | KEY `idx_sys_ai_mcp_call_log_call` (`call_log_id`,`create_time`), |
| | | KEY `idx_sys_ai_mcp_call_log_tenant` (`tenant_id`,`create_time`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI MCP 调用日志'; |
| | | |
| | | SET @ai_param_validate_status_exists := ( |
| | | SELECT COUNT(1) |
| | | FROM `information_schema`.`COLUMNS` |
| | | WHERE `TABLE_SCHEMA` = DATABASE() |
| | | AND `TABLE_NAME` = 'sys_ai_param' |
| | | AND `COLUMN_NAME` = 'validate_status' |
| | | ); |
| | | SET @ai_param_validate_status_sql := IF( |
| | | @ai_param_validate_status_exists = 0, |
| | | 'ALTER TABLE `sys_ai_param` ADD COLUMN `validate_status` varchar(32) DEFAULT ''NOT_TESTED'' COMMENT ''最近校验状态'' AFTER `streaming_enabled`', |
| | | 'SELECT 1' |
| | | ); |
| | | PREPARE ai_param_validate_status_stmt FROM @ai_param_validate_status_sql; |
| | | EXECUTE ai_param_validate_status_stmt; |
| | | DEALLOCATE PREPARE ai_param_validate_status_stmt; |
| | | |
| | | SET @ai_param_last_validate_message_exists := ( |
| | | SELECT COUNT(1) |
| | | FROM `information_schema`.`COLUMNS` |
| | | WHERE `TABLE_SCHEMA` = DATABASE() |
| | | AND `TABLE_NAME` = 'sys_ai_param' |
| | | AND `COLUMN_NAME` = 'last_validate_message' |
| | | ); |
| | | SET @ai_param_last_validate_message_sql := IF( |
| | | @ai_param_last_validate_message_exists = 0, |
| | | 'ALTER TABLE `sys_ai_param` ADD COLUMN `last_validate_message` varchar(500) DEFAULT NULL COMMENT ''最近校验信息'' AFTER `validate_status`', |
| | | 'SELECT 1' |
| | | ); |
| | | PREPARE ai_param_last_validate_message_stmt FROM @ai_param_last_validate_message_sql; |
| | | EXECUTE ai_param_last_validate_message_stmt; |
| | | DEALLOCATE PREPARE ai_param_last_validate_message_stmt; |
| | | |
| | | SET @ai_param_last_validate_elapsed_exists := ( |
| | | SELECT COUNT(1) |
| | | FROM `information_schema`.`COLUMNS` |
| | | WHERE `TABLE_SCHEMA` = DATABASE() |
| | | AND `TABLE_NAME` = 'sys_ai_param' |
| | | AND `COLUMN_NAME` = 'last_validate_elapsed_ms' |
| | | ); |
| | | SET @ai_param_last_validate_elapsed_sql := IF( |
| | | @ai_param_last_validate_elapsed_exists = 0, |
| | | 'ALTER TABLE `sys_ai_param` ADD COLUMN `last_validate_elapsed_ms` bigint(20) DEFAULT NULL COMMENT ''最近校验耗时'' AFTER `last_validate_message`', |
| | | 'SELECT 1' |
| | | ); |
| | | PREPARE ai_param_last_validate_elapsed_stmt FROM @ai_param_last_validate_elapsed_sql; |
| | | EXECUTE ai_param_last_validate_elapsed_stmt; |
| | | DEALLOCATE PREPARE ai_param_last_validate_elapsed_stmt; |
| | | |
| | | SET @ai_param_last_validate_time_exists := ( |
| | | SELECT COUNT(1) |
| | | FROM `information_schema`.`COLUMNS` |
| | | WHERE `TABLE_SCHEMA` = DATABASE() |
| | | AND `TABLE_NAME` = 'sys_ai_param' |
| | | AND `COLUMN_NAME` = 'last_validate_time' |
| | | ); |
| | | SET @ai_param_last_validate_time_sql := IF( |
| | | @ai_param_last_validate_time_exists = 0, |
| | | 'ALTER TABLE `sys_ai_param` ADD COLUMN `last_validate_time` datetime DEFAULT NULL COMMENT ''最近校验时间'' AFTER `last_validate_elapsed_ms`', |
| | | 'SELECT 1' |
| | | ); |
| | | PREPARE ai_param_last_validate_time_stmt FROM @ai_param_last_validate_time_sql; |
| | | EXECUTE ai_param_last_validate_time_stmt; |
| | | DEALLOCATE PREPARE ai_param_last_validate_time_stmt; |
| | | |
| | | UPDATE `sys_ai_param` |
| | | SET `validate_status` = 'NOT_TESTED' |
| | | WHERE `validate_status` IS NULL OR `validate_status` = ''; |
| | | |
| | | SET @builtin_code_exists := ( |
| | | SELECT COUNT(1) |
| | |
| | | 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` |
| | |
| | | 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` |
| | |
| | | WHERE `tenant_id` = 1 AND `transport_type` = 'BUILTIN' AND `builtin_code` = 'RSF_WMS' AND `deleted` = 0 |
| | | ); |
| | | |
| | | INSERT INTO `sys_ai_mcp_mount` |
| | | (`name`, `transport_type`, `builtin_code`, `request_timeout_ms`, `sort`, `tenant_id`, `status`, `deleted`, `create_time`, `create_by`, `update_time`, `update_by`, `memo`) |
| | | SELECT 'RSF WMS 库存作业内置 MCP', 'BUILTIN', 'RSF_WMS_STOCK', 60000, 1, 1, 0, 0, '2026-03-19 10:00:00', 2, '2026-03-19 10:00:00', 2, '内置库存查询和站点查询工具' |
| | | WHERE NOT EXISTS ( |
| | | SELECT 1 FROM `sys_ai_mcp_mount` |
| | | WHERE `tenant_id` = 1 AND `transport_type` = 'BUILTIN' AND `builtin_code` = 'RSF_WMS_STOCK' AND `deleted` = 0 |
| | | ); |
| | | |
| | | INSERT INTO `sys_ai_mcp_mount` |
| | | (`name`, `transport_type`, `builtin_code`, `request_timeout_ms`, `sort`, `tenant_id`, `status`, `deleted`, `create_time`, `create_by`, `update_time`, `update_by`, `memo`) |
| | | SELECT 'RSF WMS 任务查询内置 MCP', 'BUILTIN', 'RSF_WMS_TASK', 60000, 2, 1, 0, 0, '2026-03-19 10:00:00', 2, '2026-03-19 10:00:00', 2, '内置任务列表与任务详情查询工具' |
| | | WHERE NOT EXISTS ( |
| | | SELECT 1 FROM `sys_ai_mcp_mount` |
| | | WHERE `tenant_id` = 1 AND `transport_type` = 'BUILTIN' AND `builtin_code` = 'RSF_WMS_TASK' AND `deleted` = 0 |
| | | ); |
| | | |
| | | INSERT INTO `sys_ai_mcp_mount` |
| | | (`name`, `transport_type`, `builtin_code`, `request_timeout_ms`, `sort`, `tenant_id`, `status`, `deleted`, `create_time`, `create_by`, `update_time`, `update_by`, `memo`) |
| | | SELECT 'RSF WMS 基础资料内置 MCP', 'BUILTIN', 'RSF_WMS_BASE', 60000, 3, 1, 0, 0, '2026-03-19 10:00:00', 2, '2026-03-19 10:00:00', 2, '内置仓库、基础站点和字典数据查询工具' |
| | | WHERE NOT EXISTS ( |
| | | SELECT 1 FROM `sys_ai_mcp_mount` |
| | | WHERE `tenant_id` = 1 AND `transport_type` = 'BUILTIN' AND `builtin_code` = 'RSF_WMS_BASE' AND `deleted` = 0 |
| | | ); |
| | | UPDATE `sys_ai_mcp_mount` |
| | | SET `status` = 0, |
| | | `update_time` = '2026-03-19 10:00:00', |
| | | `update_by` = 2, |
| | | `memo` = '已下线,仅保留 RSF_WMS 内置 MCP' |
| | | WHERE `transport_type` = 'BUILTIN' |
| | | AND `builtin_code` IN ('RSF_WMS_STOCK', 'RSF_WMS_TASK', 'RSF_WMS_BASE') |
| | | AND `deleted` = 0; |
| | | |
| | | INSERT INTO `sys_menu` |
| | | (`id`, `name`, `parent_id`, `parent_name`, `path`, `path_name`, `route`, `component`, `brief`, `code`, `type`, `authority`, `icon`, `sort`, `meta`, `tenant_id`, `status`, `deleted`, `create_time`, `create_by`, `update_time`, `update_by`, `memo`) |
| | |
| | | (5312, 'Query AI MCP Mount', 5311, NULL, '1,5311', NULL, NULL, NULL, NULL, NULL, 1, 'system:aiMcpMount:list', NULL, 0, NULL, 1, 1, 0, '2026-03-18 19:00:00', 2, '2026-03-18 19:00:00', 2, NULL), |
| | | (5313, 'Create AI MCP Mount', 5311, NULL, '1,5311', NULL, NULL, NULL, NULL, NULL, 1, 'system:aiMcpMount:save', NULL, 1, NULL, 1, 1, 0, '2026-03-18 19:00:00', 2, '2026-03-18 19:00:00', 2, NULL), |
| | | (5314, 'Update AI MCP Mount', 5311, NULL, '1,5311', NULL, NULL, NULL, NULL, NULL, 1, 'system:aiMcpMount:update', NULL, 2, NULL, 1, 1, 0, '2026-03-18 19:00:00', 2, '2026-03-18 19:00:00', 2, NULL), |
| | | (5315, 'Delete AI MCP Mount', 5311, NULL, '1,5311', NULL, NULL, NULL, NULL, NULL, 1, 'system:aiMcpMount:remove', NULL, 3, NULL, 1, 1, 0, '2026-03-18 19:00:00', 2, '2026-03-18 19:00:00', 2, NULL) |
| | | (5315, 'Delete AI MCP Mount', 5311, NULL, '1,5311', NULL, NULL, NULL, NULL, NULL, 1, 'system:aiMcpMount:remove', NULL, 3, NULL, 1, 1, 0, '2026-03-18 19:00:00', 2, '2026-03-18 19:00:00', 2, NULL), |
| | | (5316, 'menu.aiCallLog', 1, 'menu.system', '1', 'menu.system', '/system/aiCallLog', 'aiCallLog', NULL, NULL, 0, NULL, 'QueryStats', 14, NULL, 1, 1, 0, '2026-03-19 13:00:00', 2, '2026-03-19 13:00:00', 2, NULL), |
| | | (5317, 'Query AI Call Log', 5316, NULL, '1,5316', NULL, NULL, NULL, NULL, NULL, 1, 'system:aiCallLog:list', NULL, 0, NULL, 1, 1, 0, '2026-03-19 13:00:00', 2, '2026-03-19 13:00:00', 2, NULL) |
| | | ON DUPLICATE KEY UPDATE |
| | | `name` = VALUES(`name`), |
| | | `parent_id` = VALUES(`parent_id`), |
| | |
| | | (5312, 1, 5312), |
| | | (5313, 1, 5313), |
| | | (5314, 1, 5314), |
| | | (5315, 1, 5315) |
| | | (5315, 1, 5315), |
| | | (5316, 1, 5316), |
| | | (5317, 1, 5317) |
| | | ON DUPLICATE KEY UPDATE |
| | | `role_id` = VALUES(`role_id`), |
| | | `menu_id` = VALUES(`menu_id`); |