@@ -410,7 +410,7 @@ import * as echarts from 'echarts'
410410import { apiService } from ' @/api'
411411import { mockApi } from ' @/mock/api'
412412import type { ServicesResponse , ServiceDetail , ServiceActiveVersionsResponse , ServiceMetricsResponse , AvailableVersionsResponse , DeploymentPlansResponse , MetricsResponse } from ' @/mock/services'
413- import { createReleaseTask , rollbackVersion as rollbackVersionInMock , updateServiceAlertStatus , getServiceAlertStatus , type ServiceAlertStatus , getServiceDeploymentStatus , type DeploymentStatus , getServiceVersionAlertStatus } from ' @/mock/services'
413+ import { updateServiceAlertStatus , getServiceAlertStatus , type ServiceAlertStatus , getServiceDeploymentStatus , type DeploymentStatus , getServiceVersionAlertStatus } from ' @/mock/services'
414414
415415const router = useRouter ()
416416
@@ -1135,72 +1135,40 @@ const createRelease = async () => {
11351135 }
11361136
11371137 try {
1138- // 1. 调用mock数据操作函数,修改底层数据
1139- createReleaseTask (selectedNode .value .name , selectedVersion .value )
1138+ // 调用后端API创建部署计划
1139+ const response = await apiService .createDeployment ({
1140+ service: selectedNode .value .name ,
1141+ version: selectedVersion .value ,
1142+ scheduleTime: scheduledStart .value || undefined
1143+ })
1144+
1145+ console .log (' 部署计划创建成功:' , response .data )
11401146
1141- // 2. 重新加载服务详情数据(这样饼状图会自动更新 )
1147+ // 重新加载服务详情数据(饼状图会自动更新 )
11421148 const serviceDetailResult = await loadServiceDetail (selectedNode .value .name )
1143- console .log (' 重新加载的服务详情数据:' , serviceDetailResult )
11441149 if (serviceDetailResult ) {
11451150 selectedNode .value = { ... serviceDetailResult , status: getNodeStatus (serviceDetailResult ) }
1146- console .log (' 更新后的selectedNode.value:' , selectedNode .value )
11471151 }
11481152
1149- // 3. 重新加载可发布版本数据(这样下拉框会自动更新 )
1153+ // 重新加载可发布版本数据(下拉框会自动更新 )
11501154 const availableVersionsResult = await loadServiceAvailableVersions (selectedNode .value .name )
11511155 if (availableVersionsResult ) {
11521156 currentServiceAvailableVersions .value = availableVersionsResult
11531157 }
11541158
1155- // 4. 生成合理的黄金指标数值并更新表格
1156- const generateMetrics = () => {
1157- return {
1158- latency: (Math .random () * 50 + 10 ).toFixed (1 ), // 10-60ms
1159- traffic: (Math .random () * 1000 + 100 ).toFixed (0 ), // 100-1100 req/s
1160- errorRatio: (Math .random () * 2 ).toFixed (1 ), // 0-2%
1161- saturation: (Math .random () * 20 + 60 ).toFixed (0 ) // 60-80%
1162- }
1159+ // 重新加载服务指标数据
1160+ const metricsDataResult = await loadServiceMetrics (selectedNode .value .name )
1161+ if (metricsDataResult ) {
1162+ currentServiceMetrics .value = metricsDataResult
11631163 }
11641164
1165- const newMetrics = generateMetrics ()
1166-
1167- // 直接更新当前服务的指标数据
1168- if (currentServiceMetrics .value ) {
1169- // 添加新版本的指标数据
1170- const newVersionMetrics = {
1171- version: selectedVersion .value ,
1172- metrics: [
1173- { name: ' latency' , value: parseFloat (newMetrics .latency ) },
1174- { name: ' traffic' , value: parseFloat (newMetrics .traffic ) },
1175- { name: ' errorRatio' , value: parseFloat (newMetrics .errorRatio ) },
1176- { name: ' saturation' , value: parseFloat (newMetrics .saturation ) }
1177- ]
1178- }
1179-
1180- // 检查是否已存在该版本,如果存在则更新,否则添加
1181- const existingIndex = currentServiceMetrics .value .items .findIndex (item => item .version === selectedVersion .value )
1182- if (existingIndex >= 0 ) {
1183- currentServiceMetrics .value .items [existingIndex ] = newVersionMetrics
1184- } else {
1185- currentServiceMetrics .value .items .push (newVersionMetrics )
1186- }
1187-
1188- // 更新summary数据(使用所有版本的平均值)
1189- const allVersions = currentServiceMetrics .value .items
1190- const avgLatency = allVersions .reduce ((sum , v ) => sum + (v .metrics .find (m => m .name === ' latency' )?.value || 0 ), 0 ) / allVersions .length
1191- const avgTraffic = allVersions .reduce ((sum , v ) => sum + (v .metrics .find (m => m .name === ' traffic' )?.value || 0 ), 0 ) / allVersions .length
1192- const avgErrorRatio = allVersions .reduce ((sum , v ) => sum + (v .metrics .find (m => m .name === ' errorRatio' )?.value || 0 ), 0 ) / allVersions .length
1193- const avgSaturation = allVersions .reduce ((sum , v ) => sum + (v .metrics .find (m => m .name === ' saturation' )?.value || 0 ), 0 ) / allVersions .length
1194-
1195- currentServiceMetrics .value .summary .metrics = [
1196- { name: ' latency' , value: avgLatency },
1197- { name: ' traffic' , value: avgTraffic },
1198- { name: ' errorRatio' , value: avgErrorRatio },
1199- { name: ' saturation' , value: avgSaturation }
1200- ]
1165+ // 重新加载发布计划列表
1166+ const deploymentPlansDataResult = await loadServiceDeploymentPlans (selectedNode .value .name )
1167+ if (deploymentPlansDataResult ) {
1168+ currentServiceDeploymentPlans .value = deploymentPlansDataResult
12011169 }
12021170
1203- // 5. 重新加载服务数据以更新拓扑图
1171+ // 重新加载服务数据以更新拓扑图
12041172 await loadServicesData ()
12051173
12061174 ElMessage .success (' 发布任务创建成功' )
@@ -1372,58 +1340,36 @@ const togglePauseResumeForVersion = async (version: any) => {
13721340
13731341const rollbackVersion = async (version : any ) => {
13741342 try {
1375- // 1. 调用mock数据操作函数,修改底层数据
1376- rollbackVersionInMock ( selectedNode . value ?. name || ' ' , version . version )
1343+ // 调用后端API执行回滚操作
1344+ const response = await apiService . rollbackDeployment ( version . deployId )
13771345
1378- // 2. 重新加载服务详情数据(这样饼状图会自动更新)
1346+ console .log (' 版本回滚成功:' , response .data )
1347+
1348+ // 重新加载服务详情数据(饼状图会自动更新)
13791349 if (selectedNode .value ) {
13801350 const serviceDetailResult = await loadServiceDetail (selectedNode .value .name )
13811351 if (serviceDetailResult ) {
13821352 selectedNode .value = { ... serviceDetailResult , status: getNodeStatus (serviceDetailResult ) }
13831353 }
13841354 }
13851355
1386- // 3. 重新加载可发布版本数据(这样下拉框会自动更新 )
1356+ // 重新加载可发布版本数据(下拉框会自动更新 )
13871357 if (selectedNode .value ) {
13881358 const availableVersionsResult = await loadServiceAvailableVersions (selectedNode .value .name )
13891359 if (availableVersionsResult ) {
13901360 currentServiceAvailableVersions .value = availableVersionsResult
13911361 }
13921362 }
13931363
1394- // 4. 从指标数据中移除该版本
1395- if (currentServiceMetrics .value ) {
1396- const versionIndex = currentServiceMetrics .value .items .findIndex (item => item .version === version .version )
1397- if (versionIndex >= 0 ) {
1398- currentServiceMetrics .value .items .splice (versionIndex , 1 )
1399-
1400- // 更新summary数据(使用剩余版本的平均值)
1401- const remainingVersions = currentServiceMetrics .value .items
1402- if (remainingVersions .length > 0 ) {
1403- const avgLatency = remainingVersions .reduce ((sum , v ) => sum + (v .metrics .find (m => m .name === ' latency' )?.value || 0 ), 0 ) / remainingVersions .length
1404- const avgTraffic = remainingVersions .reduce ((sum , v ) => sum + (v .metrics .find (m => m .name === ' traffic' )?.value || 0 ), 0 ) / remainingVersions .length
1405- const avgErrorRatio = remainingVersions .reduce ((sum , v ) => sum + (v .metrics .find (m => m .name === ' errorRatio' )?.value || 0 ), 0 ) / remainingVersions .length
1406- const avgSaturation = remainingVersions .reduce ((sum , v ) => sum + (v .metrics .find (m => m .name === ' saturation' )?.value || 0 ), 0 ) / remainingVersions .length
1407-
1408- currentServiceMetrics .value .summary .metrics = [
1409- { name: ' latency' , value: avgLatency },
1410- { name: ' traffic' , value: avgTraffic },
1411- { name: ' errorRatio' , value: avgErrorRatio },
1412- { name: ' saturation' , value: avgSaturation }
1413- ]
1414- } else {
1415- // 如果没有剩余版本,清空summary数据
1416- currentServiceMetrics .value .summary .metrics = [
1417- { name: ' latency' , value: 0 },
1418- { name: ' traffic' , value: 0 },
1419- { name: ' errorRatio' , value: 0 },
1420- { name: ' saturation' , value: 0 }
1421- ]
1422- }
1364+ // 重新加载服务指标数据
1365+ if (selectedNode .value ) {
1366+ const metricsDataResult = await loadServiceMetrics (selectedNode .value .name )
1367+ if (metricsDataResult ) {
1368+ currentServiceMetrics .value = metricsDataResult
14231369 }
14241370 }
14251371
1426- // 5. 重新加载服务数据以更新拓扑图
1372+ // 重新加载服务数据以更新拓扑图
14271373 await loadServicesData ()
14281374
14291375 ElMessage .success (' 版本回滚成功' )
0 commit comments