From 6ec51104c82eba0acaa7eea1131b8f327a05b259 Mon Sep 17 00:00:00 2001 From: YuanShiJiLoong <2450829984@qq.com> Date: Sun, 22 Feb 2026 19:27:42 +0900 Subject: [PATCH] feat: add rebuild all embeddings button for RAG initialization --- app/components/SettingsPanel.js | 38 +++++++++++++++++++++++++++++++++ app/lib/settings.js | 29 +++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/app/components/SettingsPanel.js b/app/components/SettingsPanel.js index f16da28..148cc70 100644 --- a/app/components/SettingsPanel.js +++ b/app/components/SettingsPanel.js @@ -17,6 +17,7 @@ import { getActiveWorkId, setActiveWorkId, getAllWorks, + rebuildAllEmbeddings, } from '../lib/settings'; import SettingsTree from './SettingsTree'; import { useI18n } from '../lib/useI18n'; @@ -486,6 +487,7 @@ function ApiConfigForm({ data, onChange }) { const [testStatus, setTestStatus] = useState(null); const [fetchedModels, setFetchedModels] = useState(null); const [fetchedEmbedModels, setFetchedEmbedModels] = useState(null); + const [rebuildStatus, setRebuildStatus] = useState(null); // null | 'loading' | {done, total, failed} const [savedProfiles, setSavedProfiles] = useState([]); const [profileName, setProfileName] = useState(''); const [showSaveInput, setShowSaveInput] = useState(false); @@ -557,6 +559,20 @@ function ApiConfigForm({ data, onChange }) { } catch { setFetchedEmbedModels(null); setTestStatus({ success: false, error: t('apiConfig.fetchEmbedModelsFailed') }); } }; + const handleRebuildEmbeddings = async () => { + setRebuildStatus({ done: 0, total: 0, failed: 0 }); + try { + const result = await rebuildAllEmbeddings((done, total, failed) => { + setRebuildStatus({ done, total, failed }); + }); + setRebuildStatus({ ...result, finished: true }); + setTimeout(() => setRebuildStatus(null), 5000); + } catch { + setRebuildStatus({ error: true }); + setTimeout(() => setRebuildStatus(null), 3000); + } + }; + const currentProvider = PROVIDERS.find(p => p.key === data.provider) || PROVIDERS[7]; const isCustom = data.provider === 'custom'; @@ -689,6 +705,28 @@ function ApiConfigForm({ data, onChange }) { > )} + + {/* 重建向量按钮 */} +