Commit ea45d2dc by Xianquan Committed by GitHub

fix: respect configured chat upload limit (#7336)

parent 959ecfba
Subproject commit ec193812c120166b135f4ce6acaa44d9c853ac8f
Subproject commit 0da7a5a71abe3ea1fa27e4ea078a987734fd2ce8
......@@ -26,6 +26,7 @@ import MyTag from '@fastgpt/web/components/common/Tag/index';
import { defaultAppSelectFileConfig } from '@fastgpt/global/core/app/constants';
import InputSlider from '@fastgpt/web/components/common/MySlider/InputSlider';
import { FileTypeSelectorPanel } from '@fastgpt/web/components/core/app/FileTypeSelector';
import { resolveFileSelectConfigMaxFiles } from './fileSelectConfig';
const FileSelect = ({
forbidVision = false,
......@@ -42,11 +43,11 @@ const FileSelect = ({
const { teamPlanStatus } = useUserStore();
const { isOpen, onOpen, onClose } = useDisclosure();
// 文件数量限制:团队套餐 || 系统配置 || 默认值(这里是指对话中,最多上传多少文件)
const maxSelectFiles = Math.min(
teamPlanStatus?.standard?.maxUploadFileCount || feConfigs.uploadFileMaxAmount,
50
);
// 对话可配置的文件数量不能超过团队套餐;未配置套餐时沿用系统上传上限。
const maxSelectFiles = resolveFileSelectConfigMaxFiles({
teamPlanMaxFiles: teamPlanStatus?.standard?.maxUploadFileCount,
systemMaxFiles: feConfigs.uploadFileMaxAmount
});
const [localValue, setLocalValue] = useState(value);
......
/**
* 解析工作流对话可配置的最大文件数。
* 团队套餐是更严格的业务上限;套餐未配置该字段时,才回退到系统上传数量配置。
* 该函数单独导出用于覆盖无套餐和套餐限制的回归测试。
*/
export const resolveFileSelectConfigMaxFiles = ({
teamPlanMaxFiles,
systemMaxFiles
}: {
teamPlanMaxFiles?: number;
systemMaxFiles: number;
}) => teamPlanMaxFiles ?? systemMaxFiles;
import { describe, expect, it } from 'vitest';
import { resolveFileSelectConfigMaxFiles } from '@/components/core/app/fileSelectConfig';
describe('resolveFileSelectConfigMaxFiles', () => {
it('uses the system upload limit when the team plan has no file limit', () => {
expect(
resolveFileSelectConfigMaxFiles({
systemMaxFiles: 100
})
).toBe(100);
});
it('uses the team plan limit when it is configured', () => {
expect(
resolveFileSelectConfigMaxFiles({
teamPlanMaxFiles: 20,
systemMaxFiles: 100
})
).toBe(20);
});
it('does not replace an explicit zero limit with the system limit', () => {
expect(
resolveFileSelectConfigMaxFiles({
teamPlanMaxFiles: 0,
systemMaxFiles: 100
})
).toBe(0);
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment