"use client"; import React from "react"; import { ScrollArea } from "@/components/ui/scroll-area"; import { Separator } from "@/components/ui/separator"; // 타입 import import { LeftPanelProps } from "../types/redesigned"; // 컴포넌트 import import ConnectionTypeSelector from "./ConnectionTypeSelector"; import MappingDetailList from "./MappingDetailList"; import ActionSummaryPanel from "./ActionSummaryPanel"; /** * 📋 좌측 패널 (30% 너비) * - 연결 타입 선택 * - 매핑 정보 모니터링 * - 상세 설정 목록 * - 액션 버튼들 */ const LeftPanel: React.FC = ({ state, actions }) => { return (
{/* 0단계: 연결 타입 선택 */}

0단계: 연결 타입

{/* 외부호출이 아닐 때만 매핑과 액션 설정 표시 */} {state.connectionType !== "external_call" && ( <> {/* 매핑 상세 목록 */} {(() => { // 액션 그룹에서 모든 매핑 수집 const allMappings = state.actionGroups.flatMap((group) => group.actions.flatMap((action) => action.fieldMappings || []), ); // 기존 fieldMappings와 병합 (중복 제거) const combinedMappings = [...state.fieldMappings, ...allMappings]; const uniqueMappings = combinedMappings.filter( (mapping, index, arr) => arr.findIndex((m) => m.id === mapping.id) === index, ); console.log("🔍 LeftPanel - 매핑 데이터 수집:", { stateFieldMappings: state.fieldMappings, actionGroupMappings: allMappings, combinedMappings: uniqueMappings, }); return ( uniqueMappings.length > 0 && ( <>

매핑 상세 목록

{ // TODO: 선택된 매핑 상태 업데이트 }} onUpdateMapping={actions.updateMapping} onDeleteMapping={actions.deleteMapping} />
) ); })()} {/* 액션 설정 요약 */}

액션 설정

)} {/* 외부호출일 때는 간단한 설명만 표시 */} {state.connectionType === "external_call" && ( <>

외부 호출 모드

우측 패널에서 REST API 설정을 구성하세요.

)}
); }; export default LeftPanel;