mirror of
https://github.com/labring/FastGPT.git
synced 2025-08-02 20:58:12 +00:00

* feat: stop toolCall and rename some field. (#46) * perf: node delete tip;pay tip * fix: toolCall cannot save child answer * feat: stop tool * fix: team modal * fix feckbackMoal auth bug (#47) * 简单的支持提示词运行tool。优化workflow模板 (#49) * remove templates * fix: request body undefined * feat: prompt tool run * feat: workflow tamplates modal * perf: plugin start * 4.7 (#50) * fix docker-compose download url (#994) original code is a bad url with '404 NOT FOUND' return. fix docker-compose download url, add 'v' before docker-compose version * Update ai_settings.md (#1000) * Update configuration.md * Update configuration.md * Fix history in classifyQuestion and extract modules (#1012) * Fix history in classifyQuestion and extract modules * Add chatValue2RuntimePrompt import and update text formatting * flow controller to packages * fix: rerank select * modal ui * perf: modal code path * point not sufficient * feat: http url support variable * fix http key * perf: prompt * perf: ai setting modal * simple edit ui --------- Co-authored-by: entorick <entorick11@qq.com> Co-authored-by: liujianglc <liujianglc@163.com> Co-authored-by: Fengrui Liu <liufengrui.work@bytedance.com> * fix team share redirect to login (#51) * feat: support openapi import plugins (#48) * feat: support openapi import plugins * feat: import from url * fix: add body params parse * fix build * fix * fix * fix * tool box ui (#52) * fix: training queue * feat: simple edit tool select * perf: simple edit dataset prompt * fix: chatbox tool ux * feat: quote prompt module * perf: plugin tools sign * perf: model avatar * tool selector ui * feat: max histories * perf: http plugin import (#53) * perf: plugin http import * chatBox ui * perf: name * fix: Node template card (#54) * fix: ts * setting modal * package * package * feat: add plugins search (#57) * feat: add plugins search * perf: change http plugin header input * Yjl (#56) * perf: prompt tool call * perf: chat box ux * doc * doc * price tip * perf: tool selector * ui' * fix: vector queue * fix: empty tool and empty response * fix: empty msg * perf: pg index * perf: ui tip * doc * tool tip --------- Co-authored-by: yst <77910600+yu-and-liu@users.noreply.github.com> Co-authored-by: entorick <entorick11@qq.com> Co-authored-by: liujianglc <liujianglc@163.com> Co-authored-by: Fengrui Liu <liufengrui.work@bytedance.com> Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
97 lines
2.4 KiB
TypeScript
97 lines
2.4 KiB
TypeScript
import React, { useMemo } from 'react';
|
|
import { ModalBody, Box, useTheme } from '@chakra-ui/react';
|
|
|
|
import MyModal from '@fastgpt/web/components/common/MyModal';
|
|
import { useTranslation } from 'next-i18next';
|
|
import type { SearchDataResponseItemType } from '@fastgpt/global/core/dataset/type';
|
|
import QuoteItem from '../core/dataset/QuoteItem';
|
|
import RawSourceBox from '../core/dataset/RawSourceBox';
|
|
|
|
const QuoteModal = ({
|
|
rawSearch = [],
|
|
onClose,
|
|
showDetail,
|
|
metadata
|
|
}: {
|
|
rawSearch: SearchDataResponseItemType[];
|
|
onClose: () => void;
|
|
showDetail: boolean;
|
|
metadata?: {
|
|
collectionId: string;
|
|
sourceId?: string;
|
|
sourceName: string;
|
|
};
|
|
}) => {
|
|
const { t } = useTranslation();
|
|
const filterResults = useMemo(
|
|
() =>
|
|
metadata
|
|
? rawSearch.filter(
|
|
(item) =>
|
|
item.collectionId === metadata.collectionId && item.sourceId === metadata.sourceId
|
|
)
|
|
: rawSearch,
|
|
[metadata, rawSearch]
|
|
);
|
|
|
|
return (
|
|
<>
|
|
<MyModal
|
|
isOpen={true}
|
|
onClose={onClose}
|
|
h={['90vh', '80vh']}
|
|
isCentered
|
|
minW={['90vw', '600px']}
|
|
iconSrc={!!metadata ? undefined : '/imgs/modal/quote.svg'}
|
|
title={
|
|
<Box>
|
|
{metadata ? (
|
|
<RawSourceBox {...metadata} canView={false} />
|
|
) : (
|
|
<>{t('core.chat.Quote Amount', { amount: rawSearch.length })}</>
|
|
)}
|
|
<Box fontSize={'xs'} color={'myGray.500'} fontWeight={'normal'}>
|
|
{t('core.chat.quote.Quote Tip')}
|
|
</Box>
|
|
</Box>
|
|
}
|
|
>
|
|
<ModalBody>
|
|
<QuoteList rawSearch={filterResults} showDetail={showDetail} />
|
|
</ModalBody>
|
|
</MyModal>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default QuoteModal;
|
|
|
|
export const QuoteList = React.memo(function QuoteList({
|
|
rawSearch = [],
|
|
showDetail
|
|
}: {
|
|
rawSearch: SearchDataResponseItemType[];
|
|
showDetail: boolean;
|
|
}) {
|
|
const theme = useTheme();
|
|
|
|
return (
|
|
<>
|
|
{rawSearch.map((item, i) => (
|
|
<Box
|
|
key={i}
|
|
flex={'1 0 0'}
|
|
p={2}
|
|
borderRadius={'sm'}
|
|
border={theme.borders.base}
|
|
_notLast={{ mb: 2 }}
|
|
_hover={{ '& .hover-data': { display: 'flex' } }}
|
|
bg={i % 2 === 0 ? 'white' : 'myWhite.500'}
|
|
>
|
|
<QuoteItem quoteItem={item} canViewSource={showDetail} linkToDataset={showDetail} />
|
|
</Box>
|
|
))}
|
|
</>
|
|
);
|
|
});
|