diff --git a/core/init/migration/helper/menu.go b/core/init/migration/helper/menu.go index b09471ab3..7765a0076 100644 --- a/core/init/migration/helper/menu.go +++ b/core/init/migration/helper/menu.go @@ -149,8 +149,8 @@ func LoadMenus() string { IsShow: true, Label: "AIProxyManagement", Path: "/ai/ai-proxy/model-pool", - Sort: 75, - }, "AIModel") + Sort: 150, + }, "Agents") item[i].Children = UpsertMenuByLabel(item[i].Children, dto.ShowMenu{ ID: "47", Disabled: false, @@ -158,8 +158,8 @@ func LoadMenus() string { IsShow: true, Label: "SkillsHub", Path: "/ai/skills-hub", - Sort: 225, - }, "MCPServer") + Sort: 175, + }, "AIProxyManagement") item[i].Children = UpsertMenuByLabel(item[i].Children, dto.ShowMenu{ ID: "45", Disabled: false, @@ -167,8 +167,8 @@ func LoadMenus() string { IsShow: true, Label: "AIBenchmark", Path: "/ai/benchmark", - Sort: 250, - }, "SkillsHub") + Sort: 350, + }, "GPU") continue } if item[i].Label != "Xpack-Menu" { @@ -205,12 +205,12 @@ func MenuSort() []dto.MenuLabelSort { {Label: "App-Menu", Sort: 200}, {Label: "AI-Menu", Sort: 300}, {Label: "AIModel", Sort: 50}, - {Label: "AIProxyManagement", Sort: 75}, {Label: "Agents", Sort: 100}, + {Label: "AIProxyManagement", Sort: 150}, + {Label: "SkillsHub", Sort: 175}, {Label: "MCPServer", Sort: 200}, - {Label: "SkillsHub", Sort: 225}, - {Label: "AIBenchmark", Sort: 250}, {Label: "GPU", Sort: 300}, + {Label: "AIBenchmark", Sort: 350}, {Label: "Website-Menu", Sort: 400}, {Label: "Website", Sort: 100}, {Label: "SSL", Sort: 200}, diff --git a/core/init/migration/migrate.go b/core/init/migration/migrate.go index b0f1aa5e0..cab382c9f 100644 --- a/core/init/migration/migrate.go +++ b/core/init/migration/migrate.go @@ -70,5 +70,6 @@ func coreMigrations() []*gormigrate.Migration { migrations.AddAPIKeys, migrations.AddOperationLogAPIKey, migrations.UpdateAiMenuOrder, + migrations.UpdateAiMenuOrderV2, } } diff --git a/core/init/migration/migrations/init.go b/core/init/migration/migrations/init.go index 4c505c219..c500ddcd6 100644 --- a/core/init/migration/migrations/init.go +++ b/core/init/migration/migrations/init.go @@ -1391,6 +1391,21 @@ var UpdateAiMenuOrder = &gormigrate.Migration{ }, } +var UpdateAiMenuOrderV2 = &gormigrate.Migration{ + ID: "20261026-update-ai-menu-order-v2", + Migrate: func(tx *gorm.DB) error { + return helper.UpdateChildMenuSortByLabel(tx, "AI-Menu", []dto.MenuLabelSort{ + {Label: "AIModel", Sort: 50}, + {Label: "Agents", Sort: 100}, + {Label: "AIProxyManagement", Sort: 150}, + {Label: "SkillsHub", Sort: 175}, + {Label: "MCPServer", Sort: 200}, + {Label: "GPU", Sort: 300}, + {Label: "AIBenchmark", Sort: 350}, + }) + }, +} + var UpdateFirewallMenuPath = &gormigrate.Migration{ ID: "20260819-update-firewall-menu-path", Migrate: func(tx *gorm.DB) error { diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index c4f20f1f6..addeffb76 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -468,7 +468,7 @@ const message = { ssl: 'Certificate | Certificates', database: 'Database | Databases', aiTools: 'AI', - mcp: 'MCP', + mcp: 'MCP Management', container: 'Container | Containers', cronjob: 'Cron Job | Cron Jobs', system: 'System', @@ -1387,7 +1387,7 @@ const message = { sampleImportPlaceholder: 'One sample per line', }, skillsHub: { - title: 'Skills Hub', + title: 'Skills Repository', upload: 'Upload Skill', importSkill: 'Import Skill', repositoryAddress: 'Repository Address', @@ -2719,7 +2719,7 @@ const message = { detail: { dashboard: 'Overview', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Skills Repository', ai_proxy: 'AI Proxy', ai_benchmark: 'Benchmark', groups: 'Group', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 3c3ea5398..28b35685c 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -467,7 +467,7 @@ const message = { ssl: 'Certificado | Certificados', database: 'Base de datos | Bases de datos', aiTools: 'IA', - mcp: 'MCP', + mcp: 'Gestión de MCP', container: 'Contenedor | Contenedores', cronjob: 'Tarea programada | Tareas programadas', system: 'Sistema', @@ -1393,7 +1393,7 @@ const message = { apiKeyCount: 'Cantidad', }, skillsHub: { - title: 'Skills Hub', + title: 'Repositorio de Skills', upload: 'Subir Skill', importSkill: 'Importar Skill', repositoryAddress: 'Dirección del repositorio', @@ -2762,7 +2762,7 @@ const message = { detail: { dashboard: 'Resumen general', ai: 'IA', - skills_hub: 'Skills Hub', + skills_hub: 'Repositorio de Skills', ai_proxy: 'Proxy de IA', ai_benchmark: 'Benchmark', groups: 'Grupo', diff --git a/frontend/src/lang/modules/fa.ts b/frontend/src/lang/modules/fa.ts index 331f32ef5..29c263112 100644 --- a/frontend/src/lang/modules/fa.ts +++ b/frontend/src/lang/modules/fa.ts @@ -463,7 +463,7 @@ const message = { ssl: 'گواهی | گواهی‌ها', database: 'پایگاه داده | پایگاه‌های داده', aiTools: 'هوش مصنوعی', - mcp: 'MCP', + mcp: 'مدیریت MCP', container: 'کانتینر | کانتینرها', cronjob: 'وظیفه زمان‌بندی شده | وظایف زمان‌بندی شده', system: 'سیستم', @@ -1371,7 +1371,7 @@ const message = { sampleImportPlaceholder: 'هر خط یک نمونه', }, skillsHub: { - title: 'مرکز مهارت', + title: 'مخزن مهارت‌ها', upload: 'بارگذاری مهارت', importSkill: 'واردات مهارت', repositoryAddress: 'آدرس مخزن', @@ -2691,7 +2691,7 @@ const message = { detail: { dashboard: 'نمای کلی', ai: 'هوش مصنوعی', - skills_hub: 'مرکز مهارت', + skills_hub: 'مخزن مهارت‌ها', ai_proxy: 'پروکسی هوش مصنوعی', ai_benchmark: 'معیار سنجش', groups: 'گروه', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 02fc155dd..592b8b4c1 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -465,7 +465,7 @@ const message = { ssl: '証明書|証明書', database: 'データベース|データベース', aiTools: 'AI', - mcp: 'MCP', + mcp: 'MCP 管理', container: 'コンテナ|コンテナ', cronjob: 'クロンジョブ|クロンの仕事', system: 'システム', @@ -1375,7 +1375,7 @@ const message = { apiKeyCount: 'API キー数', }, skillsHub: { - title: 'Skills Hub', + title: 'Skills リポジトリ', upload: 'Skill をアップロード', importSkill: 'Skill をインポート', repositoryAddress: 'リポジトリアドレス', @@ -2701,7 +2701,7 @@ const message = { detail: { dashboard: '概要', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Skills リポジトリ', ai_proxy: 'AIプロキシ', ai_benchmark: 'ベンチマーク', groups: 'グループ', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index d4723d156..66d4a4644 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -460,7 +460,7 @@ const message = { ssl: '인증서 | 인증서들', database: '데이터베이스 | 데이터베이스들', aiTools: 'AI', - mcp: 'MCP', + mcp: 'MCP 관리', container: '컨테이너 | 컨테이너들', cronjob: '크론 작업 | 크론 작업들', system: '시스템', @@ -1363,7 +1363,7 @@ const message = { apiKeyCount: 'API 키 수', }, skillsHub: { - title: 'Skills Hub', + title: 'Skills 저장소', upload: 'Skill 업로드', importSkill: 'Skill 가져오기', repositoryAddress: '저장소 주소', @@ -2658,7 +2658,7 @@ const message = { detail: { dashboard: '개요', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Skills 저장소', ai_proxy: 'AI 프록시', ai_benchmark: '벤치마크', groups: '그룹', diff --git a/frontend/src/lang/modules/lo.ts b/frontend/src/lang/modules/lo.ts index 72115ccb4..c22af1d5d 100644 --- a/frontend/src/lang/modules/lo.ts +++ b/frontend/src/lang/modules/lo.ts @@ -461,7 +461,7 @@ const message = { ssl: 'ໃບຢັ້ງຢືນ | ໃບຢັ້ງຢືນ', database: 'ຖານຂໍ້ມູນ | ຖານຂໍ້ມູນ', aiTools: 'AI', - mcp: 'MCP', + mcp: 'ການຈັດການ MCP', container: 'ຄອນເທນເນີ | ຄອນເທນເນີ', cronjob: 'ໜ້າວຽກຕັ້ງເວລາ | ໜ້າວຽກຕັ້ງເວລາ', system: 'ລະບົບ', @@ -1358,7 +1358,7 @@ const message = { sampleImportPlaceholder: 'ໜຶ່ງຕົວຢ່າງຕໍ່ແຖວ', }, skillsHub: { - title: 'ສູນລວມທັກສະ (Skills Hub)', + title: 'ຄັງທັກສະ', upload: 'ອັບໂຫຼດທັກສະ', importSkill: 'ນຳເຂົ້າທັກສະ', repositoryAddress: 'ທີ່ຢູ່ຄັງເກັບ (Repository)', @@ -2634,7 +2634,7 @@ const message = { detail: { dashboard: 'ພາບລວມ', ai: 'AI', - skills_hub: 'ສູນລວມທັກສະ', + skills_hub: 'ຄັງທັກສະ', ai_proxy: 'AI Proxy', ai_benchmark: 'ການທົດສອບປະສິດທິພາບ', groups: 'ກຸ່ມ', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 2736736ae..de2cbd4a4 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -472,7 +472,7 @@ const message = { ssl: 'Sijil', database: 'Pangkalan Data', aiTools: 'AI', - mcp: 'MCP', + mcp: 'Pengurusan MCP', container: 'Kontena', cronjob: 'Tugas Berjadual', system: 'System', @@ -1399,7 +1399,7 @@ const message = { apiKeyCount: 'Kuantiti', }, skillsHub: { - title: 'Skills Hub', + title: 'Repositori Skills', upload: 'Muat naik Skill', importSkill: 'Import Kemahiran', repositoryAddress: 'Alamat repositori', @@ -2759,7 +2759,7 @@ const message = { detail: { dashboard: 'Overview', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Repositori Skills', ai_proxy: 'Proksi AI', ai_benchmark: 'Penanda Aras', groups: 'Kumpulan', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index b8b5a5315..7b57cf9d9 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -465,7 +465,7 @@ const message = { ssl: 'Certificado | Certificados', database: 'Banco de Dados | Bancos de Dados', aiTools: 'AI', - mcp: 'MCP', + mcp: 'Gerenciamento de MCP', container: 'Contêineres', cronjob: 'Tarefa Cron | Tarefas Cron', system: 'Sistema', @@ -1395,7 +1395,7 @@ const message = { apiKeyCount: 'Quantidade', }, skillsHub: { - title: 'Skills Hub', + title: 'Repositório de Skills', upload: 'Enviar Skill', importSkill: 'Importar Skill', repositoryAddress: 'Endereço do repositório', @@ -2759,7 +2759,7 @@ const message = { detail: { dashboard: 'Visão Geral', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Repositório de Skills', ai_proxy: 'Proxy de IA', ai_benchmark: 'Benchmark', groups: 'Grupos', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index b94418915..9805a0c10 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -464,7 +464,7 @@ const message = { ssl: 'Сертификат | Сертификаты', database: 'База данных | Базы данных', aiTools: 'AI', - mcp: 'MCP', + mcp: 'Управление MCP', container: 'Контейнер | Контейнеры', cronjob: 'Cron | Задачи Cron', system: 'Система', @@ -1387,7 +1387,7 @@ const message = { apiKeyCount: 'Количество', }, skillsHub: { - title: 'Skills Hub', + title: 'Репозиторий Skills', upload: 'Загрузить Skill', importSkill: 'Импортировать Skill', repositoryAddress: 'Адрес репозитория', @@ -2743,7 +2743,7 @@ const message = { detail: { dashboard: 'Обзор', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Репозиторий Skills', ai_proxy: 'AI Proxy', ai_benchmark: 'Бенчмарк', groups: 'Группы', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index eddc66f46..f55c8c95c 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -468,7 +468,7 @@ const message = { ssl: 'Sertifika | Sertifikalar', database: 'Veritabanı | Veritabanları', aiTools: 'AI', - mcp: 'MCP', + mcp: 'MCP Yönetimi', container: 'Konteyner | Konteynerler', cronjob: 'Cron İşi | Cron İşleri', system: 'Sistem', @@ -1397,7 +1397,7 @@ const message = { apiKeyCount: 'Miktar', }, skillsHub: { - title: 'Skills Hub', + title: 'Skills Deposu', upload: 'Skill yükle', importSkill: 'Skill içe aktar', repositoryAddress: 'Depo adresi', @@ -2752,7 +2752,7 @@ const message = { detail: { dashboard: 'Genel Bakış', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Skills Deposu', ai_proxy: 'AI Proxy', ai_benchmark: 'Benchmark', groups: 'Grup', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 8125eb935..500f004f9 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -447,7 +447,7 @@ const message = { security: '安全', database: '資料庫', aiTools: 'AI', - mcp: 'MCP', + mcp: 'MCP 管理', container: '容器', cronjob: '計劃任務', system: '系統', @@ -1314,7 +1314,7 @@ const message = { apiKeyCount: '數量', }, skillsHub: { - title: 'Skills Hub', + title: 'Skills 倉庫', upload: '上傳 Skill', importSkill: '匯入 Skill', repositoryAddress: '倉庫地址', @@ -2550,7 +2550,7 @@ const message = { detail: { dashboard: '概覽', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Skills 倉庫', ai_proxy: 'AI 網關', ai_benchmark: '基準測試', groups: '分組', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index e62fd3dea..d7dec6126 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -448,7 +448,7 @@ const message = { security: '安全', database: '数据库', aiTools: 'AI', - mcp: 'MCP', + mcp: 'MCP 管理', container: '容器', cronjob: '计划任务', system: '系统', @@ -1327,7 +1327,7 @@ const message = { sampleImportPlaceholder: '每行一个样本', }, skillsHub: { - title: 'Skills Hub', + title: 'Skills 仓库', upload: '上传 Skill', importSkill: '导入 Skill', repositoryAddress: '仓库地址', @@ -2581,7 +2581,7 @@ const message = { detail: { dashboard: '概览', ai: 'AI', - skills_hub: 'Skills Hub', + skills_hub: 'Skills 仓库', ai_proxy: 'AI 网关', ai_benchmark: '基准测试', groups: '分组',