diff --git a/web/src/assets/svg/note.svg b/web/src/assets/svg/note.svg
new file mode 100644
index 000000000..6613b7154
--- /dev/null
+++ b/web/src/assets/svg/note.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts
index f116da469..8f292a953 100644
--- a/web/src/locales/en.ts
+++ b/web/src/locales/en.ts
@@ -985,6 +985,9 @@ The above is the content you need to summarize.`,
startDate: 'Start date',
endDate: 'End date',
keyword: 'Keyword',
+ note: 'Note',
+ noteDescription: 'Note',
+ notePlaceholder: 'Please enter a note',
},
footer: {
profile: 'All rights reserved @ React',
diff --git a/web/src/locales/zh-traditional.ts b/web/src/locales/zh-traditional.ts
index 932fb6b79..67a8fca29 100644
--- a/web/src/locales/zh-traditional.ts
+++ b/web/src/locales/zh-traditional.ts
@@ -937,6 +937,9 @@ export default {
startDate: '開始日期',
endDate: '結束日期',
keyword: '關鍵字',
+ note: '註解',
+ noteDescription: '註解',
+ notePlaceholder: '請輸入註釋',
},
footer: {
profile: '“保留所有權利 @ react”',
diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts
index dd9bdec9d..c2126a042 100644
--- a/web/src/locales/zh.ts
+++ b/web/src/locales/zh.ts
@@ -955,6 +955,9 @@ export default {
startDate: '开始日期',
endDate: '结束日期',
keyword: '关键字',
+ note: '注释',
+ noteDescription: '注释',
+ notePlaceholder: '请输入注释',
},
footer: {
profile: 'All rights reserved @ React',
diff --git a/web/src/pages/flow/canvas/index.tsx b/web/src/pages/flow/canvas/index.tsx
index 0129e1faa..39cce7096 100644
--- a/web/src/pages/flow/canvas/index.tsx
+++ b/web/src/pages/flow/canvas/index.tsx
@@ -6,9 +6,8 @@ import ReactFlow, {
NodeMouseHandler,
} from 'reactflow';
import 'reactflow/dist/style.css';
-
-import { ButtonEdge } from './edge';
-
+import ChatDrawer from '../chat/drawer';
+import { Operator } from '../constant';
import FlowDrawer from '../flow-drawer';
import {
useHandleDrop,
@@ -18,13 +17,13 @@ import {
useValidateConnection,
useWatchNodeFormDataChange,
} from '../hooks';
-import { RagNode } from './node';
-
-import ChatDrawer from '../chat/drawer';
+import { ButtonEdge } from './edge';
import styles from './index.less';
+import { RagNode } from './node';
import { BeginNode } from './node/begin-node';
import { CategorizeNode } from './node/categorize-node';
import { LogicNode } from './node/logic-node';
+import NoteNode from './node/note-node';
import { RelevantNode } from './node/relevant-node';
const nodeTypes = {
@@ -33,6 +32,7 @@ const nodeTypes = {
beginNode: BeginNode,
relevantNode: RelevantNode,
logicNode: LogicNode,
+ noteNode: NoteNode,
};
const edgeTypes = {
@@ -60,7 +60,9 @@ function FlowCanvas({ chatDrawerVisible, hideChatDrawer }: IProps) {
const onNodeClick: NodeMouseHandler = useCallback(
(e, node) => {
- showDrawer(node);
+ if (node.data.label !== Operator.Note) {
+ showDrawer(node);
+ }
},
[showDrawer],
);
@@ -121,14 +123,7 @@ function FlowCanvas({ chatDrawerVisible, hideChatDrawer }: IProps) {
defaultEdgeOptions={{
type: 'buttonEdge',
markerEnd: 'logo',
- // markerEnd: {
- // type: MarkerType.ArrowClosed,
- // color: 'rgb(157 149 225)',
- // width: 20,
- // height: 20,
- // },
style: {
- // edge style
strokeWidth: 2,
stroke: 'rgb(202 197 245)',
},
diff --git a/web/src/pages/flow/canvas/node/index.less b/web/src/pages/flow/canvas/node/index.less
index 704884f35..e41ab176c 100644
--- a/web/src/pages/flow/canvas/node/index.less
+++ b/web/src/pages/flow/canvas/node/index.less
@@ -1,9 +1,13 @@
-.ragNode {
- position: relative;
+.commonNode() {
box-shadow:
-6px 0 12px 0 rgba(179, 177, 177, 0.08),
-3px 0 6px -4px rgba(0, 0, 0, 0.12),
-6px 0 16px 6px rgba(0, 0, 0, 0.05);
+}
+
+.ragNode {
+ position: relative;
+ .commonNode();
padding: 5px;
border-radius: 5px;
@@ -68,10 +72,7 @@
.logicNode {
position: relative;
- box-shadow:
- -6px 0 12px 0 rgba(179, 177, 177, 0.08),
- -3px 0 6px -4px rgba(0, 0, 0, 0.12),
- -6px 0 16px 6px rgba(0, 0, 0, 0.05);
+ .commonNode();
padding: 5px;
border-radius: 5px;
@@ -116,3 +117,17 @@
white-space: nowrap;
}
}
+
+.noteNode {
+ .commonNode();
+ width: 140px;
+ padding: 4px 6px 6px;
+ border-radius: 10px;
+ background-color: #dbf8f4;
+ .noteTitle {
+ font-size: 12px;
+ }
+ .noteForm {
+ margin-top: 4px;
+ }
+}
diff --git a/web/src/pages/flow/canvas/node/index.tsx b/web/src/pages/flow/canvas/node/index.tsx
index 054c2d4e8..5ba346933 100644
--- a/web/src/pages/flow/canvas/node/index.tsx
+++ b/web/src/pages/flow/canvas/node/index.tsx
@@ -1,4 +1,3 @@
-import { useTranslate } from '@/hooks/common-hooks';
import { Flex } from 'antd';
import classNames from 'classnames';
import pick from 'lodash/pick';
@@ -10,12 +9,6 @@ import NodeDropdown from './dropdown';
import styles from './index.less';
import NodePopover from './popover';
-const ZeroGapOperators = [
- Operator.RewriteQuestion,
- Operator.KeywordExtract,
- Operator.ArXiv,
-];
-
export function RagNode({
id,
data,
@@ -23,7 +16,6 @@ export function RagNode({
selected,
}: NodeProps) {
const style = operatorMap[data.label as Operator];
- const { t } = useTranslate('flow');
return (
@@ -51,12 +43,7 @@ export function RagNode({
id="b"
>
- x === data.label) ? 0 : 6}
- >
+
diff --git a/web/src/pages/flow/canvas/node/note-node.tsx b/web/src/pages/flow/canvas/node/note-node.tsx
new file mode 100644
index 000000000..1686255e0
--- /dev/null
+++ b/web/src/pages/flow/canvas/node/note-node.tsx
@@ -0,0 +1,46 @@
+import { Flex, Form, Input, Space } from 'antd';
+import { NodeProps } from 'reactflow';
+import { NodeData } from '../../interface';
+import NodeDropdown from './dropdown';
+
+import SvgIcon from '@/components/svg-icon';
+import { useEffect } from 'react';
+import { useTranslation } from 'react-i18next';
+import { useHandleFormValuesChange } from '../../hooks';
+import styles from './index.less';
+
+const { TextArea } = Input;
+
+function NoteNode({ data, id }: NodeProps) {
+ const { t } = useTranslation();
+ const [form] = Form.useForm();
+
+ const { handleValuesChange } = useHandleFormValuesChange(id);
+
+ useEffect(() => {
+ form.setFieldsValue(data?.form);
+ }, [form, data?.form]);
+
+ return (
+
+
+
+
+ {t('flow.note')}
+
+
+
+
+
+
+
+
+ );
+}
+
+export default NoteNode;
diff --git a/web/src/pages/flow/constant.tsx b/web/src/pages/flow/constant.tsx
index 88487a895..9003f50b6 100644
--- a/web/src/pages/flow/constant.tsx
+++ b/web/src/pages/flow/constant.tsx
@@ -12,6 +12,7 @@ import { ReactComponent as GoogleScholarIcon } from '@/assets/svg/google-scholar
import { ReactComponent as GoogleIcon } from '@/assets/svg/google.svg';
import { ReactComponent as Jin10Icon } from '@/assets/svg/jin10.svg';
import { ReactComponent as KeywordIcon } from '@/assets/svg/keyword.svg';
+import { ReactComponent as NoteIcon } from '@/assets/svg/note.svg';
import { ReactComponent as PubMedIcon } from '@/assets/svg/pubmed.svg';
import { ReactComponent as QWeatherIcon } from '@/assets/svg/qweather.svg';
import { ReactComponent as SwitchIcon } from '@/assets/svg/switch.svg';
@@ -71,6 +72,7 @@ export enum Operator {
Jin10 = 'Jin10',
Concentrator = 'Concentrator',
TuShare = 'TuShare',
+ Note = 'Note',
}
export const operatorIconMap = {
@@ -103,6 +105,7 @@ export const operatorIconMap = {
[Operator.Jin10]: Jin10Icon,
[Operator.Concentrator]: ConcentratorIcon,
[Operator.TuShare]: TuShareIcon,
+ [Operator.Note]: NoteIcon,
};
export const operatorMap: Record<
@@ -225,6 +228,7 @@ export const operatorMap: Record<
iconFontSize: 16,
},
[Operator.TuShare]: { backgroundColor: '#f8cfa0' },
+ [Operator.Note]: { backgroundColor: '#f8cfa0' },
};
export const componentMenuList = [
@@ -258,6 +262,9 @@ export const componentMenuList = [
{
name: Operator.Concentrator,
},
+ {
+ name: Operator.Note,
+ },
{
name: Operator.DuckDuckGo,
},
@@ -480,6 +487,10 @@ export const initialTuShareValues = {
start_date: '2024-01-01 09:00:00',
};
+export const initialNoteValues = {
+ text: '',
+};
+
export const CategorizeAnchorPointPositions = [
{ top: 1, right: 34 },
{ top: 8, right: 18 },
@@ -588,6 +599,7 @@ export const NodeMap = {
[Operator.YahooFinance]: 'ragNode',
[Operator.Jin10]: 'ragNode',
[Operator.TuShare]: 'ragNode',
+ [Operator.Note]: 'noteNode',
};
export const LanguageOptions = [
diff --git a/web/src/pages/flow/flow-drawer/index.tsx b/web/src/pages/flow/flow-drawer/index.tsx
index f5d67ff4f..c481405e9 100644
--- a/web/src/pages/flow/flow-drawer/index.tsx
+++ b/web/src/pages/flow/flow-drawer/index.tsx
@@ -3,38 +3,38 @@ import { IModalProps } from '@/interfaces/common';
import { Drawer, Flex, Form, Input } from 'antd';
import { useEffect } from 'react';
import { Node } from 'reactflow';
-import AkShareForm from '../akshare-form';
-import AnswerForm from '../answer-form';
-import ArXivForm from '../arxiv-form';
-import BaiduFanyiForm from '../baidu-fanyi-form';
-import BaiduForm from '../baidu-form';
-import BeginForm from '../begin-form';
-import BingForm from '../bing-form';
-import CategorizeForm from '../categorize-form';
import { Operator } from '../constant';
-import DeepLForm from '../deepl-form';
-import DuckDuckGoForm from '../duckduckgo-form';
-import ExeSQLForm from '../exesql-form';
-import GenerateForm from '../generate-form';
-import GithubForm from '../github-form';
-import GoogleForm from '../google-form';
-import GoogleScholarForm from '../google-scholar-form';
+import AkShareForm from '../form/akshare-form';
+import AnswerForm from '../form/answer-form';
+import ArXivForm from '../form/arxiv-form';
+import BaiduFanyiForm from '../form/baidu-fanyi-form';
+import BaiduForm from '../form/baidu-form';
+import BeginForm from '../form/begin-form';
+import BingForm from '../form/bing-form';
+import CategorizeForm from '../form/categorize-form';
+import DeepLForm from '../form/deepl-form';
+import DuckDuckGoForm from '../form/duckduckgo-form';
+import ExeSQLForm from '../form/exesql-form';
+import GenerateForm from '../form/generate-form';
+import GithubForm from '../form/github-form';
+import GoogleForm from '../form/google-form';
+import GoogleScholarForm from '../form/google-scholar-form';
+import Jin10Form from '../form/jin10-form';
+import KeywordExtractForm from '../form/keyword-extract-form';
+import MessageForm from '../form/message-form';
+import PubMedForm from '../form/pubmed-form';
+import QWeatherForm from '../form/qweather-form';
+import RelevantForm from '../form/relevant-form';
+import RetrievalForm from '../form/retrieval-form';
+import RewriteQuestionForm from '../form/rewrite-question-form';
+import SwitchForm from '../form/switch-form';
+import TuShareForm from '../form/tushare-form';
+import WenCaiForm from '../form/wencai-form';
+import WikipediaForm from '../form/wikipedia-form';
+import YahooFinanceForm from '../form/yahoo-finance-form';
import { useHandleFormValuesChange, useHandleNodeNameChange } from '../hooks';
-import KeywordExtractForm from '../keyword-extract-form';
-import MessageForm from '../message-form';
import OperatorIcon from '../operator-icon';
-import PubMedForm from '../pubmed-form';
-import QWeatherForm from '../qweather-form';
-import RelevantForm from '../relevant-form';
-import RetrievalForm from '../retrieval-form';
-import RewriteQuestionForm from '../rewrite-question-form';
-import SwitchForm from '../switch-form';
-import TuShareForm from '../tushare-form';
-import WenCaiForm from '../wencai-form';
-import WikipediaForm from '../wikipedia-form';
-import Jin10Form from '../jin10-form';
-import YahooFinanceForm from '../yahoo-finance-form';
import styles from './index.less';
interface IProps {
diff --git a/web/src/pages/flow/flow-sider/index.tsx b/web/src/pages/flow/flow-sider/index.tsx
index bd2deb680..58faed848 100644
--- a/web/src/pages/flow/flow-sider/index.tsx
+++ b/web/src/pages/flow/flow-sider/index.tsx
@@ -15,6 +15,14 @@ interface IProps {
collapsed: boolean;
}
+const dividerProps = {
+ marginTop: 10,
+ marginBottom: 10,
+ padding: 0,
+ borderBlockColor: '#b4afaf',
+ borderStyle: 'dotted',
+};
+
const FlowSide = ({ setCollapsed, collapsed }: IProps) => {
const { handleDragStart } = useHandleDrag();
const { t } = useTranslate('flow');
@@ -31,16 +39,11 @@ const FlowSide = ({ setCollapsed, collapsed }: IProps) => {
{componentMenuList.map((x) => {
return (
+ {x.name === Operator.Note && (
+
+ )}
{x.name === Operator.DuckDuckGo && (
-
+
)}
{
return (
diff --git a/web/src/pages/flow/answer-form/index.tsx b/web/src/pages/flow/form/answer-form/index.tsx
similarity index 100%
rename from web/src/pages/flow/answer-form/index.tsx
rename to web/src/pages/flow/form/answer-form/index.tsx
diff --git a/web/src/pages/flow/arxiv-form/index.tsx b/web/src/pages/flow/form/arxiv-form/index.tsx
similarity index 94%
rename from web/src/pages/flow/arxiv-form/index.tsx
rename to web/src/pages/flow/form/arxiv-form/index.tsx
index 49355a9a4..23136f893 100644
--- a/web/src/pages/flow/arxiv-form/index.tsx
+++ b/web/src/pages/flow/form/arxiv-form/index.tsx
@@ -2,7 +2,7 @@ import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Select } from 'antd';
import { useMemo } from 'react';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
const ArXivForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/baidu-fanyi-form/index.tsx b/web/src/pages/flow/form/baidu-fanyi-form/index.tsx
similarity index 96%
rename from web/src/pages/flow/baidu-fanyi-form/index.tsx
rename to web/src/pages/flow/form/baidu-fanyi-form/index.tsx
index 2148c0bc8..bba9d9233 100644
--- a/web/src/pages/flow/baidu-fanyi-form/index.tsx
+++ b/web/src/pages/flow/form/baidu-fanyi-form/index.tsx
@@ -4,8 +4,8 @@ import { useMemo } from 'react';
import {
BaiduFanyiDomainOptions,
BaiduFanyiSourceLangOptions,
-} from '../constant';
-import { IOperatorForm } from '../interface';
+} from '../../constant';
+import { IOperatorForm } from '../../interface';
const BaiduFanyiForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/baidu-form/index.tsx b/web/src/pages/flow/form/baidu-form/index.tsx
similarity index 89%
rename from web/src/pages/flow/baidu-form/index.tsx
rename to web/src/pages/flow/form/baidu-form/index.tsx
index 36f9df9df..b3a789ba1 100644
--- a/web/src/pages/flow/baidu-form/index.tsx
+++ b/web/src/pages/flow/form/baidu-form/index.tsx
@@ -1,6 +1,6 @@
import TopNItem from '@/components/top-n-item';
import { Form } from 'antd';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
const BaiduForm = ({ onValuesChange, form }: IOperatorForm) => {
return (
diff --git a/web/src/pages/flow/begin-form/index.tsx b/web/src/pages/flow/form/begin-form/index.tsx
similarity index 93%
rename from web/src/pages/flow/begin-form/index.tsx
rename to web/src/pages/flow/form/begin-form/index.tsx
index ebc1789e4..dbb852707 100644
--- a/web/src/pages/flow/begin-form/index.tsx
+++ b/web/src/pages/flow/form/begin-form/index.tsx
@@ -1,6 +1,6 @@
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Input } from 'antd';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
type FieldType = {
prologue?: string;
diff --git a/web/src/pages/flow/bing-form/index.tsx b/web/src/pages/flow/form/bing-form/index.tsx
similarity index 90%
rename from web/src/pages/flow/bing-form/index.tsx
rename to web/src/pages/flow/form/bing-form/index.tsx
index f18f8b0b1..879e68f7b 100644
--- a/web/src/pages/flow/bing-form/index.tsx
+++ b/web/src/pages/flow/form/bing-form/index.tsx
@@ -2,8 +2,8 @@ import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Input, Select } from 'antd';
import { useMemo } from 'react';
-import { BingCountryOptions, BingLanguageOptions } from '../constant';
-import { IOperatorForm } from '../interface';
+import { BingCountryOptions, BingLanguageOptions } from '../../constant';
+import { IOperatorForm } from '../../interface';
const BingForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/categorize-form/dynamic-categorize.tsx b/web/src/pages/flow/form/categorize-form/dynamic-categorize.tsx
similarity index 98%
rename from web/src/pages/flow/categorize-form/dynamic-categorize.tsx
rename to web/src/pages/flow/form/categorize-form/dynamic-categorize.tsx
index dea244160..cf8784f95 100644
--- a/web/src/pages/flow/categorize-form/dynamic-categorize.tsx
+++ b/web/src/pages/flow/form/categorize-form/dynamic-categorize.tsx
@@ -12,8 +12,8 @@ import {
useState,
} from 'react';
import { useUpdateNodeInternals } from 'reactflow';
-import { Operator } from '../constant';
-import { useBuildFormSelectOptions } from '../form-hooks';
+import { Operator } from '../../constant';
+import { useBuildFormSelectOptions } from '../../form-hooks';
interface IProps {
nodeId?: string;
diff --git a/web/src/pages/flow/categorize-form/hooks.ts b/web/src/pages/flow/form/categorize-form/hooks.ts
similarity index 97%
rename from web/src/pages/flow/categorize-form/hooks.ts
rename to web/src/pages/flow/form/categorize-form/hooks.ts
index 1a8cc0a4a..2de4c876c 100644
--- a/web/src/pages/flow/categorize-form/hooks.ts
+++ b/web/src/pages/flow/form/categorize-form/hooks.ts
@@ -5,8 +5,8 @@ import {
ICategorizeItem,
ICategorizeItemResult,
IOperatorForm,
-} from '../interface';
-import useGraphStore from '../store';
+} from '../../interface';
+import useGraphStore from '../../store';
/**
* convert the following object into a list
diff --git a/web/src/pages/flow/categorize-form/index.tsx b/web/src/pages/flow/form/categorize-form/index.tsx
similarity index 91%
rename from web/src/pages/flow/categorize-form/index.tsx
rename to web/src/pages/flow/form/categorize-form/index.tsx
index 4eea06aeb..a1ac944dc 100644
--- a/web/src/pages/flow/categorize-form/index.tsx
+++ b/web/src/pages/flow/form/categorize-form/index.tsx
@@ -1,8 +1,8 @@
import LLMSelect from '@/components/llm-select';
import { useTranslate } from '@/hooks/common-hooks';
import { Form } from 'antd';
-import { useSetLlmSetting } from '../hooks';
-import { IOperatorForm } from '../interface';
+import { useSetLlmSetting } from '../../hooks';
+import { IOperatorForm } from '../../interface';
import DynamicCategorize from './dynamic-categorize';
import { useHandleFormValuesChange } from './hooks';
diff --git a/web/src/pages/flow/concentrator-form/index.tsx b/web/src/pages/flow/form/concentrator-form/index.tsx
similarity index 87%
rename from web/src/pages/flow/concentrator-form/index.tsx
rename to web/src/pages/flow/form/concentrator-form/index.tsx
index 0e90760ca..d409f3099 100644
--- a/web/src/pages/flow/concentrator-form/index.tsx
+++ b/web/src/pages/flow/form/concentrator-form/index.tsx
@@ -1,5 +1,5 @@
import { Form } from 'antd';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
const ConcentratorForm = ({ onValuesChange, form }: IOperatorForm) => {
return (
diff --git a/web/src/pages/flow/deepl-form/index.tsx b/web/src/pages/flow/form/deepl-form/index.tsx
similarity index 89%
rename from web/src/pages/flow/deepl-form/index.tsx
rename to web/src/pages/flow/form/deepl-form/index.tsx
index cb3400deb..b11cf4a7c 100644
--- a/web/src/pages/flow/deepl-form/index.tsx
+++ b/web/src/pages/flow/form/deepl-form/index.tsx
@@ -1,9 +1,9 @@
import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Select } from 'antd';
-import { DeepLSourceLangOptions, DeepLTargetLangOptions } from '../constant';
-import { useBuildSortOptions } from '../form-hooks';
-import { IOperatorForm } from '../interface';
+import { DeepLSourceLangOptions, DeepLTargetLangOptions } from '../../constant';
+import { useBuildSortOptions } from '../../form-hooks';
+import { IOperatorForm } from '../../interface';
const DeepLForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/duckduckgo-form/index.tsx b/web/src/pages/flow/form/duckduckgo-form/index.tsx
similarity index 90%
rename from web/src/pages/flow/duckduckgo-form/index.tsx
rename to web/src/pages/flow/form/duckduckgo-form/index.tsx
index 9238b9603..bf79951cc 100644
--- a/web/src/pages/flow/duckduckgo-form/index.tsx
+++ b/web/src/pages/flow/form/duckduckgo-form/index.tsx
@@ -2,8 +2,8 @@ import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Select } from 'antd';
import { useMemo } from 'react';
-import { Channel } from '../constant';
-import { IOperatorForm } from '../interface';
+import { Channel } from '../../constant';
+import { IOperatorForm } from '../../interface';
const DuckDuckGoForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/exesql-form/index.tsx b/web/src/pages/flow/form/exesql-form/index.tsx
similarity index 95%
rename from web/src/pages/flow/exesql-form/index.tsx
rename to web/src/pages/flow/form/exesql-form/index.tsx
index 8171fe4e6..767a774b3 100644
--- a/web/src/pages/flow/exesql-form/index.tsx
+++ b/web/src/pages/flow/form/exesql-form/index.tsx
@@ -3,8 +3,8 @@ import { useTranslate } from '@/hooks/common-hooks';
import { useTestDbConnect } from '@/hooks/flow-hooks';
import { Button, Flex, Form, Input, InputNumber, Select } from 'antd';
import { useCallback } from 'react';
-import { ExeSQLOptions } from '../constant';
-import { IOperatorForm } from '../interface';
+import { ExeSQLOptions } from '../../constant';
+import { IOperatorForm } from '../../interface';
const ExeSQLForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/generate-form/dynamic-parameters.tsx b/web/src/pages/flow/form/generate-form/dynamic-parameters.tsx
similarity index 94%
rename from web/src/pages/flow/generate-form/dynamic-parameters.tsx
rename to web/src/pages/flow/form/generate-form/dynamic-parameters.tsx
index 4e84849e6..d23dcc063 100644
--- a/web/src/pages/flow/generate-form/dynamic-parameters.tsx
+++ b/web/src/pages/flow/form/generate-form/dynamic-parameters.tsx
@@ -2,9 +2,9 @@ import { EditableCell, EditableRow } from '@/components/editable-cell';
import { useTranslate } from '@/hooks/common-hooks';
import { DeleteOutlined } from '@ant-design/icons';
import { Button, Flex, Select, Table, TableProps } from 'antd';
-import { IGenerateParameter } from '../interface';
+import { IGenerateParameter } from '../../interface';
-import { useBuildComponentIdSelectOptions } from '../hooks';
+import { useBuildComponentIdSelectOptions } from '../../hooks';
import { useHandleOperateParameters } from './hooks';
import styles from './index.less';
diff --git a/web/src/pages/flow/generate-form/hooks.ts b/web/src/pages/flow/form/generate-form/hooks.ts
similarity index 95%
rename from web/src/pages/flow/generate-form/hooks.ts
rename to web/src/pages/flow/form/generate-form/hooks.ts
index e8a5c305a..8aa179cf9 100644
--- a/web/src/pages/flow/generate-form/hooks.ts
+++ b/web/src/pages/flow/form/generate-form/hooks.ts
@@ -1,8 +1,8 @@
import get from 'lodash/get';
import { useCallback, useMemo } from 'react';
import { v4 as uuid } from 'uuid';
-import { IGenerateParameter } from '../interface';
-import useGraphStore from '../store';
+import { IGenerateParameter } from '../../interface';
+import useGraphStore from '../../store';
export const useHandleOperateParameters = (nodeId: string) => {
const { getNode, updateNodeForm } = useGraphStore((state) => state);
diff --git a/web/src/pages/flow/generate-form/index.less b/web/src/pages/flow/form/generate-form/index.less
similarity index 100%
rename from web/src/pages/flow/generate-form/index.less
rename to web/src/pages/flow/form/generate-form/index.less
diff --git a/web/src/pages/flow/generate-form/index.tsx b/web/src/pages/flow/form/generate-form/index.tsx
similarity index 94%
rename from web/src/pages/flow/generate-form/index.tsx
rename to web/src/pages/flow/form/generate-form/index.tsx
index 14b665728..483c3cce8 100644
--- a/web/src/pages/flow/generate-form/index.tsx
+++ b/web/src/pages/flow/form/generate-form/index.tsx
@@ -1,8 +1,8 @@
import LLMSelect from '@/components/llm-select';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Input, InputNumber, Switch } from 'antd';
-import { useSetLlmSetting } from '../hooks';
-import { IOperatorForm } from '../interface';
+import { useSetLlmSetting } from '../../hooks';
+import { IOperatorForm } from '../../interface';
import DynamicParameters from './dynamic-parameters';
const GenerateForm = ({ onValuesChange, form, node }: IOperatorForm) => {
diff --git a/web/src/pages/flow/github-form/index.tsx b/web/src/pages/flow/form/github-form/index.tsx
similarity index 89%
rename from web/src/pages/flow/github-form/index.tsx
rename to web/src/pages/flow/form/github-form/index.tsx
index 4898f816a..e7109f991 100644
--- a/web/src/pages/flow/github-form/index.tsx
+++ b/web/src/pages/flow/form/github-form/index.tsx
@@ -1,6 +1,6 @@
import TopNItem from '@/components/top-n-item';
import { Form } from 'antd';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
const GithubForm = ({ onValuesChange, form }: IOperatorForm) => {
return (
diff --git a/web/src/pages/flow/google-form/index.tsx b/web/src/pages/flow/form/google-form/index.tsx
similarity index 93%
rename from web/src/pages/flow/google-form/index.tsx
rename to web/src/pages/flow/form/google-form/index.tsx
index 807b690c7..27ed2ec5e 100644
--- a/web/src/pages/flow/google-form/index.tsx
+++ b/web/src/pages/flow/form/google-form/index.tsx
@@ -1,8 +1,8 @@
import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Input, Select } from 'antd';
-import { GoogleCountryOptions, GoogleLanguageOptions } from '../constant';
-import { IOperatorForm } from '../interface';
+import { GoogleCountryOptions, GoogleLanguageOptions } from '../../constant';
+import { IOperatorForm } from '../../interface';
const GoogleForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/google-scholar-form/index.tsx b/web/src/pages/flow/form/google-scholar-form/index.tsx
similarity index 94%
rename from web/src/pages/flow/google-scholar-form/index.tsx
rename to web/src/pages/flow/form/google-scholar-form/index.tsx
index 5ee4236f7..030571b1a 100644
--- a/web/src/pages/flow/google-scholar-form/index.tsx
+++ b/web/src/pages/flow/form/google-scholar-form/index.tsx
@@ -3,8 +3,8 @@ import { useTranslate } from '@/hooks/common-hooks';
import { DatePicker, DatePickerProps, Form, Select, Switch } from 'antd';
import dayjs from 'dayjs';
import { useCallback, useMemo } from 'react';
-import { useBuildSortOptions } from '../form-hooks';
-import { IOperatorForm } from '../interface';
+import { useBuildSortOptions } from '../../form-hooks';
+import { IOperatorForm } from '../../interface';
const YearPicker = ({
onChange,
diff --git a/web/src/pages/flow/jin10-form/index.tsx b/web/src/pages/flow/form/jin10-form/index.tsx
similarity index 98%
rename from web/src/pages/flow/jin10-form/index.tsx
rename to web/src/pages/flow/form/jin10-form/index.tsx
index 2db32b0cf..4e39c8bab 100644
--- a/web/src/pages/flow/jin10-form/index.tsx
+++ b/web/src/pages/flow/form/jin10-form/index.tsx
@@ -8,8 +8,8 @@ import {
Jin10SymbolsDatatypeOptions,
Jin10SymbolsTypeOptions,
Jin10TypeOptions,
-} from '../constant';
-import { IOperatorForm } from '../interface';
+} from '../../constant';
+import { IOperatorForm } from '../../interface';
const Jin10Form = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/keyword-extract-form/index.tsx b/web/src/pages/flow/form/keyword-extract-form/index.tsx
similarity index 89%
rename from web/src/pages/flow/keyword-extract-form/index.tsx
rename to web/src/pages/flow/form/keyword-extract-form/index.tsx
index e1ba65548..c88612c54 100644
--- a/web/src/pages/flow/keyword-extract-form/index.tsx
+++ b/web/src/pages/flow/form/keyword-extract-form/index.tsx
@@ -2,8 +2,8 @@ import LLMSelect from '@/components/llm-select';
import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form } from 'antd';
-import { useSetLlmSetting } from '../hooks';
-import { IOperatorForm } from '../interface';
+import { useSetLlmSetting } from '../../hooks';
+import { IOperatorForm } from '../../interface';
const KeywordExtractForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/message-form/index.less b/web/src/pages/flow/form/message-form/index.less
similarity index 100%
rename from web/src/pages/flow/message-form/index.less
rename to web/src/pages/flow/form/message-form/index.less
diff --git a/web/src/pages/flow/message-form/index.tsx b/web/src/pages/flow/form/message-form/index.tsx
similarity index 97%
rename from web/src/pages/flow/message-form/index.tsx
rename to web/src/pages/flow/form/message-form/index.tsx
index 48b85f419..6040b929d 100644
--- a/web/src/pages/flow/message-form/index.tsx
+++ b/web/src/pages/flow/form/message-form/index.tsx
@@ -1,7 +1,7 @@
import { useTranslate } from '@/hooks/common-hooks';
import { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Form, Input } from 'antd';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
import styles from './index.less';
diff --git a/web/src/pages/flow/pubmed-form/index.tsx b/web/src/pages/flow/form/pubmed-form/index.tsx
similarity index 93%
rename from web/src/pages/flow/pubmed-form/index.tsx
rename to web/src/pages/flow/form/pubmed-form/index.tsx
index fd8cad2e6..537be34b6 100644
--- a/web/src/pages/flow/pubmed-form/index.tsx
+++ b/web/src/pages/flow/form/pubmed-form/index.tsx
@@ -1,7 +1,7 @@
import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Input } from 'antd';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
const PubMedForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/qweather-form/index.tsx b/web/src/pages/flow/form/qweather-form/index.tsx
similarity index 97%
rename from web/src/pages/flow/qweather-form/index.tsx
rename to web/src/pages/flow/form/qweather-form/index.tsx
index fbbc51f90..7f2a90557 100644
--- a/web/src/pages/flow/qweather-form/index.tsx
+++ b/web/src/pages/flow/form/qweather-form/index.tsx
@@ -6,8 +6,8 @@ import {
QWeatherTimePeriodOptions,
QWeatherTypeOptions,
QWeatherUserTypeOptions,
-} from '../constant';
-import { IOperatorForm } from '../interface';
+} from '../../constant';
+import { IOperatorForm } from '../../interface';
const QWeatherForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/relevant-form/hooks.ts b/web/src/pages/flow/form/relevant-form/hooks.ts
similarity index 94%
rename from web/src/pages/flow/relevant-form/hooks.ts
rename to web/src/pages/flow/form/relevant-form/hooks.ts
index 815b9701a..6ccbfff08 100644
--- a/web/src/pages/flow/relevant-form/hooks.ts
+++ b/web/src/pages/flow/form/relevant-form/hooks.ts
@@ -1,8 +1,8 @@
import pick from 'lodash/pick';
import { useCallback, useEffect } from 'react';
import { Edge } from 'reactflow';
-import { IOperatorForm } from '../interface';
-import useGraphStore from '../store';
+import { IOperatorForm } from '../../interface';
+import useGraphStore from '../../store';
export const useBuildRelevantOptions = () => {
const nodes = useGraphStore((state) => state.nodes);
diff --git a/web/src/pages/flow/relevant-form/index.tsx b/web/src/pages/flow/form/relevant-form/index.tsx
similarity index 86%
rename from web/src/pages/flow/relevant-form/index.tsx
rename to web/src/pages/flow/form/relevant-form/index.tsx
index 87eba1e45..92ae5498c 100644
--- a/web/src/pages/flow/relevant-form/index.tsx
+++ b/web/src/pages/flow/form/relevant-form/index.tsx
@@ -1,10 +1,10 @@
import LLMSelect from '@/components/llm-select';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Select } from 'antd';
-import { Operator } from '../constant';
-import { useBuildFormSelectOptions } from '../form-hooks';
-import { useSetLlmSetting } from '../hooks';
-import { IOperatorForm } from '../interface';
+import { Operator } from '../../constant';
+import { useBuildFormSelectOptions } from '../../form-hooks';
+import { useSetLlmSetting } from '../../hooks';
+import { IOperatorForm } from '../../interface';
import { useWatchConnectionChanges } from './hooks';
const RelevantForm = ({ onValuesChange, form, node }: IOperatorForm) => {
diff --git a/web/src/pages/flow/retrieval-form/index.tsx b/web/src/pages/flow/form/retrieval-form/index.tsx
similarity index 96%
rename from web/src/pages/flow/retrieval-form/index.tsx
rename to web/src/pages/flow/form/retrieval-form/index.tsx
index b62572fdc..8ee93888c 100644
--- a/web/src/pages/flow/retrieval-form/index.tsx
+++ b/web/src/pages/flow/form/retrieval-form/index.tsx
@@ -5,7 +5,7 @@ import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import type { FormProps } from 'antd';
import { Form, Input } from 'antd';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
type FieldType = {
top_n?: number;
diff --git a/web/src/pages/flow/rewrite-question-form/index.tsx b/web/src/pages/flow/form/rewrite-question-form/index.tsx
similarity index 90%
rename from web/src/pages/flow/rewrite-question-form/index.tsx
rename to web/src/pages/flow/form/rewrite-question-form/index.tsx
index 1f29c853a..cbf5f27f0 100644
--- a/web/src/pages/flow/rewrite-question-form/index.tsx
+++ b/web/src/pages/flow/form/rewrite-question-form/index.tsx
@@ -1,8 +1,8 @@
import LLMSelect from '@/components/llm-select';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, InputNumber } from 'antd';
-import { useSetLlmSetting } from '../hooks';
-import { IOperatorForm } from '../interface';
+import { useSetLlmSetting } from '../../hooks';
+import { IOperatorForm } from '../../interface';
const RewriteQuestionForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('chat');
diff --git a/web/src/pages/flow/switch-form/index.tsx b/web/src/pages/flow/form/switch-form/index.tsx
similarity index 95%
rename from web/src/pages/flow/switch-form/index.tsx
rename to web/src/pages/flow/form/switch-form/index.tsx
index c3f772bfd..dfc089b6c 100644
--- a/web/src/pages/flow/switch-form/index.tsx
+++ b/web/src/pages/flow/form/switch-form/index.tsx
@@ -7,11 +7,11 @@ import {
SwitchElseTo,
SwitchLogicOperatorOptions,
SwitchOperatorOptions,
-} from '../constant';
-import { useBuildFormSelectOptions } from '../form-hooks';
-import { useBuildComponentIdSelectOptions } from '../hooks';
-import { IOperatorForm, ISwitchForm } from '../interface';
-import { getOtherFieldValues } from '../utils';
+} from '../../constant';
+import { useBuildFormSelectOptions } from '../../form-hooks';
+import { useBuildComponentIdSelectOptions } from '../../hooks';
+import { IOperatorForm, ISwitchForm } from '../../interface';
+import { getOtherFieldValues } from '../../utils';
const subLabelCol = {
span: 11,
diff --git a/web/src/pages/flow/tushare-form/index.tsx b/web/src/pages/flow/form/tushare-form/index.tsx
similarity index 95%
rename from web/src/pages/flow/tushare-form/index.tsx
rename to web/src/pages/flow/form/tushare-form/index.tsx
index 4831ad3d2..6a71df63a 100644
--- a/web/src/pages/flow/tushare-form/index.tsx
+++ b/web/src/pages/flow/form/tushare-form/index.tsx
@@ -2,8 +2,8 @@ import { useTranslate } from '@/hooks/common-hooks';
import { DatePicker, DatePickerProps, Form, Input, Select } from 'antd';
import dayjs from 'dayjs';
import { useCallback, useMemo } from 'react';
-import { TuShareSrcOptions } from '../constant';
-import { IOperatorForm } from '../interface';
+import { TuShareSrcOptions } from '../../constant';
+import { IOperatorForm } from '../../interface';
const DateTimePicker = ({
onChange,
diff --git a/web/src/pages/flow/wencai-form/index.tsx b/web/src/pages/flow/form/wencai-form/index.tsx
similarity index 89%
rename from web/src/pages/flow/wencai-form/index.tsx
rename to web/src/pages/flow/form/wencai-form/index.tsx
index 148429842..1b0df49c9 100644
--- a/web/src/pages/flow/wencai-form/index.tsx
+++ b/web/src/pages/flow/form/wencai-form/index.tsx
@@ -2,8 +2,8 @@ import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Select } from 'antd';
import { useMemo } from 'react';
-import { WenCaiQueryTypeOptions } from '../constant';
-import { IOperatorForm } from '../interface';
+import { WenCaiQueryTypeOptions } from '../../constant';
+import { IOperatorForm } from '../../interface';
const WenCaiForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/wikipedia-form/index.tsx b/web/src/pages/flow/form/wikipedia-form/index.tsx
similarity index 87%
rename from web/src/pages/flow/wikipedia-form/index.tsx
rename to web/src/pages/flow/form/wikipedia-form/index.tsx
index 8a388c6ba..1c4f7fa60 100644
--- a/web/src/pages/flow/wikipedia-form/index.tsx
+++ b/web/src/pages/flow/form/wikipedia-form/index.tsx
@@ -1,8 +1,8 @@
import TopNItem from '@/components/top-n-item';
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Select } from 'antd';
-import { LanguageOptions } from '../constant';
-import { IOperatorForm } from '../interface';
+import { LanguageOptions } from '../../constant';
+import { IOperatorForm } from '../../interface';
const WikipediaForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('common');
diff --git a/web/src/pages/flow/yahoo-finance-form/index.tsx b/web/src/pages/flow/form/yahoo-finance-form/index.tsx
similarity index 95%
rename from web/src/pages/flow/yahoo-finance-form/index.tsx
rename to web/src/pages/flow/form/yahoo-finance-form/index.tsx
index 59b125f50..2f8a61d5e 100644
--- a/web/src/pages/flow/yahoo-finance-form/index.tsx
+++ b/web/src/pages/flow/form/yahoo-finance-form/index.tsx
@@ -1,6 +1,6 @@
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Switch } from 'antd';
-import { IOperatorForm } from '../interface';
+import { IOperatorForm } from '../../interface';
const YahooFinanceForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
diff --git a/web/src/pages/flow/hooks.ts b/web/src/pages/flow/hooks.ts
index 4abcc161b..8c6e7e099 100644
--- a/web/src/pages/flow/hooks.ts
+++ b/web/src/pages/flow/hooks.ts
@@ -49,6 +49,7 @@ import {
initialJin10Values,
initialKeywordExtractValues,
initialMessageValues,
+ initialNoteValues,
initialPubMedValues,
initialQWeatherValues,
initialRelevantValues,
@@ -125,6 +126,7 @@ export const useInitializeOperatorParams = () => {
[Operator.Jin10]: initialJin10Values,
[Operator.Concentrator]: initialConcentratorValues,
[Operator.TuShare]: initialTuShareValues,
+ [Operator.Note]: initialNoteValues,
};
}, [llmId]);
diff --git a/web/src/pages/flow/utils.ts b/web/src/pages/flow/utils.ts
index 86b605423..255e75b6b 100644
--- a/web/src/pages/flow/utils.ts
+++ b/web/src/pages/flow/utils.ts
@@ -122,21 +122,23 @@ export const buildDslComponentsByGraph = (
): DSLComponents => {
const components: DSLComponents = {};
- nodes.forEach((x) => {
- const id = x.id;
- const operatorName = x.data.label;
- components[id] = {
- obj: {
- component_name: operatorName,
- params:
- buildOperatorParams(operatorName)(
- x.data.form as Record,
- ) ?? {},
- },
- downstream: buildComponentDownstreamOrUpstream(edges, id, true),
- upstream: buildComponentDownstreamOrUpstream(edges, id, false),
- };
- });
+ nodes
+ .filter((x) => x.data.label !== Operator.Note)
+ .forEach((x) => {
+ const id = x.id;
+ const operatorName = x.data.label;
+ components[id] = {
+ obj: {
+ component_name: operatorName,
+ params:
+ buildOperatorParams(operatorName)(
+ x.data.form as Record,
+ ) ?? {},
+ },
+ downstream: buildComponentDownstreamOrUpstream(edges, id, true),
+ upstream: buildComponentDownstreamOrUpstream(edges, id, false),
+ };
+ });
return components;
};