import React, { useState } from 'react'; import { Save, Key, Shield, MessageCircle, Globe, Check, Cpu, Zap, Plus, Trash2, Edit3, X, BarChart4, Newspaper, Scale, PlusCircle, MinusCircle } from 'lucide-react'; import { ApiSettings, AiConfig } from '../types'; import { InputGroup, ToggleButton } from '../components/CommonUI'; interface SettingsProps { settings: ApiSettings; onSave: (settings: ApiSettings) => void; } const Settings: React.FC = ({ settings, onSave }) => { const [formData, setFormData] = useState(settings); const [isSaved, setIsSaved] = useState(false); const [showAiModal, setShowAiModal] = useState(false); const [editingAi, setEditingAi] = useState | null>(null); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); onSave(formData); setIsSaved(true); setTimeout(() => setIsSaved(false), 3000); }; const toggleService = (field: keyof Pick) => { setFormData(prev => ({ ...prev, [field]: !prev[field] })); }; const handleAddAi = () => { setEditingAi({ id: 'ai_' + Date.now(), name: '', providerType: 'gemini', modelName: 'gemini-3-flash-preview', baseUrl: '' }); setShowAiModal(true); }; const handleSaveAi = () => { if (!editingAi?.name) return; const newConfigs = [...formData.aiConfigs]; const index = newConfigs.findIndex(c => c.id === editingAi.id); if (index > -1) { newConfigs[index] = editingAi as AiConfig; } else { newConfigs.push(editingAi as AiConfig); } setFormData({ ...formData, aiConfigs: newConfigs }); setShowAiModal(false); setEditingAi(null); }; const handleDeleteAi = (id: string) => { setFormData({ ...formData, aiConfigs: formData.aiConfigs.filter(c => c.id !== id) }); }; return (
{/* KIS API Section */}

KIS API 커넥터 설정

setFormData({...formData, appKey: v})} type="password" placeholder="App Key" /> setFormData({...formData, appSecret: v})} type="password" placeholder="Secret Key" />
setFormData({...formData, accountNumber: v})} placeholder="예: 50061234-01" />
{/* AI 분석 자동화 설정 섹션 */}

AI 분석 자동화 설정

각 분석 작업별 우선 순위 엔진 지정

{/* Telegram Notification Section */}

텔레그램 알림 봇 연동

체결 알림 및 상태 보고

toggleService('useTelegram')} />
{formData.useTelegram && (
setFormData({...formData, telegramToken: v})} placeholder="Bot API Token" /> setFormData({...formData, telegramChatId: v})} placeholder="Chat ID" />
)}
{/* Naver News API Section */}

네이버 뉴스 스크랩 연동

실시간 금융 뉴스 분석

toggleService('useNaverNews')} />
{formData.useNaverNews && (
setFormData({...formData, naverClientId: v})} placeholder="Naver Client ID" /> setFormData({...formData, naverClientSecret: v})} type="password" placeholder="Naver Client Secret" />
)}
로컬 데이터 보안 격리 저장 활성화됨
{/* AI Engine Modal */} {showAiModal && (

AI 엔진 프로파일러

setEditingAi({...editingAi, name: v})} placeholder="예: 구글 고성능 모델, Ollama Llama3" />
setEditingAi({...editingAi, modelName: v})} placeholder={editingAi?.providerType === 'gemini' ? 'gemini-3-flash-preview' : 'llama3'} /> {editingAi?.providerType === 'openai-compatible' && ( setEditingAi({...editingAi, baseUrl: v})} placeholder="http://localhost:11434/v1" /> )}
)}
); }; export default Settings;