您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

index.tsx 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { useMemo } from 'react'
  2. import WorkflowWithDefaultContext from '@/app/components/workflow'
  3. import {
  4. WorkflowContextProvider,
  5. } from '@/app/components/workflow/context'
  6. import type { InjectWorkflowStoreSliceFn } from '@/app/components/workflow/store'
  7. import {
  8. initialEdges,
  9. initialNodes,
  10. } from '@/app/components/workflow/utils'
  11. import Loading from '@/app/components/base/loading'
  12. import { createRagPipelineSliceSlice } from './store'
  13. import RagPipelineMain from './components/rag-pipeline-main'
  14. import { usePipelineInit } from './hooks'
  15. import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
  16. import Conversion from './components/conversion'
  17. import type { Node } from '@/app/components/workflow/types'
  18. import { processNodesWithoutDataSource } from './utils'
  19. const RagPipeline = () => {
  20. const {
  21. data,
  22. isLoading,
  23. } = usePipelineInit()
  24. const nodesData = useMemo(() => {
  25. let result: Node[] = []
  26. if (data)
  27. result = initialNodes(data.graph.nodes, data.graph.edges)
  28. return processNodesWithoutDataSource(result)
  29. }, [data])
  30. const edgesData = useMemo(() => {
  31. if (data)
  32. return initialEdges(data.graph.edges, data.graph.nodes)
  33. return []
  34. }, [data])
  35. if (!data || isLoading) {
  36. return (
  37. <div className='relative flex h-full w-full items-center justify-center'>
  38. <Loading />
  39. </div>
  40. )
  41. }
  42. return (
  43. <WorkflowWithDefaultContext
  44. edges={edgesData}
  45. nodes={nodesData}
  46. >
  47. <RagPipelineMain
  48. edges={edgesData}
  49. nodes={nodesData}
  50. viewport={data.graph.viewport}
  51. />
  52. </WorkflowWithDefaultContext>
  53. )
  54. }
  55. const RagPipelineWrapper = () => {
  56. const pipelineId = useDatasetDetailContextWithSelector(s => s.dataset?.pipeline_id)
  57. if (!pipelineId)
  58. return <Conversion />
  59. return (
  60. <WorkflowContextProvider
  61. injectWorkflowStoreSliceFn={createRagPipelineSliceSlice as InjectWorkflowStoreSliceFn}
  62. >
  63. <RagPipeline />
  64. </WorkflowContextProvider>
  65. )
  66. }
  67. export default RagPipelineWrapper