From 33e5c9230f2f064e513f24c26d0343c8c00da223 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:06:20 +0800 Subject: [PATCH] fix: Optimized ollama model status display (#7899) --- backend/app/service/ai.go | 11 +++++++---- backend/constant/status.go | 1 + backend/init/hook/hook.go | 6 ++++++ frontend/src/components/log-file/index.vue | 2 +- frontend/src/views/ai/model/add/index.vue | 2 +- frontend/src/views/ai/model/del/index.vue | 2 +- frontend/src/views/ai/model/index.vue | 14 ++++++++++++-- 7 files changed, 29 insertions(+), 9 deletions(-) diff --git a/backend/app/service/ai.go b/backend/app/service/ai.go index 4302d5541..68982725f 100644 --- a/backend/app/service/ai.go +++ b/backend/app/service/ai.go @@ -3,13 +3,14 @@ package service import ( "context" "fmt" - "github.com/1Panel-dev/1Panel/backend/utils/common" "io" "os" "os/exec" "path" "strings" + "github.com/1Panel-dev/1Panel/backend/utils/common" + "github.com/1Panel-dev/1Panel/backend/app/dto" "github.com/1Panel-dev/1Panel/backend/app/dto/request" "github.com/1Panel-dev/1Panel/backend/app/model" @@ -152,9 +153,11 @@ func (u *AIToolService) Delete(req dto.ForceDelete) error { return err } for _, item := range ollamaList { - stdout, err := cmd.Execf("docker exec %s ollama rm %s", containerName, item.Name) - if err != nil && !req.ForceDelete { - return fmt.Errorf("handle ollama rm %s failed, stdout: %s, err: %v", item.Name, stdout, err) + if item.Status != constant.StatusDeleted { + stdout, err := cmd.Execf("docker exec %s ollama rm %s", containerName, item.Name) + if err != nil && !req.ForceDelete { + return fmt.Errorf("handle ollama rm %s failed, stdout: %s, err: %v", item.Name, stdout, err) + } } _ = aiRepo.Delete(commonRepo.WithByID(item.ID)) logItem := path.Join(global.CONF.System.DataDir, "log", "AITools", item.Name) diff --git a/backend/constant/status.go b/backend/constant/status.go index 284155837..685b01bc4 100644 --- a/backend/constant/status.go +++ b/backend/constant/status.go @@ -7,6 +7,7 @@ const ( StatusSuccess = "Success" StatusFailed = "Failed" StatusDeleted = "Deleted" + StatusCanceled = "Canceled" StatusUploading = "Uploading" StatusEnable = "Enable" StatusDisable = "Disable" diff --git a/backend/init/hook/hook.go b/backend/init/hook/hook.go index 6157a5211..f2f5aab32 100644 --- a/backend/init/hook/hook.go +++ b/backend/init/hook/hook.go @@ -87,6 +87,7 @@ func Init() { handleUserInfo(global.CONF.System.ChangeUserInfo, settingRepo) handleCronjobStatus() + handleOllamaModelStatus() handleSnapStatus() loadLocalDir() initDir() @@ -150,6 +151,11 @@ func handleSnapStatus() { } } +func handleOllamaModelStatus() { + message := "the task was interrupted due to the restart of the 1panel service" + _ = global.DB.Model(&model.OllamaModel{}).Where("status = ?", constant.StatusWaiting).Updates(map[string]interface{}{"status": constant.StatusCanceled, "message": message}).Error +} + func handleCronjobStatus() { var jobRecords []model.JobRecords _ = global.DB.Where("status = ?", constant.StatusWaiting).Find(&jobRecords).Error diff --git a/frontend/src/components/log-file/index.vue b/frontend/src/components/log-file/index.vue index 846b745e2..436b2adc9 100644 --- a/frontend/src/components/log-file/index.vue +++ b/frontend/src/components/log-file/index.vue @@ -178,7 +178,7 @@ const getContent = async (pre: boolean) => { .replace(/\\u(\w{4})/g, function (match, grp) { return String.fromCharCode(parseInt(grp, 16)); }) - .replace(/\x1b\[[0-9;]*[A-Za-z?](?!\d)/g, ''), + .replace(/\x1B\[[0-?9;]*[mKhlGA]/g, ''), ); const newLogs = res.data.lines; if (newLogs.length === readReq.pageSize && readReq.page < res.data.total) { diff --git a/frontend/src/views/ai/model/add/index.vue b/frontend/src/views/ai/model/add/index.vue index aa18885eb..1aed14415 100644 --- a/frontend/src/views/ai/model/add/index.vue +++ b/frontend/src/views/ai/model/add/index.vue @@ -79,7 +79,7 @@ const onSubmit = async (formEl: FormInstance | undefined) => { await createOllamaModel(itemName); drawerVisible.value = false; emit('search'); - emit('log', itemName); + emit('log', { logFileExist: true, name: itemName, from: 'local' }); MsgSuccess(i18n.global.t('commons.msg.operationSuccess')); }); }; diff --git a/frontend/src/views/ai/model/del/index.vue b/frontend/src/views/ai/model/del/index.vue index 53e161468..8ff182ece 100644 --- a/frontend/src/views/ai/model/del/index.vue +++ b/frontend/src/views/ai/model/del/index.vue @@ -37,7 +37,7 @@ {{ $t('commons.button.cancel') }} - + {{ $t('commons.button.confirm') }} diff --git a/frontend/src/views/ai/model/index.vue b/frontend/src/views/ai/model/index.vue index 10cd541f4..1dd689111 100644 --- a/frontend/src/views/ai/model/index.vue +++ b/frontend/src/views/ai/model/index.vue @@ -20,6 +20,13 @@ ref="appStatusRef" > +