Skip to content

Commit 0e36765

Browse files
authored
refresh plugins (#6099)
* doc * refresh plugins * perf: loading in install * background index
1 parent 7bfd02a commit 0e36765

File tree

5 files changed

+26
-20
lines changed

5 files changed

+26
-20
lines changed

document/content/docs/upgrading/4-14/4144.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ curl --location --request POST 'https://{{host}}/api/admin/initv4144' \
2020
--header 'Content-Type: application/json'
2121
```
2222

23-
将 4.14.3 中,遗留的 Dataset/local 接口上传的文件,也迁移到 S3 中。
23+
1. 将 4.14.3 中,遗留的 Dataset/local 接口上传的文件,也迁移到 S3 中。
24+
2. 全量计算旧的 chat 中的反馈,增加 flags 值便于筛选。该函数执行较慢,所以放到异步执行,接口不会返回结果,请关注日志中是否打印:Migration feedback completed!
2425

2526
## 🚀 新增内容
2627

document/data/doc-last-modified.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@
9797
"document/content/docs/protocol/index.mdx": "2025-07-30T15:38:30+08:00",
9898
"document/content/docs/protocol/open-source.en.mdx": "2025-08-05T23:20:39+08:00",
9999
"document/content/docs/protocol/open-source.mdx": "2025-08-05T23:20:39+08:00",
100-
"document/content/docs/protocol/privacy.en.mdx": "2025-12-12T21:30:11+08:00",
101-
"document/content/docs/protocol/privacy.mdx": "2025-12-12T21:30:11+08:00",
102-
"document/content/docs/protocol/terms.en.mdx": "2025-12-12T21:30:11+08:00",
103-
"document/content/docs/protocol/terms.mdx": "2025-12-12T21:30:11+08:00",
100+
"document/content/docs/protocol/privacy.en.mdx": "2025-12-15T23:36:54+08:00",
101+
"document/content/docs/protocol/privacy.mdx": "2025-12-15T23:36:54+08:00",
102+
"document/content/docs/protocol/terms.en.mdx": "2025-12-15T23:36:54+08:00",
103+
"document/content/docs/protocol/terms.mdx": "2025-12-15T23:36:54+08:00",
104104
"document/content/docs/toc.en.mdx": "2025-08-04T13:42:36+08:00",
105105
"document/content/docs/toc.mdx": "2025-12-09T23:33:32+08:00",
106106
"document/content/docs/upgrading/4-10/4100.mdx": "2025-08-02T19:38:37+08:00",
@@ -114,12 +114,12 @@
114114
"document/content/docs/upgrading/4-12/4124.mdx": "2025-09-17T22:29:56+08:00",
115115
"document/content/docs/upgrading/4-13/4130.mdx": "2025-11-04T15:06:39+08:00",
116116
"document/content/docs/upgrading/4-13/4131.mdx": "2025-09-30T15:47:06+08:00",
117-
"document/content/docs/upgrading/4-13/4132.mdx": "2025-10-21T11:46:53+08:00",
117+
"document/content/docs/upgrading/4-13/4132.mdx": "2025-12-15T11:50:00+08:00",
118118
"document/content/docs/upgrading/4-14/4140.mdx": "2025-11-06T15:43:00+08:00",
119119
"document/content/docs/upgrading/4-14/4141.mdx": "2025-11-19T10:15:27+08:00",
120120
"document/content/docs/upgrading/4-14/4142.mdx": "2025-11-18T19:27:14+08:00",
121121
"document/content/docs/upgrading/4-14/4143.mdx": "2025-11-26T20:52:05+08:00",
122-
"document/content/docs/upgrading/4-14/4144.mdx": "2025-12-15T15:09:13+08:00",
122+
"document/content/docs/upgrading/4-14/4144.mdx": "2025-12-15T23:36:54+08:00",
123123
"document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00",
124124
"document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00",
125125
"document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00",

projects/app/src/pages/api/admin/initFeedbackFlags.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ async function createTemporaryIndexes(): Promise<void> {
3636
{ userGoodFeedback: 1, teamId: 1, appId: 1, chatId: 1 },
3737
{
3838
name: 'temp_feedback_migration_good',
39-
partialFilterExpression: { userGoodFeedback: { $exists: true } }
39+
partialFilterExpression: { userGoodFeedback: { $exists: true } },
40+
background: true
4041
} as any
4142
),
4243
MongoChatItem.collection.createIndex({ userBadFeedback: 1, teamId: 1, appId: 1, chatId: 1 }, {
4344
name: 'temp_feedback_migration_bad',
44-
partialFilterExpression: { userBadFeedback: { $exists: true } }
45+
partialFilterExpression: { userBadFeedback: { $exists: true } },
46+
background: true
4547
} as any)
4648
]);
4749

@@ -203,7 +205,7 @@ export async function migrateFeedbackFlags() {
203205
const durationMinutes = (duration / 1000 / 60).toFixed(2);
204206

205207
addLog.info('========================================');
206-
addLog.info('Migration completed!');
208+
addLog.info('Migration feedback completed!');
207209
addLog.info(`Total: ${chats.length.toLocaleString()}`);
208210
addLog.info(`Succeeded: ${succeeded.toLocaleString()}`);
209211
addLog.info(`Failed: ${failed.toLocaleString()}`);

projects/app/src/pages/api/admin/initv4144.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -979,7 +979,7 @@ async function handler(req: NextApiRequest, _res: NextApiResponse) {
979979
addLog.info(`[Migration ${batchId}] =======================================`);
980980

981981
// 重新统计每一个 chat 的反馈情况
982-
await migrateFeedbackFlags();
982+
migrateFeedbackFlags();
983983

984984
return {
985985
batchId,

projects/app/src/pages/config/tool/marketplace.tsx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import MyIcon from '@fastgpt/web/components/common/Icon';
88
import MyBox from '@fastgpt/web/components/common/MyBox';
99
import MyIconButton from '@fastgpt/web/components/common/Icon/button';
1010
import MyMenu from '@fastgpt/web/components/common/MyMenu';
11-
import { useState, useMemo, useRef, useEffect, useCallback, useReducer } from 'react';
11+
import { useState, useMemo, useRef, useEffect, useCallback } from 'react';
1212
import { useDebounce, useMount, useSet } from 'ahooks';
1313
import ToolCard, { type ToolCardItemType } from '@fastgpt/web/components/core/plugin/tool/ToolCard';
1414
import ToolTagFilterBox from '@fastgpt/web/components/core/plugin/tool/TagFilterBox';
@@ -153,18 +153,20 @@ const ToolkitMarketplace = ({ marketplaceUrl }: { marketplaceUrl: string }) => {
153153
// Controler
154154
const { runAsync: handleInstallTool } = useRequest2(
155155
async (tool: ToolCardItemType) => {
156-
const downloadUrl = await getMarketplaceDownloadURL(tool.id);
157-
if (!downloadUrl) return;
158-
159156
const existingPromise = operatingPromisesRef.current.get(tool.id);
160157
if (existingPromise) {
161158
await existingPromise;
162159
return;
163160
}
164161

165-
const operationPromise = (async () => {
166-
installingOrDeletingToolIdsDispatch.add(tool.id);
162+
installingOrDeletingToolIdsDispatch.add(tool.id);
163+
const downloadUrl = await getMarketplaceDownloadURL(tool.id);
164+
if (!downloadUrl) {
165+
installingOrDeletingToolIdsDispatch.remove(tool.id);
166+
return;
167+
}
167168

169+
const operationPromise = (async () => {
168170
try {
169171
await intallPluginWithUrl({
170172
downloadUrls: [downloadUrl]
@@ -173,10 +175,10 @@ const ToolkitMarketplace = ({ marketplaceUrl }: { marketplaceUrl: string }) => {
173175
if (selectedTool?.id === tool.id) {
174176
setSelectedTool((prev) => (prev ? { ...prev, status: 3 } : null));
175177
}
178+
await refreshInstalledPlugins();
176179
} finally {
177180
installingOrDeletingToolIdsDispatch.remove(tool.id);
178181
operatingPromisesRef.current.delete(tool.id);
179-
await refreshInstalledPlugins();
180182
}
181183
})();
182184
operatingPromisesRef.current.set(tool.id, operationPromise);
@@ -213,10 +215,10 @@ const ToolkitMarketplace = ({ marketplaceUrl }: { marketplaceUrl: string }) => {
213215
if (selectedTool?.id === tool.id) {
214216
setSelectedTool((prev) => (prev ? { ...prev, status: 3 } : null));
215217
}
218+
await refreshInstalledPlugins();
216219
} finally {
217220
updatingToolIdsDispatch.remove(tool.id);
218221
operatingPromisesRef.current.delete(tool.id);
219-
await refreshInstalledPlugins();
220222
}
221223
})();
222224

@@ -243,10 +245,10 @@ const ToolkitMarketplace = ({ marketplaceUrl }: { marketplaceUrl: string }) => {
243245
if (selectedTool?.id === tool.id) {
244246
setSelectedTool((prev) => (prev ? { ...prev, status: 1 } : null));
245247
}
248+
await refreshInstalledPlugins();
246249
} finally {
247250
installingOrDeletingToolIdsDispatch.remove(tool.id);
248251
operatingPromisesRef.current.delete(tool.id);
249-
await refreshInstalledPlugins();
250252
}
251253
})();
252254
operatingPromisesRef.current.set(tool.id, operationPromise);
@@ -374,6 +376,7 @@ const ToolkitMarketplace = ({ marketplaceUrl }: { marketplaceUrl: string }) => {
374376
onClick={() => router.push('/config/tool')}
375377
position={'absolute'}
376378
top={4}
379+
zIndex={1000}
377380
{...(showCompactSearch ? { right: 4 } : { left: 4 })}
378381
/>
379382
{!showCompactSearch && (

0 commit comments

Comments
 (0)