ConnectionSetupModal 및 RelationshipListModal에서 설정 로드 로직 개선: data-save 연결의 다양한 구조 지원 및 임시 관계 우선 로드 추가

This commit is contained in:
hyeonsu 2025-09-16 18:22:06 +09:00
parent e572374116
commit 5fc7dd095b
2 changed files with 35 additions and 11 deletions

View File

@ -84,9 +84,20 @@ export const ConnectionSetupModal: React.FC<ConnectionSetupModalProps> = ({
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<string, unknown>[] = [];
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<string, unknown>[];
}
setDataSaveSettings({
actions: actionsData.map((action: Record<string, unknown>) => ({
id: (action.id as string) || `action-${Date.now()}`,
@ -118,12 +129,19 @@ export const ConnectionSetupModal: React.FC<ConnectionSetupModalProps> = ({
})),
});
// 전체 실행 조건 로드
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({

View File

@ -49,9 +49,15 @@ export const RelationshipListModal: React.FC<RelationshipListModalProps> = ({
}
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") {