import React, { useEffect, useState } from 'react'; import { backendApi } from '../../services/apiClient'; import { Bot, Loader2 } from 'lucide-react'; export const AISection: React.FC = () => { const [enabled, setEnabled] = useState(false); const [url, setUrl] = useState(''); const [apiKey, setApiKey] = useState(''); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); useEffect(() => { backendApi .getAIChatSettings() .then((data) => { setEnabled(data.enabled !== false); setUrl(data.url || ''); setApiKey(data.apiKey || ''); }) .catch(() => { setEnabled(false); setUrl(''); setApiKey(''); }) .finally(() => setLoading(false)); }, []); const handleSave = async () => { setSaving(true); try { await backendApi.saveAIChatSettings({ enabled, url: url.trim(), apiKey: apiKey.trim(), }); window.dispatchEvent(new CustomEvent('mkd-ai-status-changed')); alert('Настройки ИИ сохранены'); } catch (e: unknown) { const msg = e && typeof e === 'object' && 'message' in e ? String((e as { message: string }).message) : 'Ошибка сохранения'; alert(msg); } finally { setSaving(false); } }; if (loading) { return (
); } return (

ИИ-помощник

Включение чата с ИИ и настройка адреса API (OpenAI-совместимый) и токена

{enabled ? 'ИИ включён' : 'ИИ выключен'}
setUrl(e.target.value)} placeholder="https://ai.iieasy.ru/v1/chat/completions" className="w-full rounded-xl border border-slate-200 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-primary-500" />

URL эндпоинта Chat Completions (OpenAI-совместимый)

setApiKey(e.target.value)} placeholder="Опционально, если API требует авторизацию" className="w-full rounded-xl border border-slate-200 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-primary-500" autoComplete="off" />
); };