diff --git a/frontend/components/dataflow/DataFlowDesigner.tsx b/frontend/components/dataflow/DataFlowDesigner.tsx index 6561b65d..406b372b 100644 --- a/frontend/components/dataflow/DataFlowDesigner.tsx +++ b/frontend/components/dataflow/DataFlowDesigner.tsx @@ -56,6 +56,7 @@ export const DataFlowDesigner: React.FC = ({ pendingConnection, setPendingConnection, currentDiagramId, + setCurrentDiagramId, currentDiagramName, setCurrentDiagramName, currentDiagramCategory, @@ -93,6 +94,9 @@ export const DataFlowDesigner: React.FC = ({ const loadDiagramData = async () => { if (diagramId && diagramId > 0) { try { + // 편집 모드일 때 currentDiagramId 설정 + setCurrentDiagramId(diagramId); + const jsonDiagram = await DataFlowAPI.getJsonDataFlowDiagramById(diagramId, companyCode); if (jsonDiagram) { // 관계도 이름 설정 @@ -217,7 +221,16 @@ export const DataFlowDesigner: React.FC = ({ }; loadDiagramData(); - }, [diagramId, companyCode, setCurrentDiagramName, setNodes, setEdges, setTempRelationships, handleColumnClick]); + }, [ + diagramId, + companyCode, + setCurrentDiagramId, + setCurrentDiagramName, + setNodes, + setEdges, + setTempRelationships, + handleColumnClick, + ]); // 키보드 이벤트 핸들러 (Del 키로 선택된 노드 삭제) useEffect(() => { @@ -661,17 +674,26 @@ export const DataFlowDesigner: React.FC = ({ })) as any, // plan 전체를 any로 캐스팅 }; - if (diagramId && diagramId > 0) { - // 기존 관계도 수정 + if ((diagramId && diagramId > 0) || (currentDiagramId && currentDiagramId > 0)) { + // 기존 관계도 수정 (prop diagramId 또는 내부 currentDiagramId 사용) + const targetDiagramId = diagramId || currentDiagramId; await DataFlowAPI.updateJsonDataFlowDiagram( - diagramId, + targetDiagramId!, saveRequest, companyCode, authUser?.userId || "SYSTEM", ); } else { // 새로운 관계도 생성 - await DataFlowAPI.createJsonDataFlowDiagram(saveRequest, companyCode, authUser?.userId || "SYSTEM"); + const newDiagram = await DataFlowAPI.createJsonDataFlowDiagram( + saveRequest, + companyCode, + authUser?.userId || "SYSTEM", + ); + + // 새로 생성된 다이어그램 ID를 내부 상태에 저장 (다음 저장부터는 업데이트 모드) + setCurrentDiagramId(newDiagram.diagram_id); + setCurrentDiagramName(newDiagram.diagram_name); } toast.success(`관계도 "${diagramName}"가 성공적으로 저장되었습니다.`); @@ -688,11 +710,14 @@ export const DataFlowDesigner: React.FC = ({ nodes, tempRelationships, diagramId, + currentDiagramId, companyCode, authUser?.userId, setIsSaving, setHasUnsavedChanges, setShowSaveModal, + setCurrentDiagramId, + setCurrentDiagramName, ], );