feat: Add component YahooFinance #1739 (#2561)

### What problem does this PR solve?

feat: Add component YahooFinance #1739

### Type of change

- [ ] Bug Fix (non-breaking change which fixes an issue)
- [x] New Feature (non-breaking change which adds functionality)
- [ ] Documentation Update
- [ ] Refactoring
- [ ] Performance Improvement
- [ ] Other (please describe):
This commit is contained in:
balibabu 2024-09-24 16:46:41 +08:00 committed by GitHub
parent d40041cc82
commit 949a999478
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 113 additions and 0 deletions

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->
<title>favicon_y19_28x28_custom</title>
<desc>Created with Sketch.</desc>
<defs>
<polygon id="path-1"
points="0.171073913 0.0931111111 9.4455087 0.0931111111 9.4455087 9.92442222 0.171073913 9.92442222">
</polygon>
</defs>
<g id="favicon_y19_28x28_custom" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect fill="#6001D2" x="0" y="0" width="28" height="28"></rect>
<g id="y!" transform="translate(5.000000, 6.000000)">
<polygon id="Fill-1" fill="#FFFFFF"
points="9.70835927 5 7.04604411 11.4197051 4.40657437 5 0 5 4.91176421 16.0265583 3.14442407 20 7.45914574 20 14 5">
</polygon>
<g id="!" transform="translate(12.000000, 0.000000)">
<path
d="M2.88747609,10.8773778 C1.30283696,10.8773778 0.114280435,12.0684889 0.114280435,13.4547111 C0.114280435,14.8184889 1.25660652,15.9449333 2.79421522,15.9449333 C4.37917174,15.9449333 5.56741087,14.7756 5.56741087,13.3678222 C5.56741087,11.9818222 4.42580217,10.8773778 2.88747609,10.8773778"
id="Fill-2" fill="#FFFFFF"></path>
<g id="Group-6" transform="translate(1.434783, 0.000000)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="Clip-5"></g>
<polygon id="Fill-4" fill="#FFFFFF" mask="url(#mask-2)"
points="4.55194348 0.0930888889 0.171073913 9.92442222 5.06487826 9.92442222 9.4455087 0.0930888889">
</polygon>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -909,6 +909,12 @@ The above is the content you need to summarize.`,
akShare: 'AkShare', akShare: 'AkShare',
akShareDescription: akShareDescription:
'This component can be used to obtain news information for the corresponding stock from the Eastmoney website.', 'This component can be used to obtain news information for the corresponding stock from the Eastmoney website.',
yahooFinance: 'YahooFinance',
info: 'Info',
history: 'History',
financials: 'Financials',
balanceSheet: 'Balance sheet',
cashFlowStatement: 'Cash flow statement',
}, },
footer: { footer: {
profile: 'All rights reserved @ React', profile: 'All rights reserved @ React',

View File

@ -862,6 +862,12 @@ export default {
}, },
akShare: 'AkShare', akShare: 'AkShare',
akShareDescription: '此組件可用於從東方財富網取得對應股票的新聞資訊。', akShareDescription: '此組件可用於從東方財富網取得對應股票的新聞資訊。',
yahooFinance: '雅虎財經',
info: '訊息',
history: '歷史',
financials: '財務',
balanceSheet: '資產負債表',
cashFlowStatement: '現金流量表',
}, },
footer: { footer: {
profile: '“保留所有權利 @ react”', profile: '“保留所有權利 @ react”',

View File

@ -880,6 +880,12 @@ export default {
}, },
akShare: 'AkShare', akShare: 'AkShare',
akShareDescription: '该组件可用于从东方财富网站获取相应股票的新闻信息。', akShareDescription: '该组件可用于从东方财富网站获取相应股票的新闻信息。',
yahooFinance: '雅虎财经',
info: '信息',
history: '历史',
financials: '财务',
balanceSheet: '资产负债表',
cashFlowStatement: '现金流量表',
}, },
footer: { footer: {
profile: 'All rights reserved @ React', profile: 'All rights reserved @ React',

View File

@ -15,6 +15,7 @@ import { ReactComponent as QWeatherIcon } from '@/assets/svg/qweather.svg';
import { ReactComponent as SwitchIcon } from '@/assets/svg/switch.svg'; import { ReactComponent as SwitchIcon } from '@/assets/svg/switch.svg';
import { ReactComponent as WenCaiIcon } from '@/assets/svg/wencai.svg'; import { ReactComponent as WenCaiIcon } from '@/assets/svg/wencai.svg';
import { ReactComponent as WikipediaIcon } from '@/assets/svg/wikipedia.svg'; import { ReactComponent as WikipediaIcon } from '@/assets/svg/wikipedia.svg';
import { ReactComponent as YahooFinanceIcon } from '@/assets/svg/yahoo-finance.svg';
import { variableEnabledFieldMap } from '@/constants/chat'; import { variableEnabledFieldMap } from '@/constants/chat';
import i18n from '@/locales/config'; import i18n from '@/locales/config';
@ -63,6 +64,7 @@ export enum Operator {
Switch = 'Switch', Switch = 'Switch',
WenCai = 'WenCai', WenCai = 'WenCai',
AkShare = 'AkShare', AkShare = 'AkShare',
YahooFinance = 'YahooFinance',
} }
export const operatorIconMap = { export const operatorIconMap = {
@ -91,6 +93,7 @@ export const operatorIconMap = {
[Operator.Switch]: SwitchIcon, [Operator.Switch]: SwitchIcon,
[Operator.WenCai]: WenCaiIcon, [Operator.WenCai]: WenCaiIcon,
[Operator.AkShare]: AkShareIcon, [Operator.AkShare]: AkShareIcon,
[Operator.YahooFinance]: YahooFinanceIcon,
}; };
export const operatorMap: Record< export const operatorMap: Record<
@ -202,6 +205,7 @@ export const operatorMap: Record<
[Operator.Switch]: { backgroundColor: '#dbaff6' }, [Operator.Switch]: { backgroundColor: '#dbaff6' },
[Operator.WenCai]: { backgroundColor: '#faac5b' }, [Operator.WenCai]: { backgroundColor: '#faac5b' },
[Operator.AkShare]: { backgroundColor: '#8085f5' }, [Operator.AkShare]: { backgroundColor: '#8085f5' },
[Operator.YahooFinance]: { backgroundColor: '#b474ff' },
}; };
export const componentMenuList = [ export const componentMenuList = [
@ -277,6 +281,9 @@ export const componentMenuList = [
{ {
name: Operator.AkShare, name: Operator.AkShare,
}, },
{
name: Operator.YahooFinance,
},
]; ];
export const initialRetrievalValues = { export const initialRetrievalValues = {
@ -420,6 +427,15 @@ export const initialWenCaiValues = { top_n: 20, query_type: 'stock' };
export const initialAkShareValues = { top_n: 10 }; export const initialAkShareValues = { top_n: 10 };
export const initialYahooFinanceValues = {
info: true,
history: false,
financials: false,
balance_sheet: false,
cash_flow_statement: false,
news: true,
};
export const CategorizeAnchorPointPositions = [ export const CategorizeAnchorPointPositions = [
{ top: 1, right: 34 }, { top: 1, right: 34 },
{ top: 8, right: 18 }, { top: 8, right: 18 },
@ -492,6 +508,7 @@ export const RestrictedUpstreamMap = {
[Operator.Switch]: [Operator.Begin], [Operator.Switch]: [Operator.Begin],
[Operator.WenCai]: [Operator.Begin], [Operator.WenCai]: [Operator.Begin],
[Operator.AkShare]: [Operator.Begin], [Operator.AkShare]: [Operator.Begin],
[Operator.YahooFinance]: [Operator.Begin],
}; };
export const NodeMap = { export const NodeMap = {
@ -520,6 +537,7 @@ export const NodeMap = {
[Operator.Switch]: 'categorizeNode', [Operator.Switch]: 'categorizeNode',
[Operator.WenCai]: 'ragNode', [Operator.WenCai]: 'ragNode',
[Operator.AkShare]: 'ragNode', [Operator.AkShare]: 'ragNode',
[Operator.YahooFinance]: 'ragNode',
}; };
export const LanguageOptions = [ export const LanguageOptions = [

View File

@ -32,6 +32,7 @@ import SwitchForm from '../switch-form';
import WenCaiForm from '../wencai-form'; import WenCaiForm from '../wencai-form';
import WikipediaForm from '../wikipedia-form'; import WikipediaForm from '../wikipedia-form';
import YahooFinanceForm from '../yahoo-finance-form';
import styles from './index.less'; import styles from './index.less';
interface IProps { interface IProps {
@ -64,6 +65,7 @@ const FormMap = {
[Operator.Switch]: SwitchForm, [Operator.Switch]: SwitchForm,
[Operator.WenCai]: WenCaiForm, [Operator.WenCai]: WenCaiForm,
[Operator.AkShare]: AkShareForm, [Operator.AkShare]: AkShareForm,
[Operator.YahooFinance]: YahooFinanceForm,
}; };
const EmptyContent = () => <div>empty</div>; const EmptyContent = () => <div>empty</div>;

View File

@ -55,6 +55,7 @@ import {
initialSwitchValues, initialSwitchValues,
initialWenCaiValues, initialWenCaiValues,
initialWikipediaValues, initialWikipediaValues,
initialYahooFinanceValues,
} from './constant'; } from './constant';
import { ICategorizeForm, IRelevantForm, ISwitchForm } from './interface'; import { ICategorizeForm, IRelevantForm, ISwitchForm } from './interface';
import useGraphStore, { RFState } from './store'; import useGraphStore, { RFState } from './store';
@ -117,6 +118,7 @@ export const useInitializeOperatorParams = () => {
[Operator.Switch]: initialSwitchValues, [Operator.Switch]: initialSwitchValues,
[Operator.WenCai]: initialWenCaiValues, [Operator.WenCai]: initialWenCaiValues,
[Operator.AkShare]: initialAkShareValues, [Operator.AkShare]: initialAkShareValues,
[Operator.YahooFinance]: initialYahooFinanceValues,
}; };
}, [llmId]); }, [llmId]);

View File

@ -0,0 +1,39 @@
import { useTranslate } from '@/hooks/common-hooks';
import { Form, Switch } from 'antd';
import { IOperatorForm } from '../interface';
const YahooFinanceForm = ({ onValuesChange, form }: IOperatorForm) => {
const { t } = useTranslate('flow');
return (
<Form
name="basic"
labelCol={{ span: 10 }}
wrapperCol={{ span: 14 }}
autoComplete="off"
form={form}
onValuesChange={onValuesChange}
>
<Form.Item label={t('info')} name={'info'}>
<Switch></Switch>
</Form.Item>
<Form.Item label={t('history')} name={'history'}>
<Switch></Switch>
</Form.Item>
<Form.Item label={t('financials')} name={'financials'}>
<Switch></Switch>
</Form.Item>
<Form.Item label={t('balanceSheet')} name={'balance_sheet'}>
<Switch></Switch>
</Form.Item>
<Form.Item label={t('cashFlowStatement')} name={'cash_flow_statement'}>
<Switch></Switch>
</Form.Item>
<Form.Item label={t('news')} name={'news'}>
<Switch></Switch>
</Form.Item>
</Form>
);
};
export default YahooFinanceForm;