+{JSON.stringify(
+ selectedColumns.reduce((obj, col) => {
+ const apiField = dbToApiFieldMapping[col] || col; // 매핑된 API 필드명 또는 원본 컬럼명
+ obj[apiField] = `{{${col}}}`;
+ return obj;
+ }, {} as Record),
+ null,
+ 2
+)}
+
+
+ {JSON.stringify(item, null, 2)}
+ + 💡 실제 URL: {toEndpoint}/{urlPathColumn ? `{${urlPathColumn}}` : '{ID}'} +
+ )} ++ PUT/DELETE 요청 시 URL 경로에 포함될 컬럼을 선택하세요. (예: USER_ID → /api/users/user123) +
+스케줄된 배치 작업을 관리하고 실행 상태를 모니터링합니다.
@@ -422,6 +442,61 @@ export default function BatchManagementPage() { + {/* 배치 타입 선택 모달 */} + {isBatchTypeModalOpen && ( +새로운 배치 매핑을 생성합니다.
++ 1단계: 커넥션을 선택하세요 → 2단계: 테이블을 선택하세요 → 3단계: 컬럼을 클릭해서 매핑하세요 +
++ FROM에서 컬럼을 선택한 후, 여기서 대상 컬럼을 클릭하면 매핑됩니다 +
+외부 REST API에서 데이터를 가져와 데이터베이스에 저장합니다.
+데이터베이스에서 데이터를 가져와 외부 REST API로 전송합니다.
++ {mapping.from_column_name} → {mapping.to_column_name} +
+ )} ++ 소스 테이블을 선택하면 컬럼 목록이 표시됩니다. +
+ )} ++ 대상 테이블을 선택하면 컬럼 목록이 표시됩니다. +
+ )} ++ API 필드: {mapping.from_column_name} → DB 컬럼: {mapping.to_column_name} +
++ DB 컬럼: {mapping.from_column_name} → API 필드: {mapping.to_column_name} +
+데이터베이스 간 배치 작업을 관리합니다.
++ {searchTerm ? "검색 결과가 없습니다." : "새로운 배치를 추가해보세요."} +
+ {!searchTerm && ( + + )} +{batch.description}
+ )} +테이블 간 데이터 관계를 시각적으로 설계하고 관리합니다
모든 페이지에서 업로드된 파일들을 관리합니다
+화면을 불러오는 중...
+화면을 불러오는 중...
{error || "요청하신 화면이 존재하지 않습니다."}
-+ {state.connectionType === "data_save" ? "데이터 저장" : "외부 호출"} 연결 설정 +
+{actionTypeDescriptions[actionType]}
} +⚠️ {actionType.toUpperCase()} 액션은 실행 조건이 필요합니다
+ )} +✅ INSERT 액션은 별도 조건 없이 모든 매핑된 데이터를 삽입합니다
+{type.description}
+우측 패널에서 REST API 설정을 구성하세요.
+매핑된 필드가 없습니다
+INSERT 액션이 있을 때 필드 매핑을 설정하세요
+아직 매핑된 필드가 없습니다.
+우측에서 연결을 설정해주세요.
++ {actionType.toUpperCase()} 액션의 실행 조건을 설정하세요 +
+매핑되지 않은 필드의 기본값 설정
++ 컬럼 매핑으로 모든 TO 테이블 필드가 처리되고 있어 별도의 기본값 설정이 필요하지 않습니다. +
+매핑되지 않은 필드의 기본값을 설정하세요
++ 컬럼 매핑으로 처리되지 않은 필드들만 여기서 설정됩니다 +
++ 현재 {getUnmappedToColumns().length}개 필드가 매핑되지 않음 +
++ INSERT 액션은 별도의 실행 조건이 필요하지 않습니다. 매핑된 모든 데이터가 새로운 레코드로 삽입됩니다. +
++ {!actionType ? "액션 타입을 선택해주세요" : "실행 조건을 추가해주세요"} +
+ )} ++ {connectionType === "data_save" + ? "데이터를 저장할 소스와 대상 데이터베이스를 선택하세요." + : "외부 호출을 위한 소스와 대상 연결을 선택하세요."} +
+이미 사용 중인 이름입니다.
} + {nameCheckStatus === "valid" &&사용 가능한 이름입니다.
} ++ 호스트: {fromConnection.host}:{fromConnection.port} +
+데이터베이스: {fromConnection.database}
++ 호스트: {toConnection.host}:{toConnection.port} +
+데이터베이스: {toConnection.database}
++ 이 전체 제어가 언제 실행될지 설정합니다. 조건을 설정하지 않으면 항상 실행됩니다. +
++ • 전체 제어의 트리거 조건을 설정합니다 +
+• 예: "상태가 '활성'이고 유형이 'A'인 경우에만 데이터 동기화 실행"
+• 조건을 설정하지 않으면 모든 경우에 실행됩니다
+제어 실행 조건을 설정하세요
+"조건 추가" 버튼을 클릭하여 시작하세요
+
+ 현재 제어 실행 조건이 설정되지 않았습니다.
+
+ 모든 경우에 제어가 실행됩니다.
+
• 외부 데이터베이스 연결에 문제가 있을 수 있습니다
+• 조건 없이 진행하면 항상 실행됩니다
+• 나중에 수동으로 조건을 추가할 수 있습니다
+제어 조건, 액션 그룹, 필드 매핑을 설정하세요
+{tabs.find((tab) => tab.id === activeTab)?.description}
+제어 조건이 없습니다
+조건을 추가하면 해당 조건이 충족될 때만 액션이 실행됩니다
++ REST API 호출을 통해 외부 시스템에 데이터를 전송하거나 알림을 보낼 수 있습니다. +
+연결된 데이터베이스에서 소스와 대상 테이블을 선택하세요.
+{fromTable.description}
} +{toTable.description}
} +{field.description}
} + + {/* 선택 상태 표시 */} + {isSelected && } +필드가 없습니다.
+테이블을 선택해주세요.
+