diff --git a/frontend/packages/core/src/pages/aiSetting/AIFlowChart.tsx b/frontend/packages/core/src/pages/aiSetting/AIFlowChart.tsx index b61d82da..8ea31773 100644 --- a/frontend/packages/core/src/pages/aiSetting/AIFlowChart.tsx +++ b/frontend/packages/core/src/pages/aiSetting/AIFlowChart.tsx @@ -39,6 +39,7 @@ const calculateNodePositions = (models: ModelListData[], startY = LAYOUT.NODE_ST return models.reduce( (acc, model, index) => { const y = startY + index * gap + return { ...acc, [model.id]: { @@ -134,15 +135,46 @@ const AIFlowChart = () => { })) ] + const successModel = modelData.find((model) => model.status !== 'abnormal') as ModelListData const newEdges: any = [ - ...modelData.map((model) => ({ - id: `service-${model.id}`, - source: 'apiService', - target: model.id, - label: `${model.api_count} apis`, - data: { id: model.id }, - animated: true - })), + ...modelData.flatMap((model, modelIndex) => { + if (model.status === 'enabled') { + return [ + { + id: `service-${model.id}`, + source: 'apiService', + target: model.id, + label: `${model.api_count} apis`, + data: { + id: model.id, + offset: modelIndex * 20 // Add vertical offset based on model index + }, + animated: true, + style: { stroke: '#52c41a' } + } + ] + } else { + return [ + { + id: `service-${model.id}-failed`, + source: 'apiService', + target: model.id, + label: ``, + data: { id: model.id }, + style: { stroke: '#ff4d4f' } + }, + { + id: `service-${model.id}-backup`, + source: 'apiService', + target: successModel.id, + label: 'backup', + data: { id: model.id, isBackup: true }, + animated: true, + style: { stroke: '#52c41a' } + } + ] + } + }), ...modelData.map((model) => ({ id: `${model.id}-keys-edge`, source: model.id, diff --git a/frontend/packages/core/src/pages/aiSetting/components/CustomEdge.tsx b/frontend/packages/core/src/pages/aiSetting/components/CustomEdge.tsx index 7e350a2c..e7c2d4e6 100644 --- a/frontend/packages/core/src/pages/aiSetting/components/CustomEdge.tsx +++ b/frontend/packages/core/src/pages/aiSetting/components/CustomEdge.tsx @@ -27,7 +27,14 @@ export default function CustomEdge({ return ( <> - + {label && (