version panel

pull/21398/head
zxhlyh 11 months ago
parent faf6b9ea03
commit c2a7e0e986

@ -3,7 +3,9 @@ import RagPipeline from '@/app/components/rag-pipeline'
const PipelinePage = () => { const PipelinePage = () => {
return ( return (
<RagPipeline /> <div className='h-full w-full overflow-x-auto'>
<RagPipeline />
</div>
) )
} }
export default PipelinePage export default PipelinePage

@ -41,6 +41,7 @@ const WeightedScore = ({
value={value.value[0]} value={value.value[0]}
onChange={v => !readonly && onChange({ value: [v, (10 - v * 10) / 10] })} onChange={v => !readonly && onChange({ value: [v, (10 - v * 10) / 10] })}
trackClassName='weightedScoreSliderTrack' trackClassName='weightedScoreSliderTrack'
disabled={readonly}
/> />
<div className='mt-3 flex justify-between'> <div className='mt-3 flex justify-between'>
<div className='system-xs-semibold-uppercase flex w-[90px] shrink-0 items-center text-util-colors-blue-light-blue-light-500'> <div className='system-xs-semibold-uppercase flex w-[90px] shrink-0 items-center text-util-colors-blue-light-blue-light-500'>

@ -24,14 +24,25 @@ const RagPipelinePanelOnRight = () => {
} }
const RagPipelinePanel = () => { const RagPipelinePanel = () => {
const pipelineId = useStore(s => s.pipelineId)
const versionHistoryPanelProps = useMemo(() => {
return {
getVersionListUrl: `/rag/pipelines/${pipelineId}/workflows`,
deleteVersionUrl: (versionId: string) => `/rag/pipelines/${pipelineId}/workflows/${versionId}`,
updateVersionUrl: (versionId: string) => `/rag/pipelines/${pipelineId}/workflows/${versionId}`,
latestVersionId: '',
}
}, [pipelineId])
const panelProps: PanelProps = useMemo(() => { const panelProps: PanelProps = useMemo(() => {
return { return {
components: { components: {
left: null, left: null,
right: <RagPipelinePanelOnRight />, right: <RagPipelinePanelOnRight />,
}, },
versionHistoryPanelProps,
} }
}, []) }, [versionHistoryPanelProps])
return ( return (
<Panel {...panelProps} /> <Panel {...panelProps} />

@ -46,6 +46,7 @@ const RagPipeline = () => {
<RagPipelineMain <RagPipelineMain
edges={edgesData} edges={edgesData}
nodes={nodesData} nodes={nodesData}
viewport={data.graph.viewport}
/> />
</WorkflowWithDefaultContext> </WorkflowWithDefaultContext>
) )

@ -152,7 +152,6 @@ export const Workflow: FC<WorkflowProps> = memo(({
setAutoFreeze(true) setAutoFreeze(true)
} }
}, []) }, [])
useEffect(() => { useEffect(() => {
return () => { return () => {
handleSyncWorkflowDraft(true, true) handleSyncWorkflowDraft(true, true)

@ -0,0 +1,5 @@
export const useConfig = (id: string) => {
return {
id,
}
}

@ -1,4 +1,5 @@
import { memo } from 'react' import { memo } from 'react'
import { useTranslation } from 'react-i18next'
import { Field } from '@/app/components/workflow/nodes/_base/components/layout' import { Field } from '@/app/components/workflow/nodes/_base/components/layout'
import type { ChunkStructureEnum } from '../../types' import type { ChunkStructureEnum } from '../../types'
import OptionCard from '../option-card' import OptionCard from '../option-card'
@ -15,6 +16,7 @@ const ChunkStructure = ({
onChunkStructureChange, onChunkStructureChange,
readonly = false, readonly = false,
}: ChunkStructureProps) => { }: ChunkStructureProps) => {
const { t } = useTranslation()
const { const {
options, options,
optionMap, optionMap,
@ -23,8 +25,8 @@ const ChunkStructure = ({
return ( return (
<Field <Field
fieldTitleProps={{ fieldTitleProps={{
title: 'Chunk Structure', title: t('workflow.nodes.knowledgeBase.chunkStructure'),
tooltip: 'Chunk Structure', tooltip: t('workflow.nodes.knowledgeBase.chunkStructure'),
operation: ( operation: (
<Selector <Selector
options={options} options={options}

@ -1,4 +1,5 @@
import { useCallback, useState } from 'react' import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { import {
PortalToFollowElem, PortalToFollowElem,
PortalToFollowElemContent, PortalToFollowElemContent,
@ -21,6 +22,7 @@ const Selector = ({
onChange, onChange,
readonly, readonly,
}: SelectorProps) => { }: SelectorProps) => {
const { t } = useTranslation()
const [open, setOpen] = useState(false) const [open, setOpen] = useState(false)
const handleSelect = useCallback((optionId: ChunkStructureEnum) => { const handleSelect = useCallback((optionId: ChunkStructureEnum) => {
@ -47,13 +49,13 @@ const Selector = ({
size='small' size='small'
variant='ghost-accent' variant='ghost-accent'
> >
change {t('workflow.panel.change')}
</Button> </Button>
</PortalToFollowElemTrigger> </PortalToFollowElemTrigger>
<PortalToFollowElemContent className='z-10'> <PortalToFollowElemContent className='z-10'>
<div className='w-[404px] rounded-2xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur shadow-xl backdrop-blur-[5px]'> <div className='w-[404px] rounded-2xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur shadow-xl backdrop-blur-[5px]'>
<div className='system-sm-semibold px-3 pt-3.5 text-text-primary'> <div className='system-sm-semibold px-3 pt-3.5 text-text-primary'>
change Chunk Structure {t('workflow.nodes.knowledgeBase.changeChunkStructure')}
</div> </div>
<div className='space-y-1 p-3 pt-2'> <div className='space-y-1 p-3 pt-2'>
{ {

@ -1,4 +1,5 @@
import { memo } from 'react' import { memo } from 'react'
import { useTranslation } from 'react-i18next'
import VarReferencePicker from '@/app/components/workflow/nodes/_base/components/variable/var-reference-picker' import VarReferencePicker from '@/app/components/workflow/nodes/_base/components/variable/var-reference-picker'
import { Field } from '@/app/components/workflow/nodes/_base/components/layout' import { Field } from '@/app/components/workflow/nodes/_base/components/layout'
import type { ValueSelector } from '@/app/components/workflow/types' import type { ValueSelector } from '@/app/components/workflow/types'
@ -15,11 +16,12 @@ const InputVariable = ({
onInputVariableChange, onInputVariableChange,
readonly = false, readonly = false,
}: InputVariableProps) => { }: InputVariableProps) => {
const { t } = useTranslation()
return ( return (
<Field <Field
fieldTitleProps={{ fieldTitleProps={{
title: 'Input Variable', title: t('workflow.nodes.common.inputVars'),
tooltip: 'Input Variable',
}} }}
> >
<VarReferencePicker <VarReferencePicker

@ -62,8 +62,7 @@ const RetrievalSetting = ({
subTitle: ( subTitle: (
<div className='body-xs-regular flex items-center text-text-tertiary'> <div className='body-xs-regular flex items-center text-text-tertiary'>
<a target='_blank' rel='noopener noreferrer' href='https://docs.dify.ai/guides/knowledge-base/create-knowledge-and-upload-documents#id-4-retrieval-settings' className='text-text-accent'>{t('datasetSettings.form.retrievalSetting.learnMore')}</a> <a target='_blank' rel='noopener noreferrer' href='https://docs.dify.ai/guides/knowledge-base/create-knowledge-and-upload-documents#id-4-retrieval-settings' className='text-text-accent'>{t('datasetSettings.form.retrievalSetting.learnMore')}</a>
&nbsp; &nbsp;{t('workflow.nodes.knowledgeBase.aboutRetrieval')}
about retrieval method.
</div> </div>
), ),
}} }}

@ -368,6 +368,7 @@ const translation = {
ms: 'ms', ms: 'ms',
retries: '{{num}} Retries', retries: '{{num}} Retries',
}, },
inputVars: 'Input Variables',
}, },
start: { start: {
required: 'required', required: 'required',
@ -767,6 +768,11 @@ const translation = {
currentLoopCount: 'Current loop count: {{count}}', currentLoopCount: 'Current loop count: {{count}}',
totalLoopCount: 'Total loop count: {{count}}', totalLoopCount: 'Total loop count: {{count}}',
}, },
knowledgeBase: {
chunkStructure: 'Chunk Structure',
changeChunkStructure: 'Change Chunk Structure',
aboutRetrieval: 'about retrieval method.',
},
note: { note: {
addNote: 'Add Note', addNote: 'Add Note',
editor: { editor: {

@ -369,6 +369,7 @@ const translation = {
ms: '毫秒', ms: '毫秒',
retries: '{{num}} 重试次数', retries: '{{num}} 重试次数',
}, },
inputVars: '输入变量',
}, },
start: { start: {
required: '必填', required: '必填',
@ -768,6 +769,11 @@ const translation = {
currentLoopCount: '当前循环次数:{{count}}', currentLoopCount: '当前循环次数:{{count}}',
totalLoopCount: '总循环次数:{{count}}', totalLoopCount: '总循环次数:{{count}}',
}, },
knowledgeBase: {
chunkStructure: '分段结构',
changeChunkStructure: '更改分段结构',
aboutRetrieval: '关于知识检索。',
},
note: { note: {
addNote: '添加注释', addNote: '添加注释',
editor: { editor: {

Loading…
Cancel
Save