-
-
- {fromColumns.map((column) => (
-
- {
- if (e.target.checked) {
- setSelectedColumns([...selectedColumns, column.column_name]);
- } else {
- setSelectedColumns(selectedColumns.filter((col) => col !== column.column_name));
- }
- }}
- className="rounded border-gray-300"
- />
-
-
- ))}
-
-
- {/* 선택된 컬럼 개수 표시 */}
-
- 선택된 컬럼: {selectedColumns.length}개 / 전체: {fromColumns.length}개
-
-
- {/* 빠른 매핑 버튼들 */}
- {selectedColumns.length > 0 && toApiFields.length > 0 && (
-
-
빠른 매핑
-
-
+ )}
+
+
+
+ {/* TO 설정 */}
+
+
+
+ {batchType === "restapi-to-db" ? (
+ <>
+
+ TO: 데이터베이스 (대상)
+ >
+ ) : (
+ <>
+
+ TO: REST API (대상)
+ >
+ )}
+
+
+
+ {/* DB 설정 (REST API → DB) - 단계적 활성화 */}
+ {batchType === "restapi-to-db" && (
+
+ {/* 1. 커넥션 선택 - 항상 활성화 */}
+
+
+
+
+
+ {/* 2. 테이블 선택 - 커넥션 선택 후 활성화 */}
+
+
+
+
+
+ {/* 3. 저장 모드 - 테이블 선택 후 활성화 */}
+
+
+
+
+ className="h-4 w-4"
+ disabled={!toTable}
+ />
+
INSERT (새 데이터 추가)
+
+
+
+
+
+ {/* 4. 충돌 기준 컬럼 - UPSERT 선택 후 활성화 */}
+
+
+
+
+ 이 컬럼 값이 같으면 UPDATE, 없으면 INSERT 합니다. (예: device_serial_number)
+
+
+
+ )}
+
+ {/* REST API 설정 (DB → REST API) */}
+ {batchType === "db-to-restapi" && (
+
+ {/* API 서버 URL */}
+
+
+ setToApiUrl(e.target.value)}
+ placeholder="https://api.example.com"
+ />
+
+
+ {/* API 키 */}
+
+
+ setToApiKey(e.target.value)}
+ placeholder="ak_your_api_key_here"
+ />
+
+
+ {/* 엔드포인트 */}
+
+
+
setToEndpoint(e.target.value)}
+ placeholder="/api/users"
+ />
+ {(toApiMethod === "PUT" || toApiMethod === "DELETE") && (
+
+ 실제 URL: {toEndpoint}/{urlPathColumn ? `{${urlPathColumn}}` : "{ID}"}
+
)}
- )}
-
+
+ {/* HTTP 메서드 */}
+
+
+
+
+
+ {/* URL 경로 파라미터 설정 (PUT/DELETE용) */}
+ {(toApiMethod === "PUT" || toApiMethod === "DELETE") && (
+
+
+
+
+ PUT/DELETE 요청 시 URL 경로에 포함될 컬럼을 선택하세요. (예: USER_ID → /api/users/user123)
+
+
+ )}
+
+ {/* TO API 미리보기 버튼 */}
+
+
+
+ API 필드 미리보기
+
+
+
+ {/* TO API 필드 표시 */}
+ {toApiFields.length > 0 && (
+
+
+ API 필드 목록 ({toApiFields.length}개)
+
+
+ {toApiFields.map((field) => (
+
+ {field}
+
+ ))}
+
+
+ )}
+
+ {/* Request Body 템플릿 */}
+ {(toApiMethod === "POST" || toApiMethod === "PUT") && (
+
+
+
+ )}
+
+ {/* API 호출 정보 */}
+ {toApiUrl && toApiKey && toEndpoint && (
+
+
API 호출 정보
+
+ {toApiMethod} {toApiUrl}
+ {toEndpoint}
+
+
Headers: X-API-Key: {toApiKey.substring(0, 10)}...
+ {toApiBody && (
+
Body: {toApiBody.substring(0, 50)}...
+ )}
+
+ )}
+
+ )}
+
+
+