perf: app cron job (#3360)

This commit is contained in:
Archer
2024-12-10 14:05:34 +08:00
committed by GitHub
parent c98224dda3
commit b327e487a5
9 changed files with 141 additions and 45 deletions

View File

@@ -0,0 +1,27 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { authCert } from '@fastgpt/service/support/permission/auth/common';
import { NextAPI } from '@/service/middleware/entry';
import { MongoApp } from '@fastgpt/service/core/app/schema';
/* 初始化发布的版本 */
async function handler(req: NextApiRequest, res: NextApiResponse) {
await authCert({ req, authRoot: true });
// scheduledTriggerConfig为 null 的,都转成 unExist
return MongoApp.updateMany(
{
$or: [
{ scheduledTriggerConfig: { $eq: null } },
{ 'scheduledTriggerConfig.cronString': { $eq: '' } }
]
},
{
$unset: {
scheduledTriggerConfig: '',
scheduledTriggerNextTime: ''
}
}
);
}
export default NextAPI(handler);

View File

@@ -10,6 +10,7 @@ import { PostPublishAppProps } from '@/global/core/app/api';
import { WritePermissionVal } from '@fastgpt/global/support/permission/constant';
import { ApiRequestProps } from '@fastgpt/service/type/next';
import { AppTypeEnum } from '@fastgpt/global/core/app/constants';
import { getScheduleTriggerApp } from '@/service/core/app/utils';
async function handler(
req: ApiRequestProps<PostPublishAppProps>,
@@ -52,12 +53,17 @@ async function handler(
updateTime: new Date(),
version: 'v2',
// 只有发布才会更新定时器
...(isPublish && {
scheduledTriggerConfig: chatConfig?.scheduledTriggerConfig,
scheduledTriggerNextTime: chatConfig?.scheduledTriggerConfig?.cronString
? getNextTimeByCronStringAndTimezone(chatConfig.scheduledTriggerConfig)
: null
}),
...(isPublish &&
(chatConfig?.scheduledTriggerConfig?.cronString
? {
$set: {
scheduledTriggerConfig: chatConfig.scheduledTriggerConfig,
scheduledTriggerNextTime: getNextTimeByCronStringAndTimezone(
chatConfig.scheduledTriggerConfig
)
}
}
: { $unset: { scheduledTriggerConfig: '', scheduledTriggerNextTime: '' } })),
'pluginData.nodeVersion': _id
},
{
@@ -66,6 +72,8 @@ async function handler(
);
});
await getScheduleTriggerApp();
return {};
}