mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-22 20:37:48 +00:00

* feat: add third party account config (#3443) * temp * editor workflow variable style * add team to dispatch * i18n * delete console * change openai account position * fix * fix * fix * fix * fix * 4.8.17 test (#3461) * perf: external provider config * perf: ui * feat: add template config (#3434) * change template position * template config * delete console * delete * fix * fix * perf: Mongo visutal field (#3464) * remve invalid code * perf: team member visutal code * perf: virtual search; perf: search test data * fix: ts * fix: image response headers * perf: template code * perf: auth layout;perf: auto save (#3472) * perf: auth layout * perf: auto save * perf: auto save * fix: template guide display & http input support external variables (#3475) * fix: template guide display * http editor support external workflow variables * perf: auto save;fix: ifelse checker line break; (#3478) * perf: auto save * perf: auto save * fix: ifelse checker line break * perf: doc * perf: doc * fix: update var type error * 4.8.17 test (#3479) * perf: auto save * perf: auto save * perf: template code * 4.8.17 test (#3480) * perf: auto save * perf: auto save * perf: model price model * feat: add react memo * perf: model provider filter * fix: ts (#3481) * perf: auto save * perf: auto save * fix: ts * simple app tool select (#3473) * workflow plugin userguide & simple tool ui * simple tool filter * reuse component * change component to hook * fix * perf: too selector modal (#3484) * perf: auto save * perf: auto save * perf: markdown render * perf: too selector * fix: app version require tmbId * perf: templates refresh * perf: templates refresh * hide auto save error tip * perf: toolkit guide --------- Co-authored-by: heheer <heheer@sealos.io>
84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
import fs from 'fs';
|
|
import path from 'path';
|
|
import { isProduction } from '@fastgpt/global/common/system/constants';
|
|
import { PluginSourceEnum } from '@fastgpt/global/core/plugin/constants';
|
|
import { MongoAppTemplate } from '@fastgpt/service/core/app/templates/templateSchema';
|
|
import { AppTemplateSchemaType } from '@fastgpt/global/core/app/type';
|
|
|
|
const getTemplateNameList = () => {
|
|
const currentFileUrl = new URL(import.meta.url);
|
|
const templatesPath = path.join(path.dirname(currentFileUrl.pathname), 'src');
|
|
|
|
return fs.readdirSync(templatesPath) as string[];
|
|
};
|
|
|
|
const getFileTemplates = (): AppTemplateSchemaType[] => {
|
|
const templateNames = getTemplateNameList();
|
|
|
|
const appMarketTemplates = templateNames.map((name) => {
|
|
const fileContent = require(`./src/${name}/template.json`);
|
|
|
|
return {
|
|
...fileContent,
|
|
templateId: `${PluginSourceEnum.community}-${name}`,
|
|
isActive: true
|
|
};
|
|
});
|
|
|
|
return appMarketTemplates;
|
|
};
|
|
|
|
const getAppTemplates = async () => {
|
|
const communityTemplates = getFileTemplates();
|
|
|
|
const dbTemplates = await MongoAppTemplate.find();
|
|
|
|
// Merge db data to community templates
|
|
const communityTemplateConfig = communityTemplates.map((template) => {
|
|
const config = dbTemplates.find((t) => t.templateId === template.templateId);
|
|
|
|
if (config) {
|
|
return {
|
|
...template,
|
|
isActive: config.isActive ?? template.isActive,
|
|
tags: config.tags ?? template.tags,
|
|
userGuide: config.userGuide ?? template.userGuide,
|
|
isQuickTemplate: config.isQuickTemplate ?? template.isQuickTemplate,
|
|
order: config.order ?? template.order
|
|
};
|
|
}
|
|
|
|
return template;
|
|
});
|
|
|
|
const res = [
|
|
...communityTemplateConfig,
|
|
...dbTemplates.filter((t) => !isCommunityTemplate(t.templateId))
|
|
].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
|
|
return res;
|
|
};
|
|
|
|
export const getAppTemplatesAndLoadThem = async (refresh = false) => {
|
|
if (isProduction && global.appTemplates && global.appTemplates.length > 0 && !refresh)
|
|
return global.appTemplates;
|
|
|
|
if (!global.appTemplates) {
|
|
global.appTemplates = [];
|
|
}
|
|
|
|
try {
|
|
const appTemplates = await getAppTemplates();
|
|
global.appTemplates = appTemplates;
|
|
return appTemplates;
|
|
} catch (error) {
|
|
// @ts-ignore
|
|
global.appTemplates = undefined;
|
|
return [];
|
|
}
|
|
};
|
|
|
|
export const isCommunityTemplate = (templateId: string) => {
|
|
return templateId.startsWith(PluginSourceEnum.community);
|
|
};
|