From 5fc7dd095b929dd51aad862fd1569d350854882a Mon Sep 17 00:00:00 2001 From: hyeonsu Date: Tue, 16 Sep 2025 18:22:06 +0900 Subject: [PATCH] =?UTF-8?q?ConnectionSetupModal=20=EB=B0=8F=20Relationship?= =?UTF-8?q?ListModal=EC=97=90=EC=84=9C=20=EC=84=A4=EC=A0=95=20=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C=EC=84=A0:=20data-sav?= =?UTF-8?q?e=20=EC=97=B0=EA=B2=B0=EC=9D=98=20=EB=8B=A4=EC=96=91=ED=95=9C?= =?UTF-8?q?=20=EA=B5=AC=EC=A1=B0=20=EC=A7=80=EC=9B=90=20=EB=B0=8F=20?= =?UTF-8?q?=EC=9E=84=EC=8B=9C=20=EA=B4=80=EA=B3=84=20=EC=9A=B0=EC=84=A0=20?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataflow/ConnectionSetupModal.tsx | 36 ++++++++++++++----- .../dataflow/RelationshipListModal.tsx | 10 ++++-- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/frontend/components/dataflow/ConnectionSetupModal.tsx b/frontend/components/dataflow/ConnectionSetupModal.tsx index 0c2f6b91..8cb2c831 100644 --- a/frontend/components/dataflow/ConnectionSetupModal.tsx +++ b/frontend/components/dataflow/ConnectionSetupModal.tsx @@ -84,9 +84,20 @@ export const ConnectionSetupModal: React.FC = ({ setSimpleKeySettings({ notes: settings.notes as string, }); - } else if (connectionType === "data-save" && settings.actions) { - // data-save 설정 로드 - 안전하게 처리 - const actionsData = Array.isArray(settings.actions) ? settings.actions : []; + } else if (connectionType === "data-save") { + // data-save 설정 로드 - 안전하게 처리 (다양한 구조 지원) + let actionsData: Record[] = []; + + if (Array.isArray((settings as any).actions)) { + // 직접 actions 배열이 있는 경우 + actionsData = (settings as any).actions; + } else if ((settings as any).plan && Array.isArray((settings as any).plan.actions)) { + // plan 객체 안에 actions가 있는 경우 + actionsData = (settings as any).plan.actions; + } else if (Array.isArray(settings)) { + // settings 자체가 actions 배열인 경우 + actionsData = settings as Record[]; + } setDataSaveSettings({ actions: actionsData.map((action: Record) => ({ id: (action.id as string) || `action-${Date.now()}`, @@ -118,12 +129,19 @@ export const ConnectionSetupModal: React.FC = ({ })), }); - // 전체 실행 조건 로드 - if (settings.control) { - const controlSettings = settings.control as { conditionTree?: ConditionNode[] }; - if (Array.isArray(controlSettings.conditionTree)) { - setConditions(controlSettings.conditionTree || []); - } + // control 설정도 로드 (전체 실행 조건) + if ( + (settings as any).control && + (settings as any).control.conditionTree && + Array.isArray((settings as any).control.conditionTree) + ) { + const conditionTree = (settings as any).control.conditionTree as ConditionNode[]; + setConditions( + conditionTree.map((condition) => ({ + ...condition, + operator: condition.operator || "=", // 기본값 보장 + })), + ); } } else if (connectionType === "external-call") { setExternalCallSettings({ diff --git a/frontend/components/dataflow/RelationshipListModal.tsx b/frontend/components/dataflow/RelationshipListModal.tsx index 16115674..6df6c17b 100644 --- a/frontend/components/dataflow/RelationshipListModal.tsx +++ b/frontend/components/dataflow/RelationshipListModal.tsx @@ -49,9 +49,15 @@ export const RelationshipListModal: React.FC = ({ } onSetSelectedColumns(newSelectedColumns); - // 🔥 수정: 데이터베이스에서 관계 설정 정보 로드 + // 🔥 수정: 관계 설정 정보 로드 (임시 관계 우선, 없으면 데이터베이스에서) let relationshipSettings = {}; - if (diagramId && diagramId > 0) { + + // 1. 먼저 임시 관계의 settings 사용 (메모리에 있는 데이터) + if (relationship.settings && Object.keys(relationship.settings).length > 0) { + relationshipSettings = relationship.settings; + } + // 2. 임시 settings가 없고 저장된 관계도인 경우 데이터베이스에서 로드 + else if (diagramId && diagramId > 0) { try { const jsonDiagram = await DataFlowAPI.getJsonDataFlowDiagramById(diagramId, companyCode); if (jsonDiagram && relationship.connectionType === "data-save") {