From 34acdbca3d7c416b4c168eb24620a3d17346aa23 Mon Sep 17 00:00:00 2001 From: zhengkunwang223 <1paneldev@sina.com> Date: Tue, 4 Nov 2025 17:00:00 +0800 Subject: [PATCH] feat: Add a check during upgrade to detect whether the Compose file has been modified. --- agent/app/dto/response/app.go | 1 + agent/app/service/app_utils.go | 5 +++ frontend/src/api/interface/app.ts | 3 ++ frontend/src/lang/modules/en.ts | 2 ++ frontend/src/lang/modules/es-es.ts | 3 ++ frontend/src/lang/modules/ja.ts | 2 ++ frontend/src/lang/modules/ko.ts | 2 ++ frontend/src/lang/modules/ms.ts | 2 ++ frontend/src/lang/modules/pt-br.ts | 3 ++ frontend/src/lang/modules/ru.ts | 3 ++ frontend/src/lang/modules/tr.ts | 3 ++ frontend/src/lang/modules/zh-Hant.ts | 2 ++ frontend/src/lang/modules/zh.ts | 1 + .../src/views/app-store/installed/index.vue | 2 +- .../app-store/installed/upgrade/index.vue | 33 ++++++++++--------- 15 files changed, 50 insertions(+), 17 deletions(-) diff --git a/agent/app/dto/response/app.go b/agent/app/dto/response/app.go index 2102019f48d3..50d5cfe59311 100644 --- a/agent/app/dto/response/app.go +++ b/agent/app/dto/response/app.go @@ -128,6 +128,7 @@ type AppInstallDTO struct { Favorite bool `json:"favorite"` App AppDetail `json:"app"` Container string `json:"container"` + IsEdit bool `json:"isEdit"` } type AppInstallInfo struct { diff --git a/agent/app/service/app_utils.go b/agent/app/service/app_utils.go index 608ac45dda20..09c1e5ca7b47 100644 --- a/agent/app/service/app_utils.go +++ b/agent/app/service/app_utils.go @@ -1568,7 +1568,12 @@ func handleInstalled(appInstallList []model.AppInstall, updated bool, sync bool) Container: installed.ContainerName, } if updated { + detail, _ := appDetailRepo.GetFirst(repo.WithByID(installed.AppDetailId)) installDTO.DockerCompose = installed.DockerCompose + rawCompose, _ := getUpgradeCompose(installed, detail) + if rawCompose != installed.DockerCompose { + installDTO.IsEdit = true + } } app, err := appRepo.GetFirst(repo.WithByID(installed.AppId)) if err != nil { diff --git a/frontend/src/api/interface/app.ts b/frontend/src/api/interface/app.ts index b8826b968316..208200de6bb8 100644 --- a/frontend/src/api/interface/app.ts +++ b/frontend/src/api/interface/app.ts @@ -184,6 +184,9 @@ export namespace App { appKey: string; appType: string; appStatus: string; + isEdit: boolean; + dockerCompose: string; + app: App.AppDetail; } export interface AppInstalledInfo { diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 305ca9628800..410520be500c 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -2302,6 +2302,8 @@ const message = { uninstallDeleteBackup: 'Uninstall App - Delete Backup', uninstallDeleteImage: 'Uninstall App - Delete Image', upgradeBackup: 'Backup App Before Upgrade', + noAppHelper: 'No application detected, please go to the task center to view the app store sync log', + isEdirWarn: 'Detected modification to docker-compose.yml file, please check the comparison', }, website: { primaryDomain: 'Primary domain', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 439ee4b67c3d..73c43f91b249 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -2297,6 +2297,9 @@ const message = { uninstallDeleteBackup: 'Desinstalar - Eliminar respaldo', uninstallDeleteImage: 'Desinstalar - Eliminar imagen', upgradeBackup: 'Respaldar app antes de actualizar', + noAppHelper: + 'No se detectó ninguna aplicación, por favor vaya al centro de tareas para ver el registro de sincronización de la tienda de aplicaciones', + isEdirWarn: 'Se detectó modificación en el archivo docker-compose.yml, por favor revise la comparación', }, website: { primaryDomain: 'Dominio principal', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 2fa84ebab4e4..b17a11663645 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -2218,6 +2218,8 @@ const message = { uninstallDeleteBackup: 'アプリをアンインストール - バックアップを削除', uninstallDeleteImage: 'アプリをアンインストール - イメージを削除', upgradeBackup: 'アプリのアップグレード前にアプリをバックアップ', + noAppHelper: 'アプリケーションが検出されませんでした。タスクセンターでアプリストアの同期ログを確認してください', + isEdirWarn: 'docker-compose.yml ファイルが変更されたことを検出しました。比較を確認してください', }, website: { primaryDomain: 'プライマリドメイン', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 48c0f4924001..b9066650074c 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -2181,6 +2181,8 @@ const message = { uninstallDeleteBackup: '앱 제거 - 백업 삭제', uninstallDeleteImage: '앱 제거 - 이미지 삭제', upgradeBackup: '앱 업그레이드 전 앱 백업', + noAppHelper: '애플리케이션이 감지되지 않았습니다. 작업 센터에서 앱 스토어 동기화 로그를 확인해 주세요', + isEdirWarn: 'docker-compose.yml 파일이 수정된 것을 감지했습니다. 비교를 확인해 주세요', }, website: { primaryDomain: '기본 도메인', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 41239eb2635b..dd31ed1781c2 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -2277,6 +2277,8 @@ const message = { uninstallDeleteBackup: 'Cop Terhapus Semasa Nyahpasang Aplikasi', uninstallDeleteImage: 'Imej Terhapus Semasa Nyahpasang Aplikasi', upgradeBackup: 'Sandaran Aplikasi Sebelum Naik Taraf', + noAppHelper: 'Tiada aplikasi dikesan, sila pergi ke pusat tugas untuk melihat log penyegerakan kedai aplikasi', + isEdirWarn: 'Mengesan pengubahsuaian pada fail docker-compose.yml, sila semak perbandingan', }, website: { primaryDomain: 'Domain Utama', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 56fe4de5ec0b..c9c13f8bd614 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -2276,6 +2276,9 @@ const message = { uninstallDeleteBackup: 'Desinstalar Aplicativo - Excluir Backup', uninstallDeleteImage: 'Desinstalar Aplicativo - Excluir Imagem', upgradeBackup: 'Fazer Backup do Aplicativo Antes de Atualizar', + noAppHelper: + 'Nenhuma aplicação detectada, por favor vá ao centro de tarefas para visualizar o log de sincronização da loja de aplicativos', + isEdirWarn: 'Detectada modificação no arquivo docker-compose.yml, por favor verifique a comparação', }, website: { primaryDomain: 'Domínio principal', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 8524d2e20ffb..5f6ff4e62ce8 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -2274,6 +2274,9 @@ const message = { uninstallDeleteBackup: 'Деинсталляция приложения - Удаление резервной копии', uninstallDeleteImage: 'Деинсталляция приложения - Удаление образа', upgradeBackup: 'Резервное копирование приложения перед обновлением', + noAppHelper: + 'Приложения не обнаружены, пожалуйста, перейдите в центр задач для просмотра журнала синхронизации магазина приложений', + isEdirWarn: 'Обнаружено изменение файла docker-compose.yml, пожалуйста, проверьте сравнение', }, website: { primaryDomain: 'Основной домен', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 54cfb252c13a..80f891efd62b 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -2332,6 +2332,9 @@ const message = { uninstallDeleteBackup: 'Uygulamayı Kaldır - Yedeği Sil', uninstallDeleteImage: 'Uygulamayı Kaldır - Görüntüyü Sil', upgradeBackup: 'Yükseltmeden Önce Uygulamayı Yedekle', + noAppHelper: + 'Uygulama tespit edilmedi, lütfen uygulama mağazası senkronizasyon günlüğünü görüntülemek için görev merkezine gidin', + isEdirWarn: 'docker-compose.yml dosyasında değişiklik tespit edildi, lütfen karşılaştırmayı kontrol edin', }, website: { primaryDomain: 'Birincil alan adı', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 66dca3f25f18..a4b4f2cc64ed 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -2137,6 +2137,8 @@ const message = { uninstallDeleteBackup: '移除應用-刪除備份', uninstallDeleteImage: '移除應用-刪除鏡像', upgradeBackup: '應用升級前備份應用', + noAppHelper: '未檢測到應用程式,請前往任務中心查看應用商店同步日誌', + isEdirWarn: '檢測到 docker-compose.yml 檔案被修改,請查看對比', }, website: { primaryDomain: '主域名', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 78eb635b9097..2b71d7d4af27 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -2130,6 +2130,7 @@ const message = { uninstallDeleteImage: '卸载应用-删除镜像', upgradeBackup: '应用升级前备份应用', noAppHelper: '未检测到应用,请前往任务中心查看应用商店同步日志', + isEdirWarn: '检测到 docker-compose.yml 文件被修改,请查看对比', }, website: { primaryDomain: '主域名', diff --git a/frontend/src/views/app-store/installed/index.vue b/frontend/src/views/app-store/installed/index.vue index 7929798d715c..93276fbeb469 100644 --- a/frontend/src/views/app-store/installed/index.vue +++ b/frontend/src/views/app-store/installed/index.vue @@ -550,7 +550,7 @@ const openOperate = (row: any, op: string) => { operateReq.installId = row.id; operateReq.operate = op; if (op == 'upgrade') { - upgradeRef.value.acceptParams(row.id, row.name, row.dockerCompose, op, row.app); + upgradeRef.value.acceptParams(row, op); } else if (op == 'delete') { appInstalledDeleteCheck(row.id).then(async (res) => { const items = res.data; diff --git a/frontend/src/views/app-store/installed/upgrade/index.vue b/frontend/src/views/app-store/installed/upgrade/index.vue index 158f5e634e01..1902ed0850be 100644 --- a/frontend/src/views/app-store/installed/upgrade/index.vue +++ b/frontend/src/views/app-store/installed/upgrade/index.vue @@ -53,20 +53,19 @@ {{ $t('app.pullImageHelper') }} -