add templateId to apps (#5866)

* fix: timeselector ui error

* var update node

* add templateId to apps
This commit is contained in:
Archer 2025-11-05 14:58:02 +08:00 committed by GitHub
parent 45869fa058
commit bf33f7af2e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 44 additions and 33 deletions

View File

@ -29,6 +29,7 @@ export type AppSchema = {
name: string; name: string;
avatar: string; avatar: string;
intro: string; intro: string;
templateId?: string; // Create by template
updateTime: Date; updateTime: Date;
@ -46,16 +47,18 @@ export type AppSchema = {
scheduledTriggerConfig?: AppScheduledTriggerConfigType | null; scheduledTriggerConfig?: AppScheduledTriggerConfigType | null;
scheduledTriggerNextTime?: Date; scheduledTriggerNextTime?: Date;
inited?: boolean;
teamTags: string[];
inheritPermission?: boolean; inheritPermission?: boolean;
// if access the app by favourite or quick // if access the app by favourite or quick
favourite?: boolean; favourite?: boolean;
quick?: boolean; quick?: boolean;
// abandon /** @deprecated */
defaultPermission?: number; defaultPermission?: number;
/** @deprecated */
inited?: boolean;
/** @deprecated */
teamTags: string[];
}; };
export type AppListItemType = { export type AppListItemType = {

View File

@ -8,11 +8,12 @@ export type UsageSchemaType = {
teamId: string; teamId: string;
tmbId: string; tmbId: string;
appName: string; appName: string;
appId?: string;
pluginId?: string;
totalPoints: number; totalPoints: number;
source: `${UsageSourceEnum}`; source: `${UsageSourceEnum}`;
appId?: string;
datasetId?: string;
// @deprecated // @deprecated
list?: UsageItemType[]; list?: UsageItemType[];
}; };

View File

@ -60,18 +60,14 @@ const AppSchema = new Schema(
type: String, type: String,
default: '' default: ''
}, },
templateId: String,
updateTime: { updateTime: {
type: Date, type: Date,
default: () => new Date() default: () => new Date()
}, },
// role and auth // Workflow data
teamTags: {
type: [String]
},
// save app(Not publish)
modules: { modules: {
type: Array, type: Array,
default: [] default: []
@ -83,7 +79,8 @@ const AppSchema = new Schema(
chatConfig: { chatConfig: {
type: chatConfigType type: chatConfigType
}, },
// plugin config
// Tool config
pluginData: { pluginData: {
type: { type: {
nodeVersion: String, nodeVersion: String,
@ -108,19 +105,21 @@ const AppSchema = new Schema(
type: Date type: Date
}, },
inited: {
type: Boolean
},
inheritPermission: { inheritPermission: {
type: Boolean, type: Boolean,
default: true default: true
}, },
// Chat setting
favourite: Boolean, favourite: Boolean,
quick: Boolean, quick: Boolean,
// abandoned /** @deprecated */
defaultPermission: Number defaultPermission: Number,
inited: Boolean,
teamTags: {
type: [String]
}
}, },
{ {
minimize: false minimize: false

View File

@ -7,6 +7,8 @@ import {
TeamMemberCollectionName TeamMemberCollectionName
} from '@fastgpt/global/support/user/team/constant'; } from '@fastgpt/global/support/user/team/constant';
import { UsageCollectionName, UsageItemCollectionName } from './constants'; import { UsageCollectionName, UsageItemCollectionName } from './constants';
import { AppCollectionName } from '../../../core/app/schema';
import { DatasetCollectionName } from '../../../core/dataset/schema';
const UsageSchema = new Schema( const UsageSchema = new Schema(
{ {
@ -25,31 +27,30 @@ const UsageSchema = new Schema(
enum: Object.values(UsageSourceEnum), enum: Object.values(UsageSourceEnum),
required: true required: true
}, },
// usage name
appName: { appName: {
// usage name
type: String, type: String,
default: '' default: ''
}, },
// total points
totalPoints: { totalPoints: {
// total points
type: Number, type: Number,
required: true required: true
}, },
appId: {
type: Schema.Types.ObjectId,
ref: 'apps',
required: false
},
pluginId: {
type: Schema.Types.ObjectId,
ref: 'plugins',
required: false
},
time: { time: {
type: Date, type: Date,
default: () => new Date() default: () => new Date()
}, },
appId: {
type: Schema.Types.ObjectId,
ref: AppCollectionName
},
datasetId: {
type: Schema.Types.ObjectId,
ref: DatasetCollectionName
},
// @description It will not be used again in the future. // @description It will not be used again in the future.
list: { list: {
type: Array type: Array

View File

@ -484,7 +484,7 @@ const RenderList = React.memo(function RenderList({
_hover={{ _hover={{
color: 'primary.600' color: 'primary.600'
}} }}
onClick={() => router.push('/toolkit/tools')} onClick={() => router.push('/plugin/tool')}
gap={1} gap={1}
bottom={0} bottom={0}
right={[3, 6]} right={[3, 6]}

View File

@ -39,11 +39,14 @@ export type CreateAppBody = {
modules: AppSchema['modules']; modules: AppSchema['modules'];
edges?: AppSchema['edges']; edges?: AppSchema['edges'];
chatConfig?: AppSchema['chatConfig']; chatConfig?: AppSchema['chatConfig'];
templateId?: string;
utmParams?: ShortUrlParams; utmParams?: ShortUrlParams;
}; };
async function handler(req: ApiRequestProps<CreateAppBody>) { async function handler(req: ApiRequestProps<CreateAppBody>) {
const { parentId, name, avatar, intro, type, modules, edges, chatConfig, utmParams } = req.body; const { parentId, name, avatar, intro, type, modules, edges, chatConfig, templateId, utmParams } =
req.body;
if (!name || !type || !Array.isArray(modules)) { if (!name || !type || !Array.isArray(modules)) {
return Promise.reject(CommonErrEnum.inheritPermissionError); return Promise.reject(CommonErrEnum.inheritPermissionError);
@ -122,6 +125,7 @@ export const onCreateApp = async ({
pluginData, pluginData,
username, username,
userAvatar, userAvatar,
templateId,
session session
}: { }: {
parentId?: ParentIdType; parentId?: ParentIdType;
@ -137,6 +141,7 @@ export const onCreateApp = async ({
pluginData?: AppSchema['pluginData']; pluginData?: AppSchema['pluginData'];
username?: string; username?: string;
userAvatar?: string; userAvatar?: string;
templateId?: string;
session?: ClientSession; session?: ClientSession;
}) => { }) => {
const create = async (session: ClientSession) => { const create = async (session: ClientSession) => {
@ -154,7 +159,8 @@ export const onCreateApp = async ({
chatConfig, chatConfig,
type, type,
version: 'v2', version: 'v2',
pluginData pluginData,
templateId
} }
], ],
{ session, ordered: true } { session, ordered: true }

View File

@ -74,7 +74,8 @@ const TemplateMarket = ({
type: template.type as AppTypeEnum, type: template.type as AppTypeEnum,
modules: templateDetail.workflow.nodes || [], modules: templateDetail.workflow.nodes || [],
edges: templateDetail.workflow.edges || [], edges: templateDetail.workflow.edges || [],
chatConfig: templateDetail.workflow.chatConfig chatConfig: templateDetail.workflow.chatConfig,
templateId: templateDetail.templateId
}).then((res) => { }).then((res) => {
webPushTrack.useAppTemplate({ webPushTrack.useAppTemplate({
id: res, id: res,