feat: version tag (#14949)

This commit is contained in:
Wu Tianwei 2025-03-07 18:10:40 +08:00 • committed by GitHub
commit 3ca1373274
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
41 changed files with 1695 additions and 423 deletions

View file

@ -13,3 +13,14 @@ export const useInvalid = (key: QueryKey) => {
)
}
}
export const useReset = (key: QueryKey) => {
const queryClient = useQueryClient()
return () => {
queryClient.resetQueries(
{
queryKey: key,
},
)
}
}

View file

@ -1,9 +1,15 @@
import { get } from './base'
import { del, get, patch, post } from './base'
import { useInfiniteQuery, useMutation, useQuery } from '@tanstack/react-query'
import type {
FetchWorkflowDraftPageParams,
FetchWorkflowDraftPageResponse,
FetchWorkflowDraftResponse,
PublishWorkflowParams,
UpdateWorkflowParams,
WorkflowConfigResponse,
} from '@/types/workflow'
import { useQuery } from '@tanstack/react-query'
import type { WorkflowConfigResponse } from '@/types/workflow'
import type { CommonResponse } from '@/models/common'
import { useReset } from './use-base'
const NAME_SPACE = 'workflow'
@ -21,3 +27,57 @@ export const useWorkflowConfig = (appId: string) => {
queryFn: () => get<WorkflowConfigResponse>(`/apps/${appId}/workflows/draft/config`),
})
}
const WorkflowVersionHistoryKey = [NAME_SPACE, 'versionHistory']
export const useWorkflowVersionHistory = (params: FetchWorkflowDraftPageParams) => {
const { appId, initialPage, limit, userId, namedOnly } = params
return useInfiniteQuery({
queryKey: [...WorkflowVersionHistoryKey, appId, initialPage, limit, userId, namedOnly],
queryFn: ({ pageParam = 1 }) => get<FetchWorkflowDraftPageResponse>(`/apps/${appId}/workflows`, {
params: {
page: pageParam,
limit,
user_id: userId || '',
named_only: !!namedOnly,
},
}),
getNextPageParam: lastPage => lastPage.has_more ? lastPage.page + 1 : null,
initialPageParam: initialPage,
})
}
export const useResetWorkflowVersionHistory = (appId: string) => {
return useReset([...WorkflowVersionHistoryKey, appId])
}
export const useUpdateWorkflow = (appId: string) => {
return useMutation({
mutationKey: [NAME_SPACE, 'update'],
mutationFn: (params: UpdateWorkflowParams) => patch(`/apps/${appId}/workflows/${params.workflowId}`, {
body: {
marked_name: params.title,
marked_comment: params.releaseNotes,
},
}),
})
}
export const useDeleteWorkflow = (appId: string) => {
return useMutation({
mutationKey: [NAME_SPACE, 'delete'],
mutationFn: (workflowId: string) => del(`/apps/${appId}/workflows/${workflowId}`),
})
}
export const usePublishWorkflow = (appId: string) => {
return useMutation({
mutationKey: [NAME_SPACE, 'publish'],
mutationFn: (params: PublishWorkflowParams) => post<CommonResponse & { created_at: number }>(`/apps/${appId}/workflows/publish`, {
body: {
marked_name: params.title,
marked_comment: params.releaseNotes,
},
}),
})
}

View file

@ -4,7 +4,6 @@ import type { CommonResponse } from '@/models/common'
import type {
ChatRunHistoryResponse,
ConversationVariableResponse,
FetchWorkflowDraftPageResponse,
FetchWorkflowDraftResponse,
NodesDefaultConfigsResponse,
WorkflowRunHistoryResponse,
@ -46,18 +45,10 @@ export const getLoopSingleNodeRunUrl = (isChatFlow: boolean, appId: string, node
return `apps/${appId}/${isChatFlow ? 'advanced-chat/' : ''}workflows/draft/loop/nodes/${nodeId}/run`
}
export const publishWorkflow = (url: string) => {
return post<CommonResponse & { created_at: number }>(url)
}
export const fetchPublishedWorkflow: Fetcher<FetchWorkflowDraftResponse, string> = (url) => {
return get<FetchWorkflowDraftResponse>(url)
}
export const fetchPublishedAllWorkflow: Fetcher<FetchWorkflowDraftPageResponse, string> = (url) => {
return get<FetchWorkflowDraftPageResponse>(url)
}
export const stopWorkflowRun = (url: string) => {
return post<CommonResponse>(url)
}