zhou zhou
12 小时以前 b0728aba5c01842e24da3cff04e44be06c6bb655
#AI.去除多余mcp
5个文件已修改
88 ■■■■ 已修改文件
rsf-admin/src/page/system/aiMcpMount/AiMcpMountForm.jsx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/ai/config/AiDefaults.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiMcpMountServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/BuiltinMcpToolRegistryImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/db/ai_feature.sql 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/system/aiMcpMount/AiMcpMountForm.jsx
@@ -95,9 +95,6 @@
                                    label="ai.mcp.fields.builtinCode"
                                    choices={[
                                        { id: "RSF_WMS", name: "RSF_WMS" },
                                        { id: "RSF_WMS_STOCK", name: "RSF_WMS_STOCK" },
                                        { id: "RSF_WMS_TASK", name: "RSF_WMS_TASK" },
                                        { id: "RSF_WMS_BASE", name: "RSF_WMS_BASE" },
                                    ]}
                                    fullWidth
                                    disabled={readOnly}
rsf-server/src/main/java/com/vincent/rsf/server/ai/config/AiDefaults.java
@@ -11,9 +11,6 @@
    public static final String MCP_TRANSPORT_STDIO = "STDIO";
    public static final String MCP_TRANSPORT_BUILTIN = "BUILTIN";
    public static final String MCP_BUILTIN_RSF_WMS = "RSF_WMS";
    public static final String MCP_BUILTIN_RSF_WMS_STOCK = "RSF_WMS_STOCK";
    public static final String MCP_BUILTIN_RSF_WMS_TASK = "RSF_WMS_TASK";
    public static final String MCP_BUILTIN_RSF_WMS_BASE = "RSF_WMS_BASE";
    public static final String MCP_HEALTH_NOT_TESTED = "NOT_TESTED";
    public static final String MCP_HEALTH_HEALTHY = "HEALTHY";
    public static final String MCP_HEALTH_UNHEALTHY = "UNHEALTHY";
rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiMcpMountServiceImpl.java
@@ -298,19 +298,10 @@
    }
    private List<String> resolveConflictCodes(String builtinCode) {
        List<String> codes = new ArrayList<>();
        if (AiDefaults.MCP_BUILTIN_RSF_WMS.equals(builtinCode)) {
            codes.add(AiDefaults.MCP_BUILTIN_RSF_WMS_STOCK);
            codes.add(AiDefaults.MCP_BUILTIN_RSF_WMS_TASK);
            codes.add(AiDefaults.MCP_BUILTIN_RSF_WMS_BASE);
            return codes;
            return List.of();
        }
        if (AiDefaults.MCP_BUILTIN_RSF_WMS_STOCK.equals(builtinCode)
                || AiDefaults.MCP_BUILTIN_RSF_WMS_TASK.equals(builtinCode)
                || AiDefaults.MCP_BUILTIN_RSF_WMS_BASE.equals(builtinCode)) {
            codes.add(AiDefaults.MCP_BUILTIN_RSF_WMS);
        }
        return codes;
        throw new CoolException("不支持的内置 MCP 编码: " + builtinCode);
    }
    private void ensureTenantId(Long tenantId) {
rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/BuiltinMcpToolRegistryImpl.java
@@ -44,19 +44,10 @@
        validateBuiltinCode(builtinCode);
        if (AiDefaults.MCP_BUILTIN_RSF_WMS.equals(builtinCode)) {
            List<ToolCallback> callbacks = new ArrayList<>();
            callbacks.addAll(createValidatedCallbacks(rsfWmsStockTools, AiDefaults.MCP_BUILTIN_RSF_WMS_STOCK));
            callbacks.addAll(createValidatedCallbacks(rsfWmsTaskTools, AiDefaults.MCP_BUILTIN_RSF_WMS_TASK));
            callbacks.addAll(createValidatedCallbacks(rsfWmsBaseTools, AiDefaults.MCP_BUILTIN_RSF_WMS_BASE));
            callbacks.addAll(createValidatedCallbacks(rsfWmsStockTools, builtinCode));
            callbacks.addAll(createValidatedCallbacks(rsfWmsTaskTools, builtinCode));
            callbacks.addAll(createValidatedCallbacks(rsfWmsBaseTools, builtinCode));
            return callbacks;
        }
        if (AiDefaults.MCP_BUILTIN_RSF_WMS_STOCK.equals(builtinCode)) {
            return createValidatedCallbacks(rsfWmsStockTools, builtinCode);
        }
        if (AiDefaults.MCP_BUILTIN_RSF_WMS_TASK.equals(builtinCode)) {
            return createValidatedCallbacks(rsfWmsTaskTools, builtinCode);
        }
        if (AiDefaults.MCP_BUILTIN_RSF_WMS_BASE.equals(builtinCode)) {
            return createValidatedCallbacks(rsfWmsBaseTools, builtinCode);
        }
        throw new CoolException("不支持的内置 MCP 编码: " + builtinCode);
    }
@@ -65,11 +56,7 @@
    public List<AiMcpToolPreviewDto> listBuiltinToolCatalog(String builtinCode) {
        validateBuiltinCode(builtinCode);
        if (AiDefaults.MCP_BUILTIN_RSF_WMS.equals(builtinCode)) {
            List<AiMcpToolPreviewDto> catalog = new ArrayList<>();
            catalog.addAll(catalogByBuiltinCode(AiDefaults.MCP_BUILTIN_RSF_WMS_STOCK).values());
            catalog.addAll(catalogByBuiltinCode(AiDefaults.MCP_BUILTIN_RSF_WMS_TASK).values());
            catalog.addAll(catalogByBuiltinCode(AiDefaults.MCP_BUILTIN_RSF_WMS_BASE).values());
            return catalog;
            return new ArrayList<>(catalogByBuiltinCode(builtinCode).values());
        }
        return new ArrayList<>(catalogByBuiltinCode(builtinCode).values());
    }
@@ -93,16 +80,11 @@
    }
    private List<String> supportedBuiltinCodes() {
        return List.of(
                AiDefaults.MCP_BUILTIN_RSF_WMS,
                AiDefaults.MCP_BUILTIN_RSF_WMS_STOCK,
                AiDefaults.MCP_BUILTIN_RSF_WMS_TASK,
                AiDefaults.MCP_BUILTIN_RSF_WMS_BASE
        );
        return List.of(AiDefaults.MCP_BUILTIN_RSF_WMS);
    }
    private Map<String, AiMcpToolPreviewDto> catalogByBuiltinCode(String builtinCode) {
        if (AiDefaults.MCP_BUILTIN_RSF_WMS_STOCK.equals(builtinCode)) {
        if (AiDefaults.MCP_BUILTIN_RSF_WMS.equals(builtinCode)) {
            Map<String, AiMcpToolPreviewDto> catalog = new LinkedHashMap<>();
            catalog.put("rsf_query_available_inventory", buildCatalogItem(
                    "rsf_query_available_inventory",
@@ -118,10 +100,6 @@
                    "必须提供站点类型列表,类型数量最多 10 个,最多返回 50 个站点。",
                    List.of("查询入库和出库作业可用站点", "列出 AGV_PICK 类型的作业站点")
            ));
            return catalog;
        }
        if (AiDefaults.MCP_BUILTIN_RSF_WMS_TASK.equals(builtinCode)) {
            Map<String, AiMcpToolPreviewDto> catalog = new LinkedHashMap<>();
            catalog.put("rsf_query_task_list", buildCatalogItem(
                    "rsf_query_task_list",
                    "任务查询",
@@ -136,10 +114,6 @@
                    "必须提供任务 ID 或任务号之一,只返回单个任务。",
                    List.of("查询任务 12345 的详情", "根据任务号 TASK24001 查看执行明细")
            ));
            return catalog;
        }
        if (AiDefaults.MCP_BUILTIN_RSF_WMS_BASE.equals(builtinCode)) {
            Map<String, AiMcpToolPreviewDto> catalog = new LinkedHashMap<>();
            catalog.put("rsf_query_warehouses", buildCatalogItem(
                    "rsf_query_warehouses",
                    "基础资料",
version/db/ai_feature.sql
@@ -406,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`)