feat: add rag pipeline store slice

pull/21398/head
zxhlyh 1 year ago
parent 2d87823fc6
commit a36436b585

@ -5,11 +5,15 @@ import Panel from '@/app/components/workflow/panel'
import { import {
WorkflowContextProvider, WorkflowContextProvider,
} from '@/app/components/workflow/context' } from '@/app/components/workflow/context'
import type { InjectWorkflowStoreSliceFn } from '@/app/components/workflow/store'
import RagPipelineHeader from './components/rag-pipeline-header' import RagPipelineHeader from './components/rag-pipeline-header'
import { createRagPipelineSliceSlice } from './store'
const RagPipeline = () => { const RagPipeline = () => {
return ( return (
<WorkflowContextProvider> <WorkflowContextProvider
injectWorkflowStoreSliceFn={createRagPipelineSliceSlice as InjectWorkflowStoreSliceFn}
>
<WorkflowWithDefaultContext <WorkflowWithDefaultContext
edges={[]} edges={[]}
nodes={[]} nodes={[]}

@ -0,0 +1,12 @@
import type { StateCreator } from 'zustand'
export type RagPipelineSliceShape = {
showInputFieldDialog: boolean
setShowInputFieldDialog: (showInputFieldDialog: boolean) => void
}
export type CreateRagPipelineSliceSlice = StateCreator<RagPipelineSliceShape>
export const createRagPipelineSliceSlice: StateCreator<RagPipelineSliceShape> = set => ({
showInputFieldDialog: false,
setShowInputFieldDialog: showInputFieldDialog => set(() => ({ showInputFieldDialog })),
})

@ -2,18 +2,18 @@ import {
createContext, createContext,
useRef, useRef,
} from 'react' } from 'react'
import type { SliceFromInjection } from './store'
import { import {
createWorkflowStore, createWorkflowStore,
} from './store' } from './store'
import type { StateCreator } from 'zustand' import type { StateCreator } from 'zustand'
import type { WorkflowSliceShape } from '@/app/components/workflow-app/store/workflow/workflow-slice'
type WorkflowStore = ReturnType<typeof createWorkflowStore> type WorkflowStore = ReturnType<typeof createWorkflowStore>
export const WorkflowContext = createContext<WorkflowStore | null>(null) export const WorkflowContext = createContext<WorkflowStore | null>(null)
export type WorkflowProviderProps = { export type WorkflowProviderProps = {
children: React.ReactNode children: React.ReactNode
injectWorkflowStoreSliceFn?: StateCreator<WorkflowSliceShape> injectWorkflowStoreSliceFn?: StateCreator<SliceFromInjection>
} }
export const WorkflowContextProvider = ({ children, injectWorkflowStoreSliceFn }: WorkflowProviderProps) => { export const WorkflowContextProvider = ({ children, injectWorkflowStoreSliceFn }: WorkflowProviderProps) => {
const storeRef = useRef<WorkflowStore | undefined>(undefined) const storeRef = useRef<WorkflowStore | undefined>(undefined)

@ -30,6 +30,11 @@ import type { WorkflowSliceShape } from './workflow-slice'
import { createWorkflowSlice } from './workflow-slice' import { createWorkflowSlice } from './workflow-slice'
import { WorkflowContext } from '@/app/components/workflow/context' import { WorkflowContext } from '@/app/components/workflow/context'
import type { WorkflowSliceShape as WorkflowAppSliceShape } from '@/app/components/workflow-app/store/workflow/workflow-slice' import type { WorkflowSliceShape as WorkflowAppSliceShape } from '@/app/components/workflow-app/store/workflow/workflow-slice'
import type { RagPipelineSliceShape } from '@/app/components/rag-pipeline/store'
export type SliceFromInjection =
Partial<WorkflowAppSliceShape> &
Partial<RagPipelineSliceShape>
export type Shape = export type Shape =
ChatVariableSliceShape & ChatVariableSliceShape &
@ -43,10 +48,12 @@ export type Shape =
VersionSliceShape & VersionSliceShape &
WorkflowDraftSliceShape & WorkflowDraftSliceShape &
WorkflowSliceShape & WorkflowSliceShape &
WorkflowAppSliceShape SliceFromInjection
export type InjectWorkflowStoreSliceFn = StateCreator<SliceFromInjection>
type CreateWorkflowStoreParams = { type CreateWorkflowStoreParams = {
injectWorkflowStoreSliceFn?: StateCreator<WorkflowAppSliceShape> injectWorkflowStoreSliceFn?: InjectWorkflowStoreSliceFn
} }
export const createWorkflowStore = (params: CreateWorkflowStoreParams) => { export const createWorkflowStore = (params: CreateWorkflowStoreParams) => {
@ -64,7 +71,7 @@ export const createWorkflowStore = (params: CreateWorkflowStoreParams) => {
...createVersionSlice(...args), ...createVersionSlice(...args),
...createWorkflowDraftSlice(...args), ...createWorkflowDraftSlice(...args),
...createWorkflowSlice(...args), ...createWorkflowSlice(...args),
...(injectWorkflowStoreSliceFn?.(...args) || {} as WorkflowAppSliceShape), ...(injectWorkflowStoreSliceFn?.(...args) || {} as (SliceFromInjection)),
})) }))
} }

Loading…
Cancel
Save