Skip to content

Commit 5800032

Browse files
c121914yuFinleyGeCopilotnewfish-cmykxqvvu
authored
feature: V4.14.3 (#5970)
* feat(marketplace): update plugin/ download count statistic (#5957) * feat: download count * feat: update ui * fix: ui * chore: update sdk verison * chore: update .env.template * chore: adjust * chore: remove console.log * chore: adjust * Update projects/marketplace/src/pages/index.tsx Co-authored-by: Copilot <[email protected]> * Update projects/marketplace/src/pages/index.tsx Co-authored-by: Copilot <[email protected]> * Update projects/app/src/pages/config/tool/marketplace.tsx Co-authored-by: Copilot <[email protected]> * fix: update refresh; feat: marketplace download count per hour --------- Co-authored-by: Copilot <[email protected]> * download * marketplace code * fix: ui (#5963) * feat: support dataset and files as global variables (#5961) * json & dataset * file * fix file var * fix * fix init * remove * perf: file vars * fix: file uploading errors (#5969) * fix: file uploading errors * fix build * perf: fileselector ux * feat: integrate S3 for dataset with compatibility (#5941) * fix: text split * remove test * feat: integrate S3 for dataset with compatibility * fix: delay s3 files delete timing * fix: remove imageKeys * fix: remove parsed images' TTL * fix: improve codes by pr comments --------- Co-authored-by: archer <[email protected]> * remove log * perf: request limit * chore: s3 migration script (#5971) * test * perf: s3 code * fix: migration script (#5972) * perf: s3 move object * wip: fix s3 bugs (#5976) * fix: incorrect replace origin logic (#5978) * fix: add downloadURL (#5980) * perf: file variable ttl & quick create dataset with temp s3 bucket (#5973) * perf: file variable ttl & quick create dataset with temp s3 bucket * fix * plugin & form input variables (#5979) * plugin & form input variables * fix * docs: 4143.mdx (#5981) * doc: update 4143.mdx (#5982) * fix form input file ttl (#5983) * trans file type (#5986) * trans file type * fix * fix: S3 script early return (#5985) * fix: S3 script typeof * fix: truncate large filename to fit S3 name * perf(permission): add a schema verification for resource permission, tmbId, groupId, orgId should be set at least one of them (#5987) * fix: version & typo (#5988) * fix-v4.14.3 (#5991) * fix: empty alt make replace JWT failed & incorrect image dataset preview url (#5989) * fix: empty alt make replace JWT failed & incorrect image dataset preview url * fix: s3 files recovery script * fix: incorrect chat external url parsing (#5993) --------- Co-authored-by: Finley Ge <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: heheer <[email protected]> Co-authored-by: Roy <[email protected]>
1 parent 91156f1 commit 5800032

File tree

169 files changed

+6246
-2275
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

169 files changed

+6246
-2275
lines changed
Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,46 @@
11
---
2-
title: 'V4.14.3(进行中)'
3-
description: 'FastGPT V4.14.2 更新说明'
2+
title: 'V4.14.3进行中'
3+
description: 'FastGPT V4.14.3 更新说明'
44
---
55

66

7+
## 更新指南
8+
9+
### 1. 更新镜像:
10+
11+
- 更新 FastGPT 镜像tag: v4.14.3
12+
- 更新 FastGPT 商业版镜像tag: v4.14.3
13+
- 更新 fastgpt-plugin 镜像 tag: v0.3.3
14+
- mcp_server 无需更新
15+
- Sandbox 无需更新
16+
- AIProxy 无需更新
17+
18+
### 2. 执行升级脚本
19+
20+
从任意终端,发起 1 个 HTTP 请求。其中 `{{rootkey}}` 替换成环境变量里的 `rootkey``{{host}}` 替换成**FastGPT 域名**
21+
22+
```bash
23+
curl --location --request POST 'https://{{host}}/api/admin/initv4143' \
24+
--header 'rootkey: {{rootkey}}' \
25+
--header 'Content-Type: application/json'
26+
```
27+
28+
会将原系统 MongoDB 的 GridFS 中的所有知识库文件迁移到 S3 中,包含文本数据集和图片数据集,但不包括文档(如 .docx)里解析出来的图片。
29+
730
## 🚀 新增内容
831

32+
1. 知识库文件迁移至 S3(全部使用文件的地方均已迁移)。
33+
2. 全局变量支持文件上传。
34+
3. 表单输入节点支持密码、开关、时间点、时间范围、文件上传、对话模型选择。
35+
4. 插件输入支持多选、时间点、时间范围、内部变量。
36+
5. 系统插件,插件市场中会提示是否有新版本,并提供更新按键。
37+
6. 工作流运行 QPM 限制。
938

1039
## ⚙️ 优化
1140

41+
1. 工作流工具,文件上传输入 UX 优化。
1242

1343
## 🐛 修复
1444

15-
16-
## 插件
45+
1. 工作流调试预览窗口,重新渲染导致输入丢失。
46+
2. S3 服务与主服务相同 Origin 的域名会导致对 S3 的文件请求 URL 被错误替换,产生 404 报错。

document/data/doc-last-modified.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@
101101
"document/content/docs/protocol/terms.en.mdx": "2025-08-03T22:37:45+08:00",
102102
"document/content/docs/protocol/terms.mdx": "2025-08-03T22:37:45+08:00",
103103
"document/content/docs/toc.en.mdx": "2025-08-04T13:42:36+08:00",
104-
"document/content/docs/toc.mdx": "2025-11-14T13:21:17+08:00",
104+
"document/content/docs/toc.mdx": "2025-11-18T19:27:14+08:00",
105105
"document/content/docs/upgrading/4-10/4100.mdx": "2025-08-02T19:38:37+08:00",
106106
"document/content/docs/upgrading/4-10/4101.mdx": "2025-09-08T20:07:20+08:00",
107107
"document/content/docs/upgrading/4-11/4110.mdx": "2025-08-05T23:20:39+08:00",
@@ -115,8 +115,9 @@
115115
"document/content/docs/upgrading/4-13/4131.mdx": "2025-09-30T15:47:06+08:00",
116116
"document/content/docs/upgrading/4-13/4132.mdx": "2025-10-21T11:46:53+08:00",
117117
"document/content/docs/upgrading/4-14/4140.mdx": "2025-11-06T15:43:00+08:00",
118-
"document/content/docs/upgrading/4-14/4141.mdx": "2025-11-12T12:19:02+08:00",
119-
"document/content/docs/upgrading/4-14/4142.mdx": "2025-11-18T18:16:09+08:00",
118+
"document/content/docs/upgrading/4-14/4141.mdx": "2025-11-19T10:15:27+08:00",
119+
"document/content/docs/upgrading/4-14/4142.mdx": "2025-11-18T19:27:14+08:00",
120+
"document/content/docs/upgrading/4-14/4143.mdx": "2025-11-25T17:00:39+08:00",
120121
"document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00",
121122
"document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00",
122123
"document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00",

packages/global/common/file/image/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ export const FolderIcon = 'file/fill/folder';
44
export const FolderImgUrl = '/imgs/files/folder.svg';
55
export const HttpPluginImgUrl = '/imgs/app/httpPluginFill.svg';
66
export const HttpImgUrl = '/imgs/workflow/http.png';
7+
export const TempFileURL = '/api/file/temp';

packages/global/core/dataset/training/type.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ export type PushDataToTrainingQueueProps = {
99

1010
data: PushDatasetDataChunkProps[];
1111
mode?: TrainingModeEnum;
12-
data: PushDatasetDataChunkProps[];
1312

1413
agentModel: string;
1514
vectorModel: string;

packages/global/core/dataset/type.d.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ export type DatasetCollectionSchemaType = ChunkSettingsType & {
118118

119119
rawTextLength?: number;
120120
hashRawText?: string;
121+
121122
metadata?: {
122123
webPageSelector?: string;
123124
relatedImgId?: string; // The id of the associated image collections
@@ -250,7 +251,10 @@ export type TagUsageType = {
250251
export type DatasetCollectionItemType = CollectionWithDatasetType & {
251252
sourceName: string;
252253
sourceId?: string;
253-
file?: DatasetFileSchema;
254+
file?: {
255+
filename?: string;
256+
contentLength?: number;
257+
};
254258
permission: DatasetPermission;
255259
indexAmount: number;
256260
errorCount?: number;
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { ObjectIdSchema } from '../../../common/type/mongo';
2+
import z from 'zod';
3+
4+
export const PresignDatasetFileGetUrlSchema = z.union([
5+
z.object({
6+
key: z
7+
.string()
8+
.nonempty()
9+
.refine((key) => key.startsWith('dataset/'), {
10+
message: 'Invalid key format: must start with "dataset/"'
11+
})
12+
.transform((k) => decodeURIComponent(k)),
13+
preview: z.boolean().optional()
14+
}),
15+
z.object({
16+
collectionId: ObjectIdSchema
17+
// datasetId: ObjectIdSchema
18+
})
19+
]);
20+
export type PresignDatasetFileGetUrlParams = z.infer<typeof PresignDatasetFileGetUrlSchema>;
21+
22+
export const PresignDatasetFilePostUrlSchema = z.object({
23+
filename: z.string().min(1),
24+
datasetId: ObjectIdSchema
25+
});
26+
export type PresignDatasetFilePostUrlParams = z.infer<typeof PresignDatasetFilePostUrlSchema>;
27+
28+
export const ShortPreviewLinkSchema = z.object({
29+
k: z
30+
.string()
31+
.nonempty()
32+
.transform((k) => `chat:temp_file:${decodeURIComponent(k)}`)
33+
});
34+
export type ShortPreviewLinkParams = z.infer<typeof ShortPreviewLinkSchema>;

packages/global/core/workflow/constants.ts

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,6 @@ export enum VariableInputEnum {
319319
input = 'input',
320320
textarea = 'textarea',
321321
numberInput = 'numberInput',
322-
JSONEditor = 'JSONEditor',
323322
select = 'select',
324323
multipleSelect = 'multipleSelect',
325324
timePointSelect = 'timePointSelect',
@@ -363,12 +362,6 @@ export const variableConfigs: VariableConfigType[][] = [
363362
value: VariableInputEnum.numberInput,
364363
defaultValueType: WorkflowIOValueTypeEnum.number
365364
},
366-
// {
367-
// icon: 'core/workflow/inputType/jsonEditor',
368-
// label: i18nT('common:core.workflow.inputType.jsonEditor'),
369-
// value: VariableInputEnum.JSONEditor,
370-
// defaultValueType: WorkflowIOValueTypeEnum.object
371-
// },
372365
{
373366
icon: 'core/workflow/inputType/option',
374367
label: i18nT('common:core.workflow.inputType.select'),
@@ -398,34 +391,22 @@ export const variableConfigs: VariableConfigType[][] = [
398391
label: i18nT('common:core.workflow.inputType.timeRangeSelect'),
399392
value: VariableInputEnum.timeRangeSelect,
400393
defaultValueType: WorkflowIOValueTypeEnum.arrayString
401-
},
394+
}
395+
],
396+
[
402397
{
403398
icon: 'core/workflow/inputType/model',
404399
label: i18nT('common:core.workflow.inputType.modelSelect'),
405400
value: VariableInputEnum.llmSelect,
406401
defaultValueType: WorkflowIOValueTypeEnum.string
402+
},
403+
{
404+
icon: 'core/workflow/inputType/file',
405+
label: i18nT('common:core.workflow.inputType.file'),
406+
value: VariableInputEnum.file,
407+
defaultValueType: WorkflowIOValueTypeEnum.arrayString
407408
}
408-
// {
409-
// icon: 'core/workflow/inputType/file',
410-
// label: i18nT('common:core.workflow.inputType.file'),
411-
// value: VariableInputEnum.file,
412-
// defaultValueType: WorkflowIOValueTypeEnum.arrayString
413-
// }
414409
],
415-
// [
416-
// {
417-
// icon: 'core/workflow/inputType/model',
418-
// label: i18nT('common:core.workflow.inputType.modelSelect'),
419-
// value: VariableInputEnum.llmSelect,
420-
// defaultValueType: WorkflowIOValueTypeEnum.string
421-
// },
422-
// {
423-
// icon: 'core/workflow/inputType/dataset',
424-
// label: i18nT('common:core.workflow.inputType.datasetSelect'),
425-
// value: VariableInputEnum.datasetSelect,
426-
// defaultValueType: WorkflowIOValueTypeEnum.selectDataset
427-
// }
428-
// ],
429410
[
430411
{
431412
icon: 'core/workflow/inputType/external',

packages/global/core/workflow/node/constant.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export const FlowNodeInputMap: Record<
4949
icon: 'core/workflow/inputType/option'
5050
},
5151
[FlowNodeInputTypeEnum.multipleSelect]: {
52-
icon: 'core/workflow/inputType/option'
52+
icon: 'core/workflow/inputType/multipleSelect'
5353
},
5454
[FlowNodeInputTypeEnum.switch]: {
5555
icon: 'core/workflow/inputType/switch'
@@ -79,7 +79,7 @@ export const FlowNodeInputMap: Record<
7979
icon: 'core/workflow/inputType/selectDataset'
8080
},
8181
[FlowNodeInputTypeEnum.hidden]: {
82-
icon: 'core/workflow/inputType/select'
82+
icon: 'core/workflow/inputType/internal'
8383
},
8484
[FlowNodeInputTypeEnum.customVariable]: {
8585
icon: 'core/workflow/inputType/customVariable'

packages/global/core/workflow/runtime/type.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export type ChatDispatchProps = {
6767
responseChatItemId?: string;
6868
histories: ChatItemType[];
6969
variables: Record<string, any>; // global variable
70+
cloneVariables: Record<string, any>;
7071
query: UserChatItemValueItemType[]; // trigger query
7172
chatConfig: AppSchema['chatConfig'];
7273
lastInteractive?: WorkflowInteractiveResponseType; // last interactive response
@@ -247,7 +248,7 @@ export type DispatchNodeResponseType = {
247248
loopOutputValue?: any;
248249

249250
// form input
250-
formInputResult?: string;
251+
formInputResult?: Record<string, any>;
251252

252253
// tool params
253254
toolParamsResult?: Record<string, any>;

packages/global/core/workflow/template/system/interactive/type.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { NodeOutputItemType } from '../../../../chat/type';
22
import type { FlowNodeOutputItemType } from '../../../type/io';
3-
import type { FlowNodeInputTypeEnum } from 'core/workflow/node/constant';
4-
import type { WorkflowIOValueTypeEnum } from 'core/workflow/constants';
3+
import type { FlowNodeInputTypeEnum } from '../../../node/constant';
4+
import type { WorkflowIOValueTypeEnum } from '../../../constants';
55
import type { ChatCompletionMessageParam } from '../../../../ai/type';
66

77
type InteractiveBasicType = {
@@ -71,6 +71,10 @@ export type UserInputFormItemType = {
7171

7272
// input & textarea
7373
maxLength?: number;
74+
75+
// password
76+
minLength?: number;
77+
7478
// numberInput
7579
max?: number;
7680
min?: number;

0 commit comments

Comments
 (0)