diff --git a/web/src/pages/flow/canvas/index.tsx b/web/src/pages/flow/canvas/index.tsx
index dc1d475796..0d11aa8b9a 100644
--- a/web/src/pages/flow/canvas/index.tsx
+++ b/web/src/pages/flow/canvas/index.tsx
@@ -78,6 +78,9 @@ function FlowCanvas({ sideWidth }: IProps) {
onKeyUp={handleKeyUp}
onSelectionChange={onSelectionChange}
nodeOrigin={[0.5, 0]}
+ onChange={(...params) => {
+ console.info('params:', ...params);
+ }}
defaultEdgeOptions={{
type: 'buttonEdge',
markerEnd: {
diff --git a/web/src/pages/flow/chat/drawer.tsx b/web/src/pages/flow/chat/drawer.tsx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/web/src/pages/flow/constant.ts b/web/src/pages/flow/constant.tsx
similarity index 73%
rename from web/src/pages/flow/constant.ts
rename to web/src/pages/flow/constant.tsx
index 0f29c775f4..ccd42b6c0e 100644
--- a/web/src/pages/flow/constant.ts
+++ b/web/src/pages/flow/constant.tsx
@@ -1,3 +1,9 @@
+import {
+ MergeCellsOutlined,
+ RocketOutlined,
+ SendOutlined,
+} from '@ant-design/icons';
+
export enum Operator {
Begin = 'Begin',
Retrieval = 'Retrieval',
@@ -5,6 +11,12 @@ export enum Operator {
Answer = 'Answer',
}
+export const componentList = [
+ { name: Operator.Retrieval, icon: , description: '' },
+ { name: Operator.Generate, icon: , description: '' },
+ { name: Operator.Answer, icon: , description: '' },
+];
+
export const initialRetrievalValues = {
similarity_threshold: 0.2,
keywords_similarity_weight: 0.3,
diff --git a/web/src/pages/flow/flow-sider/index.tsx b/web/src/pages/flow/flow-sider/index.tsx
index e82043e9d0..4841964467 100644
--- a/web/src/pages/flow/flow-sider/index.tsx
+++ b/web/src/pages/flow/flow-sider/index.tsx
@@ -1,7 +1,7 @@
import { Avatar, Card, Flex, Layout, Space } from 'antd';
import classNames from 'classnames';
-import { componentList } from '../mock';
+import { componentList } from '../constant';
import { useHandleDrag } from '../hooks';
import styles from './index.less';
diff --git a/web/src/pages/flow/hooks.ts b/web/src/pages/flow/hooks.ts
index 81152d0ae2..d0bc528bd0 100644
--- a/web/src/pages/flow/hooks.ts
+++ b/web/src/pages/flow/hooks.ts
@@ -17,6 +17,7 @@ import React, {
import { Node, Position, ReactFlowInstance } from 'reactflow';
import { v4 as uuidv4 } from 'uuid';
// import { shallow } from 'zustand/shallow';
+import { useDebounceEffect } from 'ahooks';
import { useParams } from 'umi';
import useGraphStore, { RFState } from './store';
import { buildDslComponentsByGraph } from './utils';
@@ -154,11 +155,24 @@ export const useSaveGraph = () => {
return { saveGraph };
};
+export const useWatchGraphChange = () => {
+ const nodes = useGraphStore((state) => state.nodes);
+ const edges = useGraphStore((state) => state.edges);
+ useDebounceEffect(
+ () => {
+ console.info('useDebounceEffect');
+ },
+ [nodes, edges],
+ {
+ wait: 1000,
+ },
+ );
+};
+
export const useHandleFormValuesChange = (id?: string) => {
const updateNodeForm = useGraphStore((state) => state.updateNodeForm);
const handleValuesChange = useCallback(
(changedValues: any, values: any) => {
- console.info(changedValues, values);
if (id) {
updateNodeForm(id, values);
}
@@ -191,6 +205,8 @@ export const useFetchDataOnMount = () => {
setGraphInfo(data?.dsl?.graph ?? {});
}, [setGraphInfo, data?.dsl?.graph]);
+ useWatchGraphChange();
+
useFetchFlowTemplates();
useFetchLlmList();
diff --git a/web/src/pages/flow/mock.tsx b/web/src/pages/flow/mock.tsx
index d5ba5edce0..98be660047 100644
--- a/web/src/pages/flow/mock.tsx
+++ b/web/src/pages/flow/mock.tsx
@@ -1,11 +1,5 @@
-import { MergeCellsOutlined, RocketOutlined } from '@ant-design/icons';
import { Position } from 'reactflow';
-export const componentList = [
- { name: 'Retrieval', icon: , description: '' },
- { name: 'Generate', icon: , description: '' },
-];
-
export const initialNodes = [
{
sourcePosition: Position.Left,