import React, { useState } from 'react'; import { useApp } from '../../context/AppContext'; import { Cpu, Check, ArrowUp, ArrowDown, X, Plus, Sparkles, Save, Shield } from 'lucide-react'; import confetti from 'canvas-confetti'; const RENK = { blue: 'bg-blue-50 text-blue-700 border-blue-200', indigo: 'bg-indigo-50 text-indigo-700 border-indigo-200', amber: 'bg-amber-50 text-amber-700 border-amber-200', slate: 'bg-slate-100 text-slate-700 border-slate-200', emerald: 'bg-emerald-50 text-emerald-700 border-emerald-200', orange: 'bg-orange-50 text-orange-700 border-orange-200' }; const SIRA_ETIKET = ['Birincil (Primary)', '2. Yedek (Fallback)', '3. Yedek (Fallback)', '4. Yedek', '5. Yedek', '6. Yedek']; export const AiModelSettings = () => { const { AI_MODEL_CATALOG, aiModelConfig, setAiModelConfig, getModelById } = useApp(); const [saved, setSaved] = useState(false); const chain = aiModelConfig.chain; const available = AI_MODEL_CATALOG.filter(m => !chain.includes(m.id)); const update = (newChain) => { setAiModelConfig({ ...aiModelConfig, chain: newChain }); setSaved(false); }; const move = (idx, dir) => { const j = idx + dir; if (j < 0 || j >= chain.length) return; const next = [...chain]; [next[idx], next[j]] = [next[j], next[idx]]; update(next); }; const setPrimary = (idx) => { if (idx === 0) return; const next = [...chain]; const [item] = next.splice(idx, 1); next.unshift(item); update(next); }; const remove = (idx) => { if (chain.length <= 1) return; // en az bir model kalmalı update(chain.filter((_, i) => i !== idx)); }; const add = (id) => update([...chain, id]); const handleSave = () => { // aiModelConfig zaten localStorage'a otomatik yazılıyor; buton kullanıcı geri bildirimi için setSaved(true); confetti({ particleCount: 60, spread: 70 }); setTimeout(() => setSaved(false), 3500); }; return (
Şartname analizi ve AI özelliklerinde kullanılacak modeli ve yedek (fallback) sırasını belirleyin.
Birincil model yanıt vermezse sıradaki yedeğe otomatik geçilir.
Zincire eklemek için bir modele tıklayın.
Seçimler tarayıcınızda saklanır ve tüm AI özelliklerinde (şartname analizi, fiyat/risk değerlendirmesi) kullanılır.