From 9c4f1320143a4b861ae92f087cd9a5ee871543b4 Mon Sep 17 00:00:00 2001 From: daunle Date: Mon, 29 Sep 2025 17:08:28 +0900 Subject: [PATCH] fix result page delete --- .../main/mlSection/components/MLTrainPage.tsx | 267 ++++++++---------- 1 file changed, 113 insertions(+), 154 deletions(-) diff --git a/src/app/main/mlSection/components/MLTrainPage.tsx b/src/app/main/mlSection/components/MLTrainPage.tsx index 6d8ccbec..a8787c46 100644 --- a/src/app/main/mlSection/components/MLTrainPage.tsx +++ b/src/app/main/mlSection/components/MLTrainPage.tsx @@ -1,7 +1,7 @@ 'use client'; import React, { useState } from 'react'; -import { FaCog, FaDatabase, FaBrain, FaChartLine } from 'react-icons/fa'; +import { FaCog, FaDatabase, FaBrain } from 'react-icons/fa'; import BasicCategory from './BasicCategory'; import DataCategory from './DataCategory'; import ModelCategory from './ModelCategory'; @@ -55,62 +55,13 @@ interface MLConfig { } -interface ModelResult { - run_id: string; - algorithm: string; - metrics: { - test: Record; - validation?: Record; - cross_validation?: { - scores: number[]; - mean: number; - std: number; - }; - }; - training_duration: number; - hpo_used?: boolean; - hpo_results?: any; - final_params?: Record; -} - -interface TrainResult { - results: ModelResult[]; - best: { - run_id: string; - algorithm: string; - metrics: { - test: Record; - validation?: Record; - }; - hpo_used?: boolean; - }; - runs_manifest_uri: string; - registry: { - model_name: string; - production_version: string; - }; - training_duration: number; - feature_names: string[]; - training_timestamp: string; - hpo_summary?: { - enabled: boolean; - models_optimized: number; - config: HyperparameterConfig | null; - }; - label_encoding?: { - used: boolean; - original_classes?: string[]; - label_mapping?: Record; - }; -} - -type TabKey = 'basic' | 'data' | 'model' | 'results'; +type TabKey = 'basic' | 'data' | 'model'; const MLTrainPage: React.FC = () => { const [activeTab, setActiveTab] = useState('basic'); const [isTraining, setIsTraining] = useState(false); - const [trainResult, setTrainResult] = useState(null); const [error, setError] = useState(null); + const [infoMessage, setInfoMessage] = useState(null); const [currentTaskId, setCurrentTaskId] = useState(null); const [trainingMode, setTrainingMode] = useState<'sync' | 'async'>('sync'); @@ -234,6 +185,7 @@ const MLTrainPage: React.FC = () => { setIsTraining(true); setError(null); + setInfoMessage(null); setCurrentTaskId(null); try { @@ -244,8 +196,8 @@ const MLTrainPage: React.FC = () => { const result = await mlAPI.trainSync(trainData); console.log('Training completed:', result); - setTrainResult(result); - setActiveTab('results'); + // 결과 탭 제거로 변경: 완료 안내 메시지 표시 + setInfoMessage('완료되었습니다. 모니터링 페이지에서 결과를 확인해주세요'); } catch (err: unknown) { const errorMessage = mlUtils.formatError(err); console.error('Training failed:', err); @@ -265,6 +217,7 @@ const MLTrainPage: React.FC = () => { setIsTraining(true); setError(null); + setInfoMessage(null); setCurrentTaskId(null); try { @@ -284,8 +237,8 @@ const MLTrainPage: React.FC = () => { const status = await mlAPI.getAsyncTaskStatus(taskId); if (status.status === 'completed' && status.result) { - setTrainResult(status.result); - setActiveTab('results'); + // 결과 탭 제거로 변경: 완료 안내 메시지 표시 + setInfoMessage('완료되었습니다. 모니터링 페이지에서 결과를 확인해주세요'); setIsTraining(false); setCurrentTaskId(null); return; @@ -334,7 +287,6 @@ const MLTrainPage: React.FC = () => { { key: 'model' as const, label: '모델 설정', icon: FaBrain }, ]; - // 결과가 있으면 탭에 추가 const tabs = baseTabs; return ( @@ -387,108 +339,115 @@ const MLTrainPage: React.FC = () => { /> )} - {activeTab !== 'results' && ( -
-
- {error && ( -
- {error} -
- )} - - {currentTaskId && ( -
-
- 비동기 학습 진행 중... (Task ID: {currentTaskId}) -
- )} -
+
+
+ {error && ( +
+ {error} +
+ )} + {infoMessage && ( +
+ {infoMessage} +
+ )} -
- {/* 학습 모드 선택 */} - {!isTraining && ( -
- - - -
- )} - - {/* 학습 버튼들 */} - {!currentTaskId ? ( - - ) : ( - - )} -
+ {currentTaskId && ( +
+
+ 비동기 학습 진행 중... (Task ID: {currentTaskId}) +
+ )}
- )} + +
+ {/* 학습 모드 선택 */} + {!isTraining && ( +
+ + + +
+ )} + + {/* 학습 버튼들 */} + {!currentTaskId ? ( + + ) : ( + + )} +
+
{/* HPO 활성화 시 추가 안내 */} - {config.hpo_config?.enable_hpo && activeTab !== 'results' && ( + {config.hpo_config?.enable_hpo && (