From 338301907a0bc1e4370b764a9f785bc4bc57e89b Mon Sep 17 00:00:00 2001 From: CityFun <31820853+zhengkunwang223@users.noreply.github.com> Date: Mon, 8 Jun 2026 19:01:19 +0800 Subject: [PATCH] feat: add some translate (#12954) --- agent/app/api/v2/agents.go | 21 ++++ agent/app/dto/agents.go | 16 +++ agent/app/service/agents.go | 100 ++++++++++++++++++ agent/router/ro_ai.go | 1 + core/i18n/lang/en.yaml | 13 +++ core/i18n/lang/es-ES.yaml | 13 +++ core/i18n/lang/ja.yaml | 13 +++ core/i18n/lang/ko.yaml | 13 +++ core/i18n/lang/ms.yaml | 13 +++ core/i18n/lang/pt-BR.yaml | 13 +++ core/i18n/lang/ru.yaml | 13 +++ core/i18n/lang/tr.yaml | 13 +++ core/i18n/lang/zh-Hant.yaml | 13 +++ core/i18n/lang/zh.yaml | 13 +++ frontend/src/lang/modules/en.ts | 20 ++++ frontend/src/lang/modules/es-es.ts | 20 ++++ frontend/src/lang/modules/ja.ts | 20 ++++ frontend/src/lang/modules/ko.ts | 20 ++++ frontend/src/lang/modules/ms.ts | 20 ++++ frontend/src/lang/modules/pt-br.ts | 20 ++++ frontend/src/lang/modules/ru.ts | 20 ++++ frontend/src/lang/modules/tr.ts | 20 ++++ frontend/src/lang/modules/zh-Hant.ts | 20 ++++ frontend/src/lang/modules/zh.ts | 20 ++++ frontend/src/utils/task.ts | 8 ++ .../src/views/ai/mcp/server/import/index.vue | 2 +- .../src/views/ai/mcp/server/operate/index.vue | 4 +- 27 files changed, 479 insertions(+), 3 deletions(-) diff --git a/agent/app/api/v2/agents.go b/agent/app/api/v2/agents.go index 77cc48878..6ca12b9ab 100644 --- a/agent/app/api/v2/agents.go +++ b/agent/app/api/v2/agents.go @@ -90,6 +90,27 @@ func (b *BaseApi) BatchInstallAgentSkill(c *gin.Context) { helper.SuccessWithData(c, res) } +// @Tags AI +// @Summary Batch operate Agent +// @Accept json +// @Param request body dto.AgentBatchOperateReq true "request" +// @Success 200 {array} dto.AgentBatchOperateResult +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /ai/agents/batch/operate [post] +func (b *BaseApi) BatchOperateAgent(c *gin.Context) { + var req dto.AgentBatchOperateReq + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + res, err := agentService.BatchOperate(req) + if err != nil { + helper.BadRequest(c, err) + return + } + helper.SuccessWithData(c, res) +} + // @Tags AI // @Summary Page Agents // @Accept json diff --git a/agent/app/dto/agents.go b/agent/app/dto/agents.go index 23ec5b573..4165e36ae 100644 --- a/agent/app/dto/agents.go +++ b/agent/app/dto/agents.go @@ -89,6 +89,22 @@ type AgentBatchSkillInstallResult struct { Message string `json:"message"` } +type AgentBatchOperateReq struct { + AgentType string `json:"agentType" validate:"required,oneof=openclaw copaw hermes-agent"` + Operate string `json:"operate" validate:"required,oneof=start stop restart delete"` + ForceDelete bool `json:"forceDelete"` + TaskID string `json:"taskID"` +} + +type AgentBatchOperateResult struct { + AgentID uint `json:"agentID"` + AgentName string `json:"agentName"` + AppInstallID uint `json:"appInstallID"` + Success bool `json:"success"` + Skipped bool `json:"skipped"` + Message string `json:"message"` +} + type AgentItem struct { ID uint `json:"id"` Name string `json:"name"` diff --git a/agent/app/service/agents.go b/agent/app/service/agents.go index 18dc5f2e6..d5c1bdb8f 100644 --- a/agent/app/service/agents.go +++ b/agent/app/service/agents.go @@ -35,6 +35,7 @@ type IAgentService interface { BatchInstall(req dto.AgentBatchInstallReq) (*dto.AgentItem, error) BatchUpgrade(req dto.AgentBatchUpgradeReq) ([]dto.AgentBatchUpgradeResult, error) BatchInstallSkill(req dto.AgentBatchSkillInstallReq) ([]dto.AgentBatchSkillInstallResult, error) + BatchOperate(req dto.AgentBatchOperateReq) ([]dto.AgentBatchOperateResult, error) Page(req dto.SearchWithPage) (int64, []dto.AgentItem, error) DeleteCheck(req dto.AgentIDReq) ([]dto.AppResource, error) Delete(req dto.AgentDeleteReq) error @@ -423,6 +424,75 @@ func (a AgentService) BatchInstallSkill(req dto.AgentBatchSkillInstallReq) ([]dt return results, nil } +func (a AgentService) BatchOperate(req dto.AgentBatchOperateReq) ([]dto.AgentBatchOperateResult, error) { + operate := constant.AppOperate(strings.TrimSpace(req.Operate)) + if operate != constant.Start && operate != constant.Stop && operate != constant.Restart && operate != constant.Delete { + return nil, fmt.Errorf("operate %s is not supported", req.Operate) + } + agents, err := agentRepo.List(func(db *gorm.DB) *gorm.DB { + return db.Where("agent_type = ?", req.AgentType).Order("id ASC") + }) + if err != nil { + return nil, err + } + results := make([]dto.AgentBatchOperateResult, 0, len(agents)) + for _, agent := range agents { + result := dto.AgentBatchOperateResult{ + AgentID: agent.ID, + AgentName: agent.Name, + AppInstallID: agent.AppInstallID, + } + if operate == constant.Delete { + if err := a.Delete(dto.AgentDeleteReq{ + ID: agent.ID, + TaskID: buildBatchOperateTaskID(req.TaskID, agent.ID), + ForceDelete: req.ForceDelete, + }); err != nil { + result.Message = err.Error() + } else { + result.Success = true + } + results = append(results, result) + continue + } + if agent.AppInstallID == 0 { + result.Message = "agent app install id is empty" + results = append(results, result) + continue + } + install, err := appInstallRepo.GetFirst(repo.WithByID(agent.AppInstallID)) + if err != nil { + result.Message = err.Error() + results = append(results, result) + continue + } + result.AppInstallID = install.ID + if install.App.Key != req.AgentType { + result.Message = fmt.Sprintf("app key %s does not match agent type %s", install.App.Key, req.AgentType) + results = append(results, result) + continue + } + if message := batchOperateSkipMessage(operate, install.Status); message != "" { + result.Success = true + result.Skipped = true + result.Message = message + results = append(results, result) + continue + } + if err := NewIAppInstalledService().Operate(request.AppInstalledOperate{ + InstallId: install.ID, + Operate: operate, + TaskID: buildBatchOperateTaskID(req.TaskID, agent.ID), + }); err != nil { + result.Message = err.Error() + } else { + result.Success = true + } + results = append(results, result) + } + return results, nil +} + func buildBatchUpgradePlans(req dto.AgentBatchUpgradeReq) ([]batchUpgradePlan, []dto.AgentBatchUpgradeResult, error) { agents, err := agentRepo.List(func(db *gorm.DB) *gorm.DB { return db.Where("agent_type = ?", req.AgentType).Order("id ASC") @@ -508,6 +578,36 @@ func buildBatchSkillInstallTaskID(taskID string, agentID uint) string { return fmt.Sprintf("%s-%d", taskID, agentID) } +func buildBatchOperateTaskID(taskID string, agentID uint) string { + taskID = strings.TrimSpace(taskID) + if taskID == "" { + taskID = fmt.Sprintf("batch-operate-%d-%d", agentID, time.Now().UnixNano()) + } + return fmt.Sprintf("%s-%d", taskID, agentID) +} + +func batchOperateSkipMessage(operate constant.AppOperate, status string) string { + switch status { + case constant.StatusInstalling, constant.StatusUpgrading, constant.StatusUninstalling, constant.StatusRebuilding: + return fmt.Sprintf("agent status is %s", status) + } + switch operate { + case constant.Start: + if status == constant.StatusRunning || status == constant.StatusStarting || status == constant.StatusRestarting { + return fmt.Sprintf("agent status is %s", status) + } + case constant.Stop: + if status != constant.StatusRunning { + return fmt.Sprintf("agent status is %s", status) + } + case constant.Restart: + if status == constant.StatusStarting { + return fmt.Sprintf("agent status is %s", status) + } + } + return "" +} + func buildCreateReqFromBatchInstallReq(req dto.AgentBatchInstallReq) dto.AgentCreateReq { return dto.AgentCreateReq{ Name: req.Name, diff --git a/agent/router/ro_ai.go b/agent/router/ro_ai.go index 912291d50..8c57017de 100644 --- a/agent/router/ro_ai.go +++ b/agent/router/ro_ai.go @@ -59,6 +59,7 @@ func (a *AIToolsRouter) InitRouter(Router *gin.RouterGroup) { aiToolsRouter.POST("/agents/batch/install", baseApi.BatchInstallAgent) aiToolsRouter.POST("/agents/batch/upgrade", baseApi.BatchUpgradeAgent) aiToolsRouter.POST("/agents/batch/skill/install", baseApi.BatchInstallAgentSkill) + aiToolsRouter.POST("/agents/batch/operate", baseApi.BatchOperateAgent) aiToolsRouter.POST("/agents/search", baseApi.PageAgents) aiToolsRouter.POST("/agents/delete/check", baseApi.DeleteCheckAgent) aiToolsRouter.POST("/agents/delete", baseApi.DeleteAgent) diff --git a/core/i18n/lang/en.yaml b/core/i18n/lang/en.yaml index 46605de13..fd9ae5d99 100644 --- a/core/i18n/lang/en.yaml +++ b/core/i18n/lang/en.yaml @@ -40,6 +40,7 @@ ErrEntrance: "Security entrance information error, check and try again!" ErrGroupIsDefault: "Default group, unable to delete" ErrGroupIsInUse: "The group is in use and cannot be deleted." ErrAIProxyUserGroupExists: "The user group name already exists." +ErrAIProxyBackendAccountExists: "This model account has already been imported into the AI Gateway model pool." ErrAIProxySensitiveGroupInUse: "The sensitive word group is in use and cannot be deleted." ErrAIProxySensitiveGroupExists: "The sensitive word group name already exists." ErrLocalDelete: "Cannot delete the local node!" @@ -141,6 +142,18 @@ BatchUpgradeAgent: "Batch upgrade agent" DispatchAgentUpgradeTasks: "Dispatch agent upgrade tasks" BatchInstallAgentSkill: "Batch distribute Skill" DispatchAgentSkillInstallTasks: "Dispatch Skill install tasks" +BatchStartAgent: "Batch start agent" +DispatchAgentStartTasks: "Dispatch agent start tasks" +BatchStopAgent: "Batch stop agent" +DispatchAgentStopTasks: "Dispatch agent stop tasks" +BatchRestartAgent: "Batch restart agent" +DispatchAgentRestartTasks: "Dispatch agent restart tasks" +BatchDeleteAgent: "Batch delete agent" +DispatchAgentDeleteTasks: "Dispatch agent delete tasks" +AgentOperateStart: "Start" +AgentOperateStop: "Stop" +AgentOperateRestart: "Restart" +AgentOperateDelete: "Delete" AIBenchmarkRun: "Run AI benchmark" SuccessStatus: "{{ .name }} succeeded" FailedStatus: "{{ .name }} failed {{ .err }}" diff --git a/core/i18n/lang/es-ES.yaml b/core/i18n/lang/es-ES.yaml index e2c16997e..dc787468a 100644 --- a/core/i18n/lang/es-ES.yaml +++ b/core/i18n/lang/es-ES.yaml @@ -39,6 +39,7 @@ ErrEntrance: "Error en la información de entrada de seguridad, por favor revise ErrGroupIsDefault: "Grupo predeterminado, no se puede eliminar" ErrGroupIsInUse: "El grupo está en uso y no se puede eliminar." ErrAIProxyUserGroupExists: "El nombre del grupo de usuarios ya existe." +ErrAIProxyBackendAccountExists: "Esta cuenta de modelo ya se importó al grupo de modelos de AI Gateway." ErrAIProxySensitiveGroupInUse: "El grupo de palabras sensibles está en uso y no se puede eliminar." ErrAIProxySensitiveGroupExists: "El nombre del grupo de palabras sensibles ya existe." ErrLocalDelete: "No se puede eliminar el nodo local" @@ -141,6 +142,18 @@ BatchUpgradeAgent: "Actualización masiva de agentes" DispatchAgentUpgradeTasks: "Enviar tareas de actualización de agentes" BatchInstallAgentSkill: "Distribuir Skill por lotes" DispatchAgentSkillInstallTasks: "Enviar tareas de instalación de Skill" +BatchStartAgent: "Inicio masivo de agentes" +DispatchAgentStartTasks: "Enviar tareas de inicio de agentes" +BatchStopAgent: "Detención masiva de agentes" +DispatchAgentStopTasks: "Enviar tareas de detención de agentes" +BatchRestartAgent: "Reinicio masivo de agentes" +DispatchAgentRestartTasks: "Enviar tareas de reinicio de agentes" +BatchDeleteAgent: "Eliminación masiva de agentes" +DispatchAgentDeleteTasks: "Enviar tareas de eliminación de agentes" +AgentOperateStart: "Iniciar" +AgentOperateStop: "Detener" +AgentOperateRestart: "Reiniciar" +AgentOperateDelete: "Eliminar" SuccessStatus: "{{ .name }} correcta" FailedStatus: "{{ .name }} fallida {{ .err }}" Start: "Iniciar" diff --git a/core/i18n/lang/ja.yaml b/core/i18n/lang/ja.yaml index 944685680..ea6f03113 100644 --- a/core/i18n/lang/ja.yaml +++ b/core/i18n/lang/ja.yaml @@ -34,6 +34,7 @@ ErrEntrance: "セキュリティ情報エラー、再確認してください! ErrGroupIsDefault: "デフォルトグループの削除はできません" ErrGroupIsInUse: "グループは使用中のため、削除できません。" ErrAIProxyUserGroupExists: "ユーザーグループ名は既に存在します。" +ErrAIProxyBackendAccountExists: "このモデルアカウントは既に AI ゲートウェイのモデルプールにインポートされています。" ErrAIProxySensitiveGroupInUse: "センシティブワードグループは使用中のため削除できません。" ErrAIProxySensitiveGroupExists: "センシティブワードグループ名は既に存在します。" ErrLocalDelete: "ローカルノードは削除できません!" @@ -136,6 +137,18 @@ BatchUpgradeAgent: "エージェントの一括アップグレード" DispatchAgentUpgradeTasks: "エージェントアップグレードタスクを配信" BatchInstallAgentSkill: "Skill 一括配布" DispatchAgentSkillInstallTasks: "Skill インストールタスクを配信" +BatchStartAgent: "エージェントの一括起動" +DispatchAgentStartTasks: "エージェント起動タスクを配信" +BatchStopAgent: "エージェントの一括停止" +DispatchAgentStopTasks: "エージェント停止タスクを配信" +BatchRestartAgent: "エージェントの一括再起動" +DispatchAgentRestartTasks: "エージェント再起動タスクを配信" +BatchDeleteAgent: "エージェントの一括削除" +DispatchAgentDeleteTasks: "エージェント削除タスクを配信" +AgentOperateStart: "開始" +AgentOperateStop: "停止" +AgentOperateRestart: "再起動" +AgentOperateDelete: "削除" SuccessStatus: "{{ .name }} 成功" FailedStatus: "{{ .name }} 失敗 {{ .err }}" Start: "開始" diff --git a/core/i18n/lang/ko.yaml b/core/i18n/lang/ko.yaml index 831755a84..6dbf775e5 100644 --- a/core/i18n/lang/ko.yaml +++ b/core/i18n/lang/ko.yaml @@ -34,6 +34,7 @@ ErrEntrance: "보안 정보 오류입니다. 확인 후 다시 시도하십시 ErrGroupIsDefault: "기본 그룹은 삭제할 수 없습니다" ErrGroupIsInUse: "그룹이 사용 중이므로 삭제할 수 없습니다." ErrAIProxyUserGroupExists: "사용자 그룹 이름이 이미 존재합니다." +ErrAIProxyBackendAccountExists: "이 모델 계정은 이미 AI 게이트웨이 모델 풀에 가져왔습니다." ErrAIProxySensitiveGroupInUse: "민감 단어 그룹이 사용 중이므로 삭제할 수 없습니다." ErrAIProxySensitiveGroupExists: "민감 단어 그룹 이름이 이미 존재합니다." ErrLocalDelete: "로컬 노드는 삭제할 수 없습니다" @@ -135,6 +136,18 @@ BatchUpgradeAgent: "에이전트 일괄 업그레이드" DispatchAgentUpgradeTasks: "에이전트 업그레이드 작업 배포" BatchInstallAgentSkill: "Skill 일괄 배포" DispatchAgentSkillInstallTasks: "Skill 설치 작업 배포" +BatchStartAgent: "에이전트 일괄 시작" +DispatchAgentStartTasks: "에이전트 시작 작업 배포" +BatchStopAgent: "에이전트 일괄 중지" +DispatchAgentStopTasks: "에이전트 중지 작업 배포" +BatchRestartAgent: "에이전트 일괄 재시작" +DispatchAgentRestartTasks: "에이전트 재시작 작업 배포" +BatchDeleteAgent: "에이전트 일괄 삭제" +DispatchAgentDeleteTasks: "에이전트 삭제 작업 배포" +AgentOperateStart: "시작" +AgentOperateStop: "중지" +AgentOperateRestart: "재시작" +AgentOperateDelete: "삭제" SuccessStatus: "{{ .name }} 성공" FailedStatus: "{{ .name }} 실패 {{ .err }}" Start: "시작" diff --git a/core/i18n/lang/ms.yaml b/core/i18n/lang/ms.yaml index be8d48777..4f23f12fc 100644 --- a/core/i18n/lang/ms.yaml +++ b/core/i18n/lang/ms.yaml @@ -34,6 +34,7 @@ ErrEntrance: "Maklumat pintu masuk keselamatan salah, sila periksa dan cuba lagi ErrGroupIsDefault: "Kumpulan lalai tidak boleh dihapuskan" ErrGroupIsInUse: "Kumpulan sedang digunakan dan tidak boleh dipadam." ErrAIProxyUserGroupExists: "Nama kumpulan pengguna sudah wujud." +ErrAIProxyBackendAccountExists: "Akaun model ini telah diimport ke dalam kolam model AI Gateway." ErrAIProxySensitiveGroupInUse: "Kumpulan kata sensitif sedang digunakan dan tidak boleh dipadam." ErrAIProxySensitiveGroupExists: "Nama kumpulan kata sensitif sudah wujud." ErrLocalDelete: "Nod tempatan tidak boleh dihapuskan" @@ -130,6 +131,18 @@ BatchUpgradeAgent: "Naik taraf ejen secara pukal" DispatchAgentUpgradeTasks: "Hantar tugas naik taraf ejen" BatchInstallAgentSkill: "Hantar Skill secara pukal" DispatchAgentSkillInstallTasks: "Hantar tugas pemasangan Skill" +BatchStartAgent: "Mula ejen secara pukal" +DispatchAgentStartTasks: "Hantar tugas mula ejen" +BatchStopAgent: "Henti ejen secara pukal" +DispatchAgentStopTasks: "Hantar tugas henti ejen" +BatchRestartAgent: "Mula semula ejen secara pukal" +DispatchAgentRestartTasks: "Hantar tugas mula semula ejen" +BatchDeleteAgent: "Padam ejen secara pukal" +DispatchAgentDeleteTasks: "Hantar tugas padam ejen" +AgentOperateStart: "Mula" +AgentOperateStop: "Henti" +AgentOperateRestart: "Mula semula" +AgentOperateDelete: "Padam" SuccessStatus: "{{ .name }} berjaya" FailedStatus: "{{ .name }} gagal {{ .err }}" Start: "Mula" diff --git a/core/i18n/lang/pt-BR.yaml b/core/i18n/lang/pt-BR.yaml index 47d153b18..80442aba9 100644 --- a/core/i18n/lang/pt-BR.yaml +++ b/core/i18n/lang/pt-BR.yaml @@ -34,6 +34,7 @@ ErrEntrance: "Erro nas informações de entrada de segurança, por favor, verifi ErrGroupIsDefault: "Grupo padrão não pode ser excluído" ErrGroupIsInUse: "O grupo está em uso e não pode ser excluído." ErrAIProxyUserGroupExists: "O nome do grupo de usuários já existe." +ErrAIProxyBackendAccountExists: "Esta conta de modelo já foi importada para o pool de modelos do AI Gateway." ErrAIProxySensitiveGroupInUse: "O grupo de palavras sensíveis está em uso e não pode ser excluído." ErrAIProxySensitiveGroupExists: "O nome do grupo de palavras sensíveis já existe." ErrLocalDelete: "O nó local não pode ser excluído" @@ -135,6 +136,18 @@ BatchUpgradeAgent: "Atualizar agentes em lote" DispatchAgentUpgradeTasks: "Distribuir tarefas de atualização de agentes" BatchInstallAgentSkill: "Distribuir Skill em lote" DispatchAgentSkillInstallTasks: "Distribuir tarefas de instalação de Skill" +BatchStartAgent: "Iniciar agentes em lote" +DispatchAgentStartTasks: "Distribuir tarefas de início de agentes" +BatchStopAgent: "Parar agentes em lote" +DispatchAgentStopTasks: "Distribuir tarefas de parada de agentes" +BatchRestartAgent: "Reiniciar agentes em lote" +DispatchAgentRestartTasks: "Distribuir tarefas de reinício de agentes" +BatchDeleteAgent: "Excluir agentes em lote" +DispatchAgentDeleteTasks: "Distribuir tarefas de exclusão de agentes" +AgentOperateStart: "Iniciar" +AgentOperateStop: "Parar" +AgentOperateRestart: "Reiniciar" +AgentOperateDelete: "Excluir" SuccessStatus: "{{ .name }} bem-sucedido" FailedStatus: "{{ .name }} falhou {{ .err }}" Start: "Iniciar" diff --git a/core/i18n/lang/ru.yaml b/core/i18n/lang/ru.yaml index 9546c34dd..250e794fc 100644 --- a/core/i18n/lang/ru.yaml +++ b/core/i18n/lang/ru.yaml @@ -34,6 +34,7 @@ ErrEntrance: "Ошибка информации о безопасном вход ErrGroupIsDefault: "Группу по умолчанию нельзя удалить" ErrGroupIsInUse: "Группа используется и не может быть удалена." ErrAIProxyUserGroupExists: "Имя группы пользователей уже существует." +ErrAIProxyBackendAccountExists: "Эта учетная запись модели уже импортирована в пул моделей AI Gateway." ErrAIProxySensitiveGroupInUse: "Группа чувствительных слов используется и не может быть удалена." ErrAIProxySensitiveGroupExists: "Имя группы чувствительных слов уже существует." ErrLocalDelete: "Локальный узел нельзя удалить" @@ -135,6 +136,18 @@ BatchUpgradeAgent: "Пакетное обновление агентов" DispatchAgentUpgradeTasks: "Отправить задачи обновления агентов" BatchInstallAgentSkill: "Пакетная отправка Skill" DispatchAgentSkillInstallTasks: "Отправить задачи установки Skill" +BatchStartAgent: "Пакетный запуск агентов" +DispatchAgentStartTasks: "Отправить задачи запуска агентов" +BatchStopAgent: "Пакетная остановка агентов" +DispatchAgentStopTasks: "Отправить задачи остановки агентов" +BatchRestartAgent: "Пакетный перезапуск агентов" +DispatchAgentRestartTasks: "Отправить задачи перезапуска агентов" +BatchDeleteAgent: "Пакетное удаление агентов" +DispatchAgentDeleteTasks: "Отправить задачи удаления агентов" +AgentOperateStart: "Запустить" +AgentOperateStop: "Остановить" +AgentOperateRestart: "Перезапустить" +AgentOperateDelete: "Удалить" SuccessStatus: "{{ .name }} успешно" FailedStatus: "{{ .name }} не удалось {{ .err }}" Start: "Начать" diff --git a/core/i18n/lang/tr.yaml b/core/i18n/lang/tr.yaml index 2534b6cac..870e20b11 100644 --- a/core/i18n/lang/tr.yaml +++ b/core/i18n/lang/tr.yaml @@ -34,6 +34,7 @@ ErrEntrance: "Güvenlik girişi bilgi hatası, lütfen kontrol edip tekrar deney ErrGroupIsDefault: "Varsayılan grup, silinemez" ErrGroupIsInUse: "Grup kullanımda ve silinemez." ErrAIProxyUserGroupExists: "Kullanıcı grubu adı zaten mevcut." +ErrAIProxyBackendAccountExists: "Bu model hesabı AI Gateway model havuzuna zaten aktarılmış." ErrAIProxySensitiveGroupInUse: "Hassas kelime grubu kullanımda ve silinemez." ErrAIProxySensitiveGroupExists: "Hassas kelime grubu adı zaten mevcut." ErrLocalDelete: "Yerel düğüm silinemez" @@ -134,6 +135,18 @@ BatchUpgradeAgent: "Aracıları toplu yükselt" DispatchAgentUpgradeTasks: "Aracı yükseltme görevlerini gönder" BatchInstallAgentSkill: "Skill toplu dağıt" DispatchAgentSkillInstallTasks: "Skill kurulum görevlerini gönder" +BatchStartAgent: "Aracıları toplu başlat" +DispatchAgentStartTasks: "Aracı başlatma görevlerini gönder" +BatchStopAgent: "Aracıları toplu durdur" +DispatchAgentStopTasks: "Aracı durdurma görevlerini gönder" +BatchRestartAgent: "Aracıları toplu yeniden başlat" +DispatchAgentRestartTasks: "Aracı yeniden başlatma görevlerini gönder" +BatchDeleteAgent: "Aracıları toplu sil" +DispatchAgentDeleteTasks: "Aracı silme görevlerini gönder" +AgentOperateStart: "Başlat" +AgentOperateStop: "Durdur" +AgentOperateRestart: "Yeniden başlat" +AgentOperateDelete: "Sil" SuccessStatus: "{{ .name }} başarılı" FailedStatus: "{{ .name }} başarısız {{ .err }}" Start: "Başla" diff --git a/core/i18n/lang/zh-Hant.yaml b/core/i18n/lang/zh-Hant.yaml index 6812f0ff2..a8ead9100 100644 --- a/core/i18n/lang/zh-Hant.yaml +++ b/core/i18n/lang/zh-Hant.yaml @@ -34,6 +34,7 @@ ErrEntrance: "安全入口資訊錯誤,請檢查後再試。" ErrGroupIsDefault: "預設分組無法刪除" ErrGroupIsInUse: "分組正被使用,無法刪除。" ErrAIProxyUserGroupExists: "使用者組名稱已存在" +ErrAIProxyBackendAccountExists: "該模型帳號已匯入 AI 閘道模型池,請勿重複匯入" ErrAIProxySensitiveGroupInUse: "敏感詞分組正在使用,無法刪除。" ErrAIProxySensitiveGroupExists: "敏感詞分組名稱已存在" ErrLocalDelete: "無法刪除本機節點!" @@ -135,6 +136,18 @@ BatchUpgradeAgent: "批量升級智能體" DispatchAgentUpgradeTasks: "下發智能體升級任務" BatchInstallAgentSkill: "批量下發 Skill" DispatchAgentSkillInstallTasks: "下發 Skill 安裝任務" +BatchStartAgent: "批量啟動智能體" +DispatchAgentStartTasks: "下發智能體啟動任務" +BatchStopAgent: "批量停止智能體" +DispatchAgentStopTasks: "下發智能體停止任務" +BatchRestartAgent: "批量重啟智能體" +DispatchAgentRestartTasks: "下發智能體重啟任務" +BatchDeleteAgent: "批量刪除智能體" +DispatchAgentDeleteTasks: "下發智能體刪除任務" +AgentOperateStart: "啟動" +AgentOperateStop: "停止" +AgentOperateRestart: "重啟" +AgentOperateDelete: "刪除" AIBenchmarkRun: "執行 AI 基準測試" SuccessStatus: "{{ .name }} 成功" FailedStatus: "{{ .name }} 失敗 {{ .err }}" diff --git a/core/i18n/lang/zh.yaml b/core/i18n/lang/zh.yaml index 3d8439538..bb26a2e34 100644 --- a/core/i18n/lang/zh.yaml +++ b/core/i18n/lang/zh.yaml @@ -40,6 +40,7 @@ ErrEntrance: "安全入口信息错误,请检查后重试!" ErrGroupIsDefault: "默认分组,无法删除" ErrGroupIsInUse: "分组正被使用,无法删除" ErrAIProxyUserGroupExists: "用户组名称已存在" +ErrAIProxyBackendAccountExists: "该模型账号已导入 AI 网关模型池,请勿重复导入" ErrAIProxySensitiveGroupInUse: "敏感词分组正在使用,无法删除" ErrAIProxySensitiveGroupExists: "敏感词分组名称已存在" ErrLocalDelete: "无法删除本地节点!" @@ -141,6 +142,18 @@ BatchUpgradeAgent: "批量升级智能体" DispatchAgentUpgradeTasks: "下发智能体升级任务" BatchInstallAgentSkill: "批量下发 Skill" DispatchAgentSkillInstallTasks: "下发 Skill 安装任务" +BatchStartAgent: "批量启动智能体" +DispatchAgentStartTasks: "下发智能体启动任务" +BatchStopAgent: "批量停止智能体" +DispatchAgentStopTasks: "下发智能体停止任务" +BatchRestartAgent: "批量重启智能体" +DispatchAgentRestartTasks: "下发智能体重启任务" +BatchDeleteAgent: "批量删除智能体" +DispatchAgentDeleteTasks: "下发智能体删除任务" +AgentOperateStart: "启动" +AgentOperateStop: "停止" +AgentOperateRestart: "重启" +AgentOperateDelete: "删除" AIBenchmarkRun: "执行 AI 基准测试" SuccessStatus: "{{ .name }} 成功" FailedStatus: "{{ .name }} 失败 {{ .err }}" diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index ce7af342c..42b597149 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -685,18 +685,34 @@ const message = { batchInstall: 'Batch Install', batchUpgrade: 'Batch Upgrade', batchSkillInstall: 'Batch Distribute Skill', + batchStart: 'Batch Start', + batchStop: 'Batch Stop', + batchRestart: 'Batch Restart', + batchDelete: 'Batch Delete', batchInstallAgent: 'Batch install agent', dispatchAgentInstallTasks: 'Dispatch agent install tasks', batchUpgradeAgent: 'Batch upgrade agent', dispatchAgentUpgradeTasks: 'Dispatch agent upgrade tasks', batchInstallAgentSkill: 'Batch distribute Skill', dispatchAgentSkillInstallTasks: 'Dispatch Skill install tasks', + batchStartAgent: 'Batch start agent', + dispatchAgentStartTasks: 'Dispatch agent start tasks', + batchStopAgent: 'Batch stop agent', + dispatchAgentStopTasks: 'Dispatch agent stop tasks', + batchRestartAgent: 'Batch restart agent', + dispatchAgentRestartTasks: 'Dispatch agent restart tasks', + batchDeleteAgent: 'Batch delete agent', + dispatchAgentDeleteTasks: 'Dispatch agent delete tasks', allNodes: 'All Nodes', targetVersion: 'Target Version', skill: 'Skill', batchInstallTaskSubmitted: 'Batch install task has been submitted', batchUpgradeTaskSubmitted: 'Batch upgrade task has been submitted', batchSkillInstallTaskSubmitted: 'Batch Skill distribution task has been submitted', + batchStartTaskSubmitted: 'Batch start task has been submitted', + batchStopTaskSubmitted: 'Batch stop task has been submitted', + batchRestartTaskSubmitted: 'Batch restart task has been submitted', + batchDeleteTaskSubmitted: 'Batch delete task has been submitted', noAccountHint: 'Choose an existing model account or add a new one.', accountCount: '{0} model accounts', syncAgents: 'Sync related agents', @@ -1000,6 +1016,10 @@ const message = { serviceEnabled: 'Service Auto-start', proxyEnabled: 'Gateway Enabled', statusMessage: 'Status Message', + esLogDropped: 'Dropped ES Logs', + esLogLastSuccessAt: 'Last ES Write', + esLogCircuitOpen: 'Circuit Open', + esLogCircuitUntil: 'ES Circuit Until', serviceOperateConfirm: 'Confirm to {0} the AI Gateway service?', deleteBackendConfirm: 'Delete model account {0}?', deleteBackendTitle: 'Delete Model Account', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index a14a355b8..eb4541c2b 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -691,18 +691,34 @@ const message = { batchInstall: 'Instalación por lotes', batchUpgrade: 'Actualización por lotes', batchSkillInstall: 'Distribuir Skill por lotes', + batchStart: 'Inicio por lotes', + batchStop: 'Detención por lotes', + batchRestart: 'Reinicio por lotes', + batchDelete: 'Eliminación por lotes', batchInstallAgent: 'Instalación masiva de agentes', dispatchAgentInstallTasks: 'Enviar tareas de instalación de agentes', batchUpgradeAgent: 'Actualización masiva de agentes', dispatchAgentUpgradeTasks: 'Enviar tareas de actualización de agentes', batchInstallAgentSkill: 'Distribuir Skill por lotes', dispatchAgentSkillInstallTasks: 'Enviar tareas de instalación de Skill', + batchStartAgent: 'Inicio masivo de agentes', + dispatchAgentStartTasks: 'Enviar tareas de inicio de agentes', + batchStopAgent: 'Detención masiva de agentes', + dispatchAgentStopTasks: 'Enviar tareas de detención de agentes', + batchRestartAgent: 'Reinicio masivo de agentes', + dispatchAgentRestartTasks: 'Enviar tareas de reinicio de agentes', + batchDeleteAgent: 'Eliminación masiva de agentes', + dispatchAgentDeleteTasks: 'Enviar tareas de eliminación de agentes', allNodes: 'Todos los nodos', targetVersion: 'Versión de destino', skill: 'Skill', batchInstallTaskSubmitted: 'Tarea de instalación por lotes enviada', batchUpgradeTaskSubmitted: 'Tarea de actualización por lotes enviada', batchSkillInstallTaskSubmitted: 'Tarea de distribución de Skill por lotes enviada', + batchStartTaskSubmitted: 'Tarea de inicio por lotes enviada', + batchStopTaskSubmitted: 'Tarea de detención por lotes enviada', + batchRestartTaskSubmitted: 'Tarea de reinicio por lotes enviada', + batchDeleteTaskSubmitted: 'Tarea de eliminación por lotes enviada', noAccountHint: 'Selecciona una cuenta de modelo existente o agrega una nueva.', accountCount: '{0} cuentas de modelo', syncAgents: 'Sincronizar agentes vinculados', @@ -1015,6 +1031,10 @@ const message = { serviceEnabled: 'Inicio automático del servicio', proxyEnabled: 'Gateway habilitado', statusMessage: 'Mensaje de estado', + esLogDropped: 'Logs ES descartados', + esLogLastSuccessAt: 'Última escritura ES', + esLogCircuitOpen: 'Circuito abierto', + esLogCircuitUntil: 'Circuito ES hasta', serviceOperateConfirm: '¿Confirmar {0} el servicio de gateway de IA?', deleteBackendConfirm: '¿Eliminar la cuenta de modelo {0}?', deleteBackendTitle: 'Eliminar cuenta de modelo', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index e45cba74e..1d599bb20 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -686,18 +686,34 @@ const message = { batchInstall: '一括インストール', batchUpgrade: '一括アップグレード', batchSkillInstall: 'Skill 一括配布', + batchStart: '一括起動', + batchStop: '一括停止', + batchRestart: '一括再起動', + batchDelete: '一括削除', batchInstallAgent: 'エージェントの一括インストール', dispatchAgentInstallTasks: 'エージェントインストールタスクを配信', batchUpgradeAgent: 'エージェントの一括アップグレード', dispatchAgentUpgradeTasks: 'エージェントアップグレードタスクを配信', batchInstallAgentSkill: 'Skill 一括配布', dispatchAgentSkillInstallTasks: 'Skill インストールタスクを配信', + batchStartAgent: 'エージェントの一括起動', + dispatchAgentStartTasks: 'エージェント起動タスクを配信', + batchStopAgent: 'エージェントの一括停止', + dispatchAgentStopTasks: 'エージェント停止タスクを配信', + batchRestartAgent: 'エージェントの一括再起動', + dispatchAgentRestartTasks: 'エージェント再起動タスクを配信', + batchDeleteAgent: 'エージェントの一括削除', + dispatchAgentDeleteTasks: 'エージェント削除タスクを配信', allNodes: 'すべてのノード', targetVersion: 'ターゲットバージョン', skill: 'Skill', batchInstallTaskSubmitted: '一括インストールタスクを送信しました', batchUpgradeTaskSubmitted: '一括アップグレードタスクを送信しました', batchSkillInstallTaskSubmitted: 'Skill 一括配布タスクを送信しました', + batchStartTaskSubmitted: '一括起動タスクを送信しました', + batchStopTaskSubmitted: '一括停止タスクを送信しました', + batchRestartTaskSubmitted: '一括再起動タスクを送信しました', + batchDeleteTaskSubmitted: '一括削除タスクを送信しました', noAccountHint: '既存のモデルアカウントを選択するか、新規に追加してください。', accountCount: 'モデルアカウント {0} 件', syncAgents: '関連エージェントを同期', @@ -1005,6 +1021,10 @@ const message = { serviceEnabled: 'サービス自動起動', proxyEnabled: 'ゲートウェイ有効', statusMessage: '状態メッセージ', + esLogDropped: '破棄された ES ログ', + esLogLastSuccessAt: '最終 ES 書き込み', + esLogCircuitOpen: 'サーキットオープン', + esLogCircuitUntil: 'ES サーキット終了時刻', serviceOperateConfirm: 'AI ゲートウェイサービスを {0} しますか?', deleteBackendConfirm: 'モデルアカウント {0} を削除しますか?', deleteBackendTitle: 'モデルアカウントを削除', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 21cc2707d..4e7b9514d 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -678,18 +678,34 @@ const message = { batchInstall: '일괄 설치', batchUpgrade: '일괄 업그레이드', batchSkillInstall: 'Skill 일괄 배포', + batchStart: '일괄 시작', + batchStop: '일괄 중지', + batchRestart: '일괄 재시작', + batchDelete: '일괄 삭제', batchInstallAgent: '에이전트 일괄 설치', dispatchAgentInstallTasks: '에이전트 설치 작업 배포', batchUpgradeAgent: '에이전트 일괄 업그레이드', dispatchAgentUpgradeTasks: '에이전트 업그레이드 작업 배포', batchInstallAgentSkill: 'Skill 일괄 배포', dispatchAgentSkillInstallTasks: 'Skill 설치 작업 배포', + batchStartAgent: '에이전트 일괄 시작', + dispatchAgentStartTasks: '에이전트 시작 작업 배포', + batchStopAgent: '에이전트 일괄 중지', + dispatchAgentStopTasks: '에이전트 중지 작업 배포', + batchRestartAgent: '에이전트 일괄 재시작', + dispatchAgentRestartTasks: '에이전트 재시작 작업 배포', + batchDeleteAgent: '에이전트 일괄 삭제', + dispatchAgentDeleteTasks: '에이전트 삭제 작업 배포', allNodes: '모든 노드', targetVersion: '대상 버전', skill: 'Skill', batchInstallTaskSubmitted: '일괄 설치 작업이 전송되었습니다', batchUpgradeTaskSubmitted: '일괄 업그레이드 작업이 전송되었습니다', batchSkillInstallTaskSubmitted: 'Skill 일괄 배포 작업이 전송되었습니다', + batchStartTaskSubmitted: '일괄 시작 작업이 전송되었습니다', + batchStopTaskSubmitted: '일괄 중지 작업이 전송되었습니다', + batchRestartTaskSubmitted: '일괄 재시작 작업이 전송되었습니다', + batchDeleteTaskSubmitted: '일괄 삭제 작업이 전송되었습니다', noAccountHint: '기존 모델 계정을 선택하거나 새로 추가하세요.', accountCount: '모델 계정 {0}개', syncAgents: '관련 에이전트 동기화', @@ -989,6 +1005,10 @@ const message = { serviceEnabled: '서비스 자동 시작', proxyEnabled: '게이트웨이 활성화', statusMessage: '상태 메시지', + esLogDropped: '삭제된 ES 로그', + esLogLastSuccessAt: '마지막 ES 쓰기', + esLogCircuitOpen: '서킷 오픈', + esLogCircuitUntil: 'ES 서킷 종료 시간', serviceOperateConfirm: 'AI 게이트웨이 서비스를 {0}하시겠습니까?', deleteBackendConfirm: '모델 계정 {0}을(를) 삭제하시겠습니까?', deleteBackendTitle: '모델 계정 삭제', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 1860725bf..7ea170fe2 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -693,18 +693,34 @@ const message = { batchInstall: 'Pemasangan pukal', batchUpgrade: 'Naik taraf pukal', batchSkillInstall: 'Hantar Skill secara pukal', + batchStart: 'Mula pukal', + batchStop: 'Henti pukal', + batchRestart: 'Mula semula pukal', + batchDelete: 'Padam pukal', batchInstallAgent: 'Pasang ejen secara pukal', dispatchAgentInstallTasks: 'Hantar tugas pemasangan ejen', batchUpgradeAgent: 'Naik taraf ejen secara pukal', dispatchAgentUpgradeTasks: 'Hantar tugas naik taraf ejen', batchInstallAgentSkill: 'Hantar Skill secara pukal', dispatchAgentSkillInstallTasks: 'Hantar tugas pemasangan Skill', + batchStartAgent: 'Mula ejen secara pukal', + dispatchAgentStartTasks: 'Hantar tugas mula ejen', + batchStopAgent: 'Henti ejen secara pukal', + dispatchAgentStopTasks: 'Hantar tugas henti ejen', + batchRestartAgent: 'Mula semula ejen secara pukal', + dispatchAgentRestartTasks: 'Hantar tugas mula semula ejen', + batchDeleteAgent: 'Padam ejen secara pukal', + dispatchAgentDeleteTasks: 'Hantar tugas padam ejen', allNodes: 'Semua nod', targetVersion: 'Versi sasaran', skill: 'Skill', batchInstallTaskSubmitted: 'Tugas pemasangan pukal telah dihantar', batchUpgradeTaskSubmitted: 'Tugas naik taraf pukal telah dihantar', batchSkillInstallTaskSubmitted: 'Tugas penghantaran Skill pukal telah dihantar', + batchStartTaskSubmitted: 'Tugas mula pukal telah dihantar', + batchStopTaskSubmitted: 'Tugas henti pukal telah dihantar', + batchRestartTaskSubmitted: 'Tugas mula semula pukal telah dihantar', + batchDeleteTaskSubmitted: 'Tugas padam pukal telah dihantar', noAccountHint: 'Pilih akaun model sedia ada atau tambah yang baharu.', accountCount: 'Akaun model {0}', syncAgents: 'Segerakkan agen berkaitan', @@ -1014,6 +1030,10 @@ const message = { serviceEnabled: 'Auto mula perkhidmatan', proxyEnabled: 'Gateway diaktifkan', statusMessage: 'Mesej status', + esLogDropped: 'Log ES dibuang', + esLogLastSuccessAt: 'Tulisan ES terakhir', + esLogCircuitOpen: 'Litar terbuka', + esLogCircuitUntil: 'Litar ES hingga', serviceOperateConfirm: 'Sahkan untuk {0} perkhidmatan gateway AI?', deleteBackendConfirm: 'Padam akaun model {0}?', deleteBackendTitle: 'Padam akaun model', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index a290dbb72..95888d1fe 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -687,18 +687,34 @@ const message = { batchInstall: 'Instalação em lote', batchUpgrade: 'Atualização em lote', batchSkillInstall: 'Distribuir Skill em lote', + batchStart: 'Iniciar em lote', + batchStop: 'Parar em lote', + batchRestart: 'Reiniciar em lote', + batchDelete: 'Excluir em lote', batchInstallAgent: 'Instalar agentes em lote', dispatchAgentInstallTasks: 'Distribuir tarefas de instalação de agentes', batchUpgradeAgent: 'Atualizar agentes em lote', dispatchAgentUpgradeTasks: 'Distribuir tarefas de atualização de agentes', batchInstallAgentSkill: 'Distribuir Skill em lote', dispatchAgentSkillInstallTasks: 'Distribuir tarefas de instalação de Skill', + batchStartAgent: 'Iniciar agentes em lote', + dispatchAgentStartTasks: 'Distribuir tarefas de início de agentes', + batchStopAgent: 'Parar agentes em lote', + dispatchAgentStopTasks: 'Distribuir tarefas de parada de agentes', + batchRestartAgent: 'Reiniciar agentes em lote', + dispatchAgentRestartTasks: 'Distribuir tarefas de reinício de agentes', + batchDeleteAgent: 'Excluir agentes em lote', + dispatchAgentDeleteTasks: 'Distribuir tarefas de exclusão de agentes', allNodes: 'Todos os nós', targetVersion: 'Versão de destino', skill: 'Skill', batchInstallTaskSubmitted: 'Tarefa de instalação em lote enviada', batchUpgradeTaskSubmitted: 'Tarefa de atualização em lote enviada', batchSkillInstallTaskSubmitted: 'Tarefa de distribuição de Skill enviada', + batchStartTaskSubmitted: 'Tarefa de início em lote enviada', + batchStopTaskSubmitted: 'Tarefa de parada em lote enviada', + batchRestartTaskSubmitted: 'Tarefa de reinício em lote enviada', + batchDeleteTaskSubmitted: 'Tarefa de exclusão em lote enviada', noAccountHint: 'Selecione uma conta de modelo existente ou adicione uma nova.', accountCount: '{0} contas de modelo', syncAgents: 'Sincronizar agentes vinculados', @@ -1010,6 +1026,10 @@ const message = { serviceEnabled: 'Inicialização automática do serviço', proxyEnabled: 'Gateway habilitado', statusMessage: 'Mensagem de status', + esLogDropped: 'Logs ES descartados', + esLogLastSuccessAt: 'Última gravação ES', + esLogCircuitOpen: 'Circuito aberto', + esLogCircuitUntil: 'Circuito ES até', serviceOperateConfirm: 'Confirmar {0} o serviço de gateway de IA?', deleteBackendConfirm: 'Excluir conta de modelo {0}?', deleteBackendTitle: 'Excluir conta de modelo', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index bde1f4721..3cc939271 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -685,18 +685,34 @@ const message = { batchInstall: 'Пакетная установка', batchUpgrade: 'Пакетное обновление', batchSkillInstall: 'Пакетная отправка Skill', + batchStart: 'Пакетный запуск', + batchStop: 'Пакетная остановка', + batchRestart: 'Пакетный перезапуск', + batchDelete: 'Пакетное удаление', batchInstallAgent: 'Пакетная установка агентов', dispatchAgentInstallTasks: 'Отправить задачи установки агентов', batchUpgradeAgent: 'Пакетное обновление агентов', dispatchAgentUpgradeTasks: 'Отправить задачи обновления агентов', batchInstallAgentSkill: 'Пакетная отправка Skill', dispatchAgentSkillInstallTasks: 'Отправить задачи установки Skill', + batchStartAgent: 'Пакетный запуск агентов', + dispatchAgentStartTasks: 'Отправить задачи запуска агентов', + batchStopAgent: 'Пакетная остановка агентов', + dispatchAgentStopTasks: 'Отправить задачи остановки агентов', + batchRestartAgent: 'Пакетный перезапуск агентов', + dispatchAgentRestartTasks: 'Отправить задачи перезапуска агентов', + batchDeleteAgent: 'Пакетное удаление агентов', + dispatchAgentDeleteTasks: 'Отправить задачи удаления агентов', allNodes: 'Все узлы', targetVersion: 'Целевая версия', skill: 'Skill', batchInstallTaskSubmitted: 'Задача пакетной установки отправлена', batchUpgradeTaskSubmitted: 'Задача пакетного обновления отправлена', batchSkillInstallTaskSubmitted: 'Задача пакетной отправки Skill отправлена', + batchStartTaskSubmitted: 'Задача пакетного запуска отправлена', + batchStopTaskSubmitted: 'Задача пакетной остановки отправлена', + batchRestartTaskSubmitted: 'Задача пакетного перезапуска отправлена', + batchDeleteTaskSubmitted: 'Задача пакетного удаления отправлена', noAccountHint: 'Выберите существующий аккаунт модели или добавьте новый.', accountCount: '{0} аккаунтов модели', syncAgents: 'Синхронизировать связанные агенты', @@ -1004,6 +1020,10 @@ const message = { serviceEnabled: 'Автозапуск сервиса', proxyEnabled: 'Шлюз включен', statusMessage: 'Сообщение статуса', + esLogDropped: 'Отброшенные ES логи', + esLogLastSuccessAt: 'Последняя запись ES', + esLogCircuitOpen: 'Цепь разомкнута', + esLogCircuitUntil: 'ES разомкнута до', serviceOperateConfirm: 'Подтвердить {0} сервис AI-шлюза?', deleteBackendConfirm: 'Удалить аккаунт модели {0}?', deleteBackendTitle: 'Удалить аккаунт модели', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 46ff4874e..8ddae7e42 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -689,18 +689,34 @@ const message = { batchInstall: 'Toplu kurulum', batchUpgrade: 'Toplu yükseltme', batchSkillInstall: 'Skill toplu dağıt', + batchStart: 'Toplu başlat', + batchStop: 'Toplu durdur', + batchRestart: 'Toplu yeniden başlat', + batchDelete: 'Toplu sil', batchInstallAgent: 'Aracıları toplu kur', dispatchAgentInstallTasks: 'Aracı kurulum görevlerini gönder', batchUpgradeAgent: 'Aracıları toplu yükselt', dispatchAgentUpgradeTasks: 'Aracı yükseltme görevlerini gönder', batchInstallAgentSkill: 'Skill toplu dağıt', dispatchAgentSkillInstallTasks: 'Skill kurulum görevlerini gönder', + batchStartAgent: 'Aracıları toplu başlat', + dispatchAgentStartTasks: 'Aracı başlatma görevlerini gönder', + batchStopAgent: 'Aracıları toplu durdur', + dispatchAgentStopTasks: 'Aracı durdurma görevlerini gönder', + batchRestartAgent: 'Aracıları toplu yeniden başlat', + dispatchAgentRestartTasks: 'Aracı yeniden başlatma görevlerini gönder', + batchDeleteAgent: 'Aracıları toplu sil', + dispatchAgentDeleteTasks: 'Aracı silme görevlerini gönder', allNodes: 'Tüm düğümler', targetVersion: 'Hedef sürüm', skill: 'Skill', batchInstallTaskSubmitted: 'Toplu kurulum görevi gönderildi', batchUpgradeTaskSubmitted: 'Toplu yükseltme görevi gönderildi', batchSkillInstallTaskSubmitted: 'Skill toplu dağıtım görevi gönderildi', + batchStartTaskSubmitted: 'Toplu başlatma görevi gönderildi', + batchStopTaskSubmitted: 'Toplu durdurma görevi gönderildi', + batchRestartTaskSubmitted: 'Toplu yeniden başlatma görevi gönderildi', + batchDeleteTaskSubmitted: 'Toplu silme görevi gönderildi', noAccountHint: 'Mevcut bir model hesabını seçin veya yeni bir tane ekleyin.', accountCount: '{0} model hesabı', syncAgents: 'İlişkili ajanları senkronize et', @@ -1012,6 +1028,10 @@ const message = { serviceEnabled: 'Servis otomatik başlatma', proxyEnabled: 'Ağ geçidi etkin', statusMessage: 'Durum mesajı', + esLogDropped: 'Atılan ES logları', + esLogLastSuccessAt: 'Son ES yazımı', + esLogCircuitOpen: 'Devre açık', + esLogCircuitUntil: 'ES devresi şu zamana kadar', serviceOperateConfirm: 'AI Ağ Geçidi servisini {0} onaylıyor musunuz?', deleteBackendConfirm: 'Model hesabı {0} silinsin mi?', deleteBackendTitle: 'Model hesabını sil', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 3c8d07669..81dd687f6 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -655,18 +655,34 @@ const message = { batchInstall: '批量安裝', batchUpgrade: '批量升級', batchSkillInstall: '批量下發 Skill', + batchStart: '批量啟動', + batchStop: '批量停止', + batchRestart: '批量重啟', + batchDelete: '批量刪除', batchInstallAgent: '批量安裝智能體', dispatchAgentInstallTasks: '下發智能體安裝任務', batchUpgradeAgent: '批量升級智能體', dispatchAgentUpgradeTasks: '下發智能體升級任務', batchInstallAgentSkill: '批量下發 Skill', dispatchAgentSkillInstallTasks: '下發 Skill 安裝任務', + batchStartAgent: '批量啟動智能體', + dispatchAgentStartTasks: '下發智能體啟動任務', + batchStopAgent: '批量停止智能體', + dispatchAgentStopTasks: '下發智能體停止任務', + batchRestartAgent: '批量重啟智能體', + dispatchAgentRestartTasks: '下發智能體重啟任務', + batchDeleteAgent: '批量刪除智能體', + dispatchAgentDeleteTasks: '下發智能體刪除任務', allNodes: '所有節點', targetVersion: '目標版本', skill: 'Skill', batchInstallTaskSubmitted: '批量安裝任務已下發', batchUpgradeTaskSubmitted: '批量升級任務已下發', batchSkillInstallTaskSubmitted: '批量下發 Skill 任務已下發', + batchStartTaskSubmitted: '批量啟動任務已下發', + batchStopTaskSubmitted: '批量停止任務已下發', + batchRestartTaskSubmitted: '批量重啟任務已下發', + batchDeleteTaskSubmitted: '批量刪除任務已下發', noAccountHint: '選擇已有模型帳號,或直接建立', accountCount: '模型帳號 {0} 個', syncAgents: '同步關聯智能體', @@ -951,6 +967,10 @@ const message = { serviceEnabled: '服務自啟', proxyEnabled: '閘道啟用', statusMessage: '狀態資訊', + esLogDropped: 'ES 日誌丟棄數', + esLogLastSuccessAt: 'ES 最近寫入時間', + esLogCircuitOpen: '熔斷中', + esLogCircuitUntil: 'ES 熔斷結束時間', serviceOperateConfirm: '確認{0} AI 閘道服務?', deleteBackendConfirm: '確認刪除模型帳號 {0}?', deleteBackendTitle: '刪除模型帳號', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index c83967686..f6aded63a 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -652,18 +652,34 @@ const message = { batchInstall: '批量安装', batchUpgrade: '批量升级', batchSkillInstall: '批量下发 Skill', + batchStart: '批量启动', + batchStop: '批量停止', + batchRestart: '批量重启', + batchDelete: '批量删除', batchInstallAgent: '批量安装智能体', dispatchAgentInstallTasks: '下发智能体安装任务', batchUpgradeAgent: '批量升级智能体', dispatchAgentUpgradeTasks: '下发智能体升级任务', batchInstallAgentSkill: '批量下发 Skill', dispatchAgentSkillInstallTasks: '下发 Skill 安装任务', + batchStartAgent: '批量启动智能体', + dispatchAgentStartTasks: '下发智能体启动任务', + batchStopAgent: '批量停止智能体', + dispatchAgentStopTasks: '下发智能体停止任务', + batchRestartAgent: '批量重启智能体', + dispatchAgentRestartTasks: '下发智能体重启任务', + batchDeleteAgent: '批量删除智能体', + dispatchAgentDeleteTasks: '下发智能体删除任务', allNodes: '所有节点', targetVersion: '目标版本', skill: 'Skill', batchInstallTaskSubmitted: '批量安装任务已下发', batchUpgradeTaskSubmitted: '批量升级任务已下发', batchSkillInstallTaskSubmitted: '批量下发 Skill 任务已下发', + batchStartTaskSubmitted: '批量启动任务已下发', + batchStopTaskSubmitted: '批量停止任务已下发', + batchRestartTaskSubmitted: '批量重启任务已下发', + batchDeleteTaskSubmitted: '批量删除任务已下发', noAccountHint: '选择已有模型账号,或直接创建', accountCount: '模型账号 {0} 个', syncAgents: '同步关联智能体', @@ -942,6 +958,10 @@ const message = { serviceEnabled: '服务自启', proxyEnabled: '网关启用', statusMessage: '状态信息', + esLogDropped: 'ES 日志丢弃数', + esLogLastSuccessAt: 'ES 最近写入时间', + esLogCircuitOpen: '熔断中', + esLogCircuitUntil: 'ES 熔断结束时间', serviceOperateConfirm: '确认{0} AI 网关服务?', deleteBackendConfirm: '确认删除模型账号 {0}?', deleteBackendTitle: '删除模型账号', diff --git a/frontend/src/utils/task.ts b/frontend/src/utils/task.ts index 8cf0e6951..89f971333 100644 --- a/frontend/src/utils/task.ts +++ b/frontend/src/utils/task.ts @@ -7,6 +7,14 @@ const taskTextMap: Record = { DispatchAgentUpgradeTasks: 'aiTools.agents.dispatchAgentUpgradeTasks', BatchInstallAgentSkill: 'aiTools.agents.batchInstallAgentSkill', DispatchAgentSkillInstallTasks: 'aiTools.agents.dispatchAgentSkillInstallTasks', + BatchStartAgent: 'aiTools.agents.batchStartAgent', + DispatchAgentStartTasks: 'aiTools.agents.dispatchAgentStartTasks', + BatchStopAgent: 'aiTools.agents.batchStopAgent', + DispatchAgentStopTasks: 'aiTools.agents.dispatchAgentStopTasks', + BatchRestartAgent: 'aiTools.agents.batchRestartAgent', + DispatchAgentRestartTasks: 'aiTools.agents.dispatchAgentRestartTasks', + BatchDeleteAgent: 'aiTools.agents.batchDeleteAgent', + DispatchAgentDeleteTasks: 'aiTools.agents.dispatchAgentDeleteTasks', }; export const translateTaskText = (value?: string) => { diff --git a/frontend/src/views/ai/mcp/server/import/index.vue b/frontend/src/views/ai/mcp/server/import/index.vue index 696f6c77f..bf834d27a 100644 --- a/frontend/src/views/ai/mcp/server/import/index.vue +++ b/frontend/src/views/ai/mcp/server/import/index.vue @@ -53,7 +53,7 @@ const onConfirm = async () => { try { const data = JSON.parse(mcpServerJson.value); if (!data.mcpServers || typeof data.mcpServers !== 'object') { - throw new Error(i18n.global.t('mcp.importMcpJsonError')); + throw new Error(i18n.global.t('aiTools.mcp.importMcpJsonError')); } mcpServerConfig.value = Object.entries(data.mcpServers).map(([name, config]: any) => ({ name, diff --git a/frontend/src/views/ai/mcp/server/operate/index.vue b/frontend/src/views/ai/mcp/server/operate/index.vue index 48149df4b..55ab795fe 100644 --- a/frontend/src/views/ai/mcp/server/operate/index.vue +++ b/frontend/src/views/ai/mcp/server/operate/index.vue @@ -50,12 +50,12 @@ - + - +