balibabu
commited on
Commit
·
6dc139b
1
Parent(s):
55e7b7a
feat: Add component AkShare #1739 (#2390)
Browse files### What problem does this PR solve?
feat: Add component AkShare #1739
### Type of change
- [x] New Feature (non-breaking change which adds functionality)
- web/src/assets/svg/akshare.svg +847 -0
- web/src/assets/svg/wencai.svg +1 -1
- web/src/locales/en.ts +3 -0
- web/src/locales/zh-traditional.ts +2 -0
- web/src/locales/zh.ts +2 -0
- web/src/pages/flow/akshare-form/index.tsx +20 -0
- web/src/pages/flow/constant.tsx +11 -0
- web/src/pages/flow/flow-drawer/index.tsx +2 -0
- web/src/pages/flow/hooks.ts +2 -0
- web/src/pages/flow/wencai-form/index.tsx +1 -1
web/src/assets/svg/akshare.svg
ADDED
|
|
web/src/assets/svg/wencai.svg
CHANGED
|
|
|
|
web/src/locales/en.ts
CHANGED
|
@@ -892,6 +892,9 @@ The above is the content you need to summarize.`,
|
|
| 892 |
lccp: 'Financing',
|
| 893 |
foreign_exchange: 'Foreign currency',
|
| 894 |
},
|
|
|
|
|
|
|
|
|
|
| 895 |
},
|
| 896 |
footer: {
|
| 897 |
profile: 'All rights reserved @ React',
|
|
|
|
| 892 |
lccp: 'Financing',
|
| 893 |
foreign_exchange: 'Foreign currency',
|
| 894 |
},
|
| 895 |
+
akShare: 'AkShare',
|
| 896 |
+
akShareDescription:
|
| 897 |
+
'This component can be used to obtain news information for the corresponding stock from the Eastmoney website.',
|
| 898 |
},
|
| 899 |
footer: {
|
| 900 |
profile: 'All rights reserved @ React',
|
web/src/locales/zh-traditional.ts
CHANGED
|
@@ -846,6 +846,8 @@ export default {
|
|
| 846 |
lccp: '理財',
|
| 847 |
foreign_exchange: '股票',
|
| 848 |
},
|
|
|
|
|
|
|
| 849 |
},
|
| 850 |
footer: {
|
| 851 |
profile: '“保留所有權利 @ react”',
|
|
|
|
| 846 |
lccp: '理財',
|
| 847 |
foreign_exchange: '股票',
|
| 848 |
},
|
| 849 |
+
akShare: 'AkShare',
|
| 850 |
+
akShareDescription: '此組件可用於從東方財富網取得對應股票的新聞資訊。',
|
| 851 |
},
|
| 852 |
footer: {
|
| 853 |
profile: '“保留所有權利 @ react”',
|
web/src/locales/zh.ts
CHANGED
|
@@ -864,6 +864,8 @@ export default {
|
|
| 864 |
lccp: '理财',
|
| 865 |
foreign_exchange: '股票',
|
| 866 |
},
|
|
|
|
|
|
|
| 867 |
},
|
| 868 |
footer: {
|
| 869 |
profile: 'All rights reserved @ React',
|
|
|
|
| 864 |
lccp: '理财',
|
| 865 |
foreign_exchange: '股票',
|
| 866 |
},
|
| 867 |
+
akShare: 'AkShare',
|
| 868 |
+
akShareDescription: '该组件可用于从东方财富网站获取相应股票的新闻信息。',
|
| 869 |
},
|
| 870 |
footer: {
|
| 871 |
profile: 'All rights reserved @ React',
|
web/src/pages/flow/akshare-form/index.tsx
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import TopNItem from '@/components/top-n-item';
|
| 2 |
+
import { Form } from 'antd';
|
| 3 |
+
import { IOperatorForm } from '../interface';
|
| 4 |
+
|
| 5 |
+
const AkShareForm = ({ onValuesChange, form }: IOperatorForm) => {
|
| 6 |
+
return (
|
| 7 |
+
<Form
|
| 8 |
+
name="basic"
|
| 9 |
+
labelCol={{ span: 6 }}
|
| 10 |
+
wrapperCol={{ span: 18 }}
|
| 11 |
+
autoComplete="off"
|
| 12 |
+
form={form}
|
| 13 |
+
onValuesChange={onValuesChange}
|
| 14 |
+
>
|
| 15 |
+
<TopNItem initialValue={10} max={99}></TopNItem>
|
| 16 |
+
</Form>
|
| 17 |
+
);
|
| 18 |
+
};
|
| 19 |
+
|
| 20 |
+
export default AkShareForm;
|
web/src/pages/flow/constant.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
import { ReactComponent as ArXivIcon } from '@/assets/svg/arxiv.svg';
|
| 2 |
import { ReactComponent as baiduFanyiIcon } from '@/assets/svg/baidu-fanyi.svg';
|
| 3 |
import { ReactComponent as BaiduIcon } from '@/assets/svg/baidu.svg';
|
|
@@ -61,6 +62,7 @@ export enum Operator {
|
|
| 61 |
ExeSQL = 'ExeSQL',
|
| 62 |
Switch = 'Switch',
|
| 63 |
WenCai = 'WenCai',
|
|
|
|
| 64 |
}
|
| 65 |
|
| 66 |
export const operatorIconMap = {
|
|
@@ -88,6 +90,7 @@ export const operatorIconMap = {
|
|
| 88 |
[Operator.ExeSQL]: ExeSqlIcon,
|
| 89 |
[Operator.Switch]: SwitchIcon,
|
| 90 |
[Operator.WenCai]: WenCaiIcon,
|
|
|
|
| 91 |
};
|
| 92 |
|
| 93 |
export const operatorMap: Record<
|
|
@@ -198,6 +201,7 @@ export const operatorMap: Record<
|
|
| 198 |
[Operator.ExeSQL]: { backgroundColor: '#b9efe8' },
|
| 199 |
[Operator.Switch]: { backgroundColor: '#dbaff6' },
|
| 200 |
[Operator.WenCai]: { backgroundColor: '#faac5b' },
|
|
|
|
| 201 |
};
|
| 202 |
|
| 203 |
export const componentMenuList = [
|
|
@@ -270,6 +274,9 @@ export const componentMenuList = [
|
|
| 270 |
{
|
| 271 |
name: Operator.WenCai,
|
| 272 |
},
|
|
|
|
|
|
|
|
|
|
| 273 |
];
|
| 274 |
|
| 275 |
export const initialRetrievalValues = {
|
|
@@ -411,6 +418,8 @@ export const initialSwitchValues = { conditions: [] };
|
|
| 411 |
|
| 412 |
export const initialWenCaiValues = { top_n: 20, query_type: 'stock' };
|
| 413 |
|
|
|
|
|
|
|
| 414 |
export const CategorizeAnchorPointPositions = [
|
| 415 |
{ top: 1, right: 34 },
|
| 416 |
{ top: 8, right: 18 },
|
|
@@ -482,6 +491,7 @@ export const RestrictedUpstreamMap = {
|
|
| 482 |
[Operator.ExeSQL]: [Operator.Begin],
|
| 483 |
[Operator.Switch]: [Operator.Begin],
|
| 484 |
[Operator.WenCai]: [Operator.Begin],
|
|
|
|
| 485 |
};
|
| 486 |
|
| 487 |
export const NodeMap = {
|
|
@@ -509,6 +519,7 @@ export const NodeMap = {
|
|
| 509 |
[Operator.ExeSQL]: 'ragNode',
|
| 510 |
[Operator.Switch]: 'categorizeNode',
|
| 511 |
[Operator.WenCai]: 'ragNode',
|
|
|
|
| 512 |
};
|
| 513 |
|
| 514 |
export const LanguageOptions = [
|
|
|
|
| 1 |
+
import { ReactComponent as AkShareIcon } from '@/assets/svg/akshare.svg';
|
| 2 |
import { ReactComponent as ArXivIcon } from '@/assets/svg/arxiv.svg';
|
| 3 |
import { ReactComponent as baiduFanyiIcon } from '@/assets/svg/baidu-fanyi.svg';
|
| 4 |
import { ReactComponent as BaiduIcon } from '@/assets/svg/baidu.svg';
|
|
|
|
| 62 |
ExeSQL = 'ExeSQL',
|
| 63 |
Switch = 'Switch',
|
| 64 |
WenCai = 'WenCai',
|
| 65 |
+
AkShare = 'AkShare',
|
| 66 |
}
|
| 67 |
|
| 68 |
export const operatorIconMap = {
|
|
|
|
| 90 |
[Operator.ExeSQL]: ExeSqlIcon,
|
| 91 |
[Operator.Switch]: SwitchIcon,
|
| 92 |
[Operator.WenCai]: WenCaiIcon,
|
| 93 |
+
[Operator.AkShare]: AkShareIcon,
|
| 94 |
};
|
| 95 |
|
| 96 |
export const operatorMap: Record<
|
|
|
|
| 201 |
[Operator.ExeSQL]: { backgroundColor: '#b9efe8' },
|
| 202 |
[Operator.Switch]: { backgroundColor: '#dbaff6' },
|
| 203 |
[Operator.WenCai]: { backgroundColor: '#faac5b' },
|
| 204 |
+
[Operator.AkShare]: { backgroundColor: '#8085f5' },
|
| 205 |
};
|
| 206 |
|
| 207 |
export const componentMenuList = [
|
|
|
|
| 274 |
{
|
| 275 |
name: Operator.WenCai,
|
| 276 |
},
|
| 277 |
+
{
|
| 278 |
+
name: Operator.AkShare,
|
| 279 |
+
},
|
| 280 |
];
|
| 281 |
|
| 282 |
export const initialRetrievalValues = {
|
|
|
|
| 418 |
|
| 419 |
export const initialWenCaiValues = { top_n: 20, query_type: 'stock' };
|
| 420 |
|
| 421 |
+
export const initialAkShareValues = { top_n: 10 };
|
| 422 |
+
|
| 423 |
export const CategorizeAnchorPointPositions = [
|
| 424 |
{ top: 1, right: 34 },
|
| 425 |
{ top: 8, right: 18 },
|
|
|
|
| 491 |
[Operator.ExeSQL]: [Operator.Begin],
|
| 492 |
[Operator.Switch]: [Operator.Begin],
|
| 493 |
[Operator.WenCai]: [Operator.Begin],
|
| 494 |
+
[Operator.AkShare]: [Operator.Begin],
|
| 495 |
};
|
| 496 |
|
| 497 |
export const NodeMap = {
|
|
|
|
| 519 |
[Operator.ExeSQL]: 'ragNode',
|
| 520 |
[Operator.Switch]: 'categorizeNode',
|
| 521 |
[Operator.WenCai]: 'ragNode',
|
| 522 |
+
[Operator.AkShare]: 'ragNode',
|
| 523 |
};
|
| 524 |
|
| 525 |
export const LanguageOptions = [
|
web/src/pages/flow/flow-drawer/index.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import { IModalProps } from '@/interfaces/common';
|
|
| 3 |
import { Drawer, Flex, Form, Input } from 'antd';
|
| 4 |
import { useEffect } from 'react';
|
| 5 |
import { Node } from 'reactflow';
|
|
|
|
| 6 |
import AnswerForm from '../answer-form';
|
| 7 |
import ArXivForm from '../arxiv-form';
|
| 8 |
import BaiduFanyiForm from '../baidu-fanyi-form';
|
|
@@ -62,6 +63,7 @@ const FormMap = {
|
|
| 62 |
[Operator.ExeSQL]: ExeSQLForm,
|
| 63 |
[Operator.Switch]: SwitchForm,
|
| 64 |
[Operator.WenCai]: WenCaiForm,
|
|
|
|
| 65 |
};
|
| 66 |
|
| 67 |
const EmptyContent = () => <div>empty</div>;
|
|
|
|
| 3 |
import { Drawer, Flex, Form, Input } from 'antd';
|
| 4 |
import { useEffect } from 'react';
|
| 5 |
import { Node } from 'reactflow';
|
| 6 |
+
import AkShareForm from '../akshare-form';
|
| 7 |
import AnswerForm from '../answer-form';
|
| 8 |
import ArXivForm from '../arxiv-form';
|
| 9 |
import BaiduFanyiForm from '../baidu-fanyi-form';
|
|
|
|
| 63 |
[Operator.ExeSQL]: ExeSQLForm,
|
| 64 |
[Operator.Switch]: SwitchForm,
|
| 65 |
[Operator.WenCai]: WenCaiForm,
|
| 66 |
+
[Operator.AkShare]: AkShareForm,
|
| 67 |
};
|
| 68 |
|
| 69 |
const EmptyContent = () => <div>empty</div>;
|
web/src/pages/flow/hooks.ts
CHANGED
|
@@ -31,6 +31,7 @@ import {
|
|
| 31 |
Operator,
|
| 32 |
RestrictedUpstreamMap,
|
| 33 |
SwitchElseTo,
|
|
|
|
| 34 |
initialArXivValues,
|
| 35 |
initialBaiduFanyiValues,
|
| 36 |
initialBaiduValues,
|
|
@@ -115,6 +116,7 @@ export const useInitializeOperatorParams = () => {
|
|
| 115 |
[Operator.ExeSQL]: initialExeSqlValues,
|
| 116 |
[Operator.Switch]: initialSwitchValues,
|
| 117 |
[Operator.WenCai]: initialWenCaiValues,
|
|
|
|
| 118 |
};
|
| 119 |
}, [llmId]);
|
| 120 |
|
|
|
|
| 31 |
Operator,
|
| 32 |
RestrictedUpstreamMap,
|
| 33 |
SwitchElseTo,
|
| 34 |
+
initialAkShareValues,
|
| 35 |
initialArXivValues,
|
| 36 |
initialBaiduFanyiValues,
|
| 37 |
initialBaiduValues,
|
|
|
|
| 116 |
[Operator.ExeSQL]: initialExeSqlValues,
|
| 117 |
[Operator.Switch]: initialSwitchValues,
|
| 118 |
[Operator.WenCai]: initialWenCaiValues,
|
| 119 |
+
[Operator.AkShare]: initialAkShareValues,
|
| 120 |
};
|
| 121 |
}, [llmId]);
|
| 122 |
|
web/src/pages/flow/wencai-form/index.tsx
CHANGED
|
@@ -24,7 +24,7 @@ const WenCaiForm = ({ onValuesChange, form }: IOperatorForm) => {
|
|
| 24 |
form={form}
|
| 25 |
onValuesChange={onValuesChange}
|
| 26 |
>
|
| 27 |
-
<TopNItem initialValue={
|
| 28 |
<Form.Item label={t('queryType')} name={'query_type'}>
|
| 29 |
<Select options={wenCaiQueryTypeOptions}></Select>
|
| 30 |
</Form.Item>
|
|
|
|
| 24 |
form={form}
|
| 25 |
onValuesChange={onValuesChange}
|
| 26 |
>
|
| 27 |
+
<TopNItem initialValue={20} max={99}></TopNItem>
|
| 28 |
<Form.Item label={t('queryType')} name={'query_type'}>
|
| 29 |
<Select options={wenCaiQueryTypeOptions}></Select>
|
| 30 |
</Form.Item>
|