diff --git a/web/features/deployments/components/rollback-modal.tsx b/web/features/deployments/components/rollback-modal.tsx deleted file mode 100644 index c0b06ca178..0000000000 --- a/web/features/deployments/components/rollback-modal.tsx +++ /dev/null @@ -1,157 +0,0 @@ -'use client' -import { - AlertDialog, - AlertDialogActions, - AlertDialogCancelButton, - AlertDialogConfirmButton, - AlertDialogContent, - AlertDialogDescription, - AlertDialogTitle, -} from '@langgenius/dify-ui/alert-dialog' -import { skipToken, useMutation, useQuery } from '@tanstack/react-query' -import { useAtomValue, useSetAtom } from 'jotai' -import { useTranslation } from 'react-i18next' -import { consoleQuery } from '@/service/client' -import { DEPLOYMENT_PAGE_SIZE } from '../data' -import { - closeRollbackModalAtom, - rollbackModalAppInstanceIdAtom, - rollbackModalEnvironmentIdAtom, - rollbackModalOpenAtom, - rollbackModalTargetReleaseIdAtom, -} from '../store' -import { - activeRelease, - deployedRows, - environmentId, - environmentName, - environmentOptionsFromOptionsReply, - releaseCommit, - releaseLabel, -} from '../utils' - -function InfoRow({ label, value }: { - label: string - value: string -}) { - return ( -
- {label} - {value} -
- ) -} - -export function RollbackModal() { - const { t } = useTranslation('deployments') - const open = useAtomValue(rollbackModalOpenAtom) - const appInstanceId = useAtomValue(rollbackModalAppInstanceIdAtom) - const modalEnvironmentId = useAtomValue(rollbackModalEnvironmentIdAtom) - const targetReleaseId = useAtomValue(rollbackModalTargetReleaseIdAtom) - const closeRollbackModal = useSetAtom(closeRollbackModalAtom) - const rollbackDeployment = useMutation(consoleQuery.enterprise.appDeploy.createDeployment.mutationOptions()) - const appInput = appInstanceId - ? { params: { appInstanceId } } - : skipToken - const { data: overview } = useQuery(consoleQuery.enterprise.appDeploy.getAppInstanceOverview.queryOptions({ - input: appInput, - enabled: open && Boolean(appInstanceId), - })) - const { data: environmentDeployments } = useQuery(consoleQuery.enterprise.appDeploy.listRuntimeInstances.queryOptions({ - input: appInput, - enabled: open && Boolean(appInstanceId), - })) - const { data: environmentOptionsReply } = useQuery(consoleQuery.enterprise.appDeploy.listDeploymentEnvironmentOptions.queryOptions({ - enabled: open, - })) - const { data: releaseHistory } = useQuery(consoleQuery.enterprise.appDeploy.listReleases.queryOptions({ - input: appInstanceId - ? { - params: { appInstanceId }, - query: { - pageNumber: 1, - resultsPerPage: DEPLOYMENT_PAGE_SIZE, - }, - } - : skipToken, - enabled: open && Boolean(appInstanceId), - })) - const environmentOptions = environmentOptionsFromOptionsReply(environmentOptionsReply) - - const currentRow = deployedRows(environmentDeployments?.data) - .find(row => environmentId(row.environment) === modalEnvironmentId) - const targetRelease = [ - ...(releaseHistory?.data?.filter(release => !!release.id) ?? []), - ].find(release => release.id === targetReleaseId) - const currentRelease = activeRelease(currentRow) - const environment = currentRow?.environment - ?? environmentOptions.find(env => env.id === modalEnvironmentId) - const app = overview?.instance - const appName = app?.name ?? '-' - const sourceAppName = app?.sourceAppName ?? appName - - const confirm = () => { - if (!appInstanceId || !modalEnvironmentId || !targetReleaseId) - return - closeRollbackModal() - rollbackDeployment.mutate({ - params: { - appInstanceId, - }, - body: { - environmentId: modalEnvironmentId, - releaseId: targetReleaseId, - bindings: [], - }, - }) - } - - return ( - !next && closeRollbackModal()} - > - -
- - {t('rollback.title', { release: releaseLabel(targetRelease) })} - - - {t('rollback.description')} - - -
- - - - - -
- -
-
- {t('rollback.impactingTitle')} -
-

- {t('rollback.impactingBody')} -

-
-
- - - {t('rollback.cancel')} - - - {t('rollback.confirm')} - - -
-
- ) -} diff --git a/web/features/deployments/detail/index.tsx b/web/features/deployments/detail/index.tsx index 2eca7cbf59..db57c65062 100644 --- a/web/features/deployments/detail/index.tsx +++ b/web/features/deployments/detail/index.tsx @@ -10,7 +10,6 @@ import Link from '@/next/link' import { useSelectedLayoutSegment } from '@/next/navigation' import { consoleQuery } from '@/service/client' import { DeployDrawer } from '../components/deploy-drawer' -import { RollbackModal } from '../components/rollback-modal' import { DeploymentSidebar } from './deployment-sidebar' import { isInstanceDetailTabKey } from './tabs' @@ -78,7 +77,6 @@ export function InstanceDetail({ appInstanceId, children }: { - ) } diff --git a/web/features/deployments/list/index.tsx b/web/features/deployments/list/index.tsx index 17822aa296..3ca7db7299 100644 --- a/web/features/deployments/list/index.tsx +++ b/web/features/deployments/list/index.tsx @@ -7,7 +7,6 @@ import Input from '@/app/components/base/input' import { consoleQuery } from '@/service/client' import { CreateInstanceModal } from '../components/create-instance-modal' import { DeployDrawer } from '../components/deploy-drawer' -import { RollbackModal } from '../components/rollback-modal' import { SOURCE_APPS_PAGE_SIZE } from '../data' import { EnvironmentFilter } from './environment-filter' import { InstanceCard } from './instance-card' @@ -94,7 +93,6 @@ export function DeploymentsMain() { - ) } diff --git a/web/features/deployments/store.ts b/web/features/deployments/store.ts index c9d90cb6f1..261b951ff6 100644 --- a/web/features/deployments/store.ts +++ b/web/features/deployments/store.ts @@ -6,13 +6,6 @@ type OpenDeployDrawerParams = { releaseId?: string } -type OpenRollbackParams = { - appInstanceId: string - environmentId: string - targetReleaseId: string - deploymentId?: string -} - type CreatedDeveloperApiToken = { appInstanceId: string token: string @@ -23,12 +16,6 @@ export const deployDrawerAppInstanceIdAtom = atom(undefined) export const deployDrawerEnvironmentIdAtom = atom(undefined) export const deployDrawerReleaseIdAtom = atom(undefined) -export const rollbackModalOpenAtom = atom(false) -export const rollbackModalAppInstanceIdAtom = atom(undefined) -export const rollbackModalEnvironmentIdAtom = atom(undefined) -export const rollbackModalDeploymentIdAtom = atom(undefined) -export const rollbackModalTargetReleaseIdAtom = atom(undefined) - export const createInstanceModalOpenAtom = atom(false) export const createdDeveloperApiTokenAtom = atom(undefined) @@ -45,26 +32,6 @@ export const closeDeployDrawerAtom = atom(null, (_get, set) => { set(deployDrawerReleaseIdAtom, undefined) }) -export const openRollbackModalAtom = atom(null, (_get, set, { - appInstanceId, - environmentId, - deploymentId, - targetReleaseId, -}: OpenRollbackParams) => { - set(rollbackModalAppInstanceIdAtom, appInstanceId) - set(rollbackModalEnvironmentIdAtom, environmentId) - set(rollbackModalDeploymentIdAtom, deploymentId) - set(rollbackModalTargetReleaseIdAtom, targetReleaseId) - set(rollbackModalOpenAtom, true) -}) -export const closeRollbackModalAtom = atom(null, (_get, set) => { - set(rollbackModalOpenAtom, false) - set(rollbackModalAppInstanceIdAtom, undefined) - set(rollbackModalEnvironmentIdAtom, undefined) - set(rollbackModalDeploymentIdAtom, undefined) - set(rollbackModalTargetReleaseIdAtom, undefined) -}) - export const openCreateInstanceModalAtom = atom(null, (_get, set) => { set(createInstanceModalOpenAtom, true) }) diff --git a/web/i18n/en-US/deployments.json b/web/i18n/en-US/deployments.json index 74f2acbe84..097cf4ccaf 100644 --- a/web/i18n/en-US/deployments.json +++ b/web/i18n/en-US/deployments.json @@ -182,7 +182,6 @@ "deployTab.panel.unknownError": "Deployment failed.", "deployTab.promote": "Promote", "deployTab.retry": "Retry", - "deployTab.rollback": "Rollback...", "deployTab.shortcut": "Shortcut", "deployTab.status.deployFailed": "Deploy failed", "deployTab.status.deployingRelease": "Deploying ({{release}})", @@ -248,17 +247,6 @@ "overview.switchSourceAppHint": "After switching, only newly created releases use the new source app. Historical releases and existing deployments are not changed.", "overview.viewDeployments": "View deployments", "overview.webapp": "WebApp", - "rollback.cancel": "Cancel", - "rollback.confirm": "Deploy release", - "rollback.currentRelease": "Current release", - "rollback.description": "Deploying an existing release switches this environment's active release pointer; the underlying Runtime Shell is not rebuilt.", - "rollback.environment": "Environment", - "rollback.impactingBody": "The target release is loaded first, then the pointer is switched. In-flight workers drain before the cutover completes.", - "rollback.impactingTitle": "Impacting action", - "rollback.instance": "Instance", - "rollback.rollbackTo": "Target release", - "rollback.sourceApp": "Source app", - "rollback.title": "Deploy {{release}}", "settings.danger": "Danger zone", "settings.dangerDesc": "Deleting this app instance removes deployment metadata after all environments are undeployed.", "settings.delete": "Delete instance", diff --git a/web/i18n/zh-Hans/deployments.json b/web/i18n/zh-Hans/deployments.json index a453d7cb0d..fc95ba4c5b 100644 --- a/web/i18n/zh-Hans/deployments.json +++ b/web/i18n/zh-Hans/deployments.json @@ -182,7 +182,6 @@ "deployTab.panel.unknownError": "部署失败。", "deployTab.promote": "发布", "deployTab.retry": "重试", - "deployTab.rollback": "回滚...", "deployTab.shortcut": "快捷", "deployTab.status.deployFailed": "部署失败", "deployTab.status.deployingRelease": "部署中({{release}})", @@ -248,17 +247,6 @@ "overview.switchSourceAppHint": "切换后,仅新建 Release 会使用新的源应用;历史 Release 和现有部署不受影响。", "overview.viewDeployments": "查看部署", "overview.webapp": "WebApp", - "rollback.cancel": "取消", - "rollback.confirm": "确认部署", - "rollback.currentRelease": "当前发布", - "rollback.description": "部署已有发布版本会切换该环境的活动发布指针,不会重建底层 Runtime Shell。", - "rollback.environment": "环境", - "rollback.impactingBody": "先加载目标发布版本,再切换指针。进行中的工作者会先完成排空再执行切换。", - "rollback.impactingTitle": "影响操作", - "rollback.instance": "实例", - "rollback.rollbackTo": "目标发布", - "rollback.sourceApp": "源应用", - "rollback.title": "部署 {{release}}", "settings.danger": "危险区域", "settings.dangerDesc": "删除应用实例会在所有环境取消部署后移除部署元数据。", "settings.delete": "删除实例",