From b0728aba5c01842e24da3cff04e44be06c6bb655 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 13:38:38 +0800
Subject: [PATCH] #AI.去除多余mcp

---
 version/db/ai_feature.sql |  287 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 262 insertions(+), 25 deletions(-)

diff --git a/version/db/ai_feature.sql b/version/db/ai_feature.sql
index 529ea30..dd141fb 100644
--- a/version/db/ai_feature.sql
+++ b/version/db/ai_feature.sql
@@ -13,6 +13,10 @@
   `max_tokens` int(11) DEFAULT NULL COMMENT '鏈�澶oken',
   `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 '鍒犻櫎鏍囪',
@@ -56,6 +60,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 +84,8 @@
   `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 '鍒犻櫎鏍囪',
@@ -93,6 +103,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 '鍒犻櫎鏍囪',
@@ -101,6 +112,127 @@
   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)
@@ -118,6 +250,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`
@@ -133,6 +333,54 @@
 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`
@@ -158,29 +406,14 @@
   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`)
@@ -199,7 +432,9 @@
 (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`),
@@ -233,7 +468,9 @@
 (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`);

--
Gitblit v1.9.1