From aece1875e258eadce435051f0334fc5d0f0b78e2 Mon Sep 17 00:00:00 2001 From: hyeonsu Date: Tue, 16 Sep 2025 17:33:32 +0900 Subject: [PATCH] =?UTF-8?q?DataFlowDesigner=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=EC=97=90=EC=84=9C=20currentDiagramId=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EA=B4=80=EB=A6=AC=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=20=EC=A0=80=EC=9E=A5=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/dataflow/DataFlowDesigner.tsx | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) 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, ], );