fix: extract modules

This commit is contained in:
archer
2023-08-02 16:33:31 +08:00
parent bf1f958dcd
commit 8862e353aa
5 changed files with 30 additions and 15 deletions

View File

@@ -13,7 +13,6 @@ import RenderOutput from '../render/RenderOutput';
import MyIcon from '@/components/Icon'; import MyIcon from '@/components/Icon';
import ExtractFieldModal from '../modules/ExtractFieldModal'; import ExtractFieldModal from '../modules/ExtractFieldModal';
import { ContextExtractEnum } from '@/constants/flow/flowField'; import { ContextExtractEnum } from '@/constants/flow/flowField';
import SourceHandle from '../render/SourceHandle';
import { FlowOutputItemTypeEnum, FlowValueTypeEnum } from '@/constants/flow'; import { FlowOutputItemTypeEnum, FlowValueTypeEnum } from '@/constants/flow';
const NodeExtract = ({ const NodeExtract = ({
@@ -150,6 +149,7 @@ const NodeExtract = ({
: outputs.concat({ : outputs.concat({
key: data.key, key: data.key,
label: `提取结果-${data.desc}`, label: `提取结果-${data.desc}`,
description: '无法提取时不会返回',
valueType: FlowValueTypeEnum.string, valueType: FlowValueTypeEnum.string,
type: FlowOutputItemTypeEnum.source, type: FlowOutputItemTypeEnum.source,
targets: [] targets: []

View File

@@ -1,4 +1,4 @@
import React, { useState } from 'react'; import React, { useMemo, useState } from 'react';
import { import {
Box, Box,
Button, Button,
@@ -16,6 +16,7 @@ import { customAlphabet } from 'nanoid';
const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890', 6); const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890', 6);
import MyModal from '@/components/MyModal'; import MyModal from '@/components/MyModal';
import Avatar from '@/components/Avatar'; import Avatar from '@/components/Avatar';
import MyTooltip from '@/components/MyTooltip';
const ExtractFieldModal = ({ const ExtractFieldModal = ({
defaultField = { defaultField = {
@@ -33,6 +34,7 @@ const ExtractFieldModal = ({
const { register, handleSubmit } = useForm<ContextExtractAgentItemType>({ const { register, handleSubmit } = useForm<ContextExtractAgentItemType>({
defaultValues: defaultField defaultValues: defaultField
}); });
const isEdit = useMemo(() => !!defaultField.key, [defaultField]);
return ( return (
<MyModal isOpen={true} onClose={onClose}> <MyModal isOpen={true} onClose={onClose}>
@@ -42,23 +44,29 @@ const ExtractFieldModal = ({
</ModalHeader> </ModalHeader>
<ModalBody> <ModalBody>
<Flex alignItems={'center'}> <Flex alignItems={'center'}>
<Box w={'70px'}></Box> <Box flex={'0 0 70px'}></Box>
<Switch {...register('required')} /> <Switch {...register('required')} />
</Flex> </Flex>
<Flex mt={5} alignItems={'center'}> <Flex mt={5} alignItems={'center'}>
<Box w={'80px'}></Box> <Box flex={'0 0 70px'}></Box>
<Input <Input
placeholder="姓名/年龄/sql语句……" placeholder="姓名/年龄/sql语句……"
{...register('desc', { required: '字段描述不能为空' })} {...register('desc', { required: '字段描述不能为空' })}
/> />
</Flex> </Flex>
<Flex mt={5} alignItems={'center'}> <Flex mt={5} alignItems={'center'}>
<Box w={'80px'}> key</Box> <Box flex={'0 0 70px'}> key</Box>
<Input <MyTooltip label={isEdit ? '不支持修改 key' : ''} shouldWrapChildren={false}>
placeholder="name/age/sql" <Input
{...register('key', { required: '字段 key 不能为空' })} isDisabled={isEdit}
/> placeholder="name/age/sql"
{...register('key', { required: '字段 key 不能为空' })}
/>
</MyTooltip>
</Flex> </Flex>
<Box mt={1} pl={'70px'} color={'myGray.600'} fontSize={'sm'}>
注意: key
</Box>
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>

View File

@@ -6,20 +6,24 @@ import Tag from '@/components/Tag';
import Avatar from '@/components/Avatar'; import Avatar from '@/components/Avatar';
import ToolMenu from './ToolMenu'; import ToolMenu from './ToolMenu';
import { ChatItemType } from '@/types/chat'; import { ChatItemType } from '@/types/chat';
import { useRouter } from 'next/router';
const ChatHeader = ({ const ChatHeader = ({
history, history,
appName, appName,
appAvatar, appAvatar,
chatModels, chatModels,
appId,
onOpenSlider onOpenSlider
}: { }: {
history: ChatItemType[]; history: ChatItemType[];
appName: string; appName: string;
appAvatar: string; appAvatar: string;
chatModels?: string[]; chatModels?: string[];
appId?: string;
onOpenSlider: () => void; onOpenSlider: () => void;
}) => { }) => {
const router = useRouter();
const theme = useTheme(); const theme = useTheme();
const { isPc } = useGlobalStore(); const { isPc } = useGlobalStore();
const title = useMemo( const title = useMemo(
@@ -58,7 +62,13 @@ const ChatHeader = ({
<MyIcon name={'menu'} w={'20px'} h={'20px'} color={'myGray.900'} onClick={onOpenSlider} /> <MyIcon name={'menu'} w={'20px'} h={'20px'} color={'myGray.900'} onClick={onOpenSlider} />
<Flex px={3} alignItems={'center'} flex={'1 0 0'} w={0} justifyContent={'center'}> <Flex px={3} alignItems={'center'} flex={'1 0 0'} w={0} justifyContent={'center'}>
<Avatar src={appAvatar} w={'16px'} /> <Avatar src={appAvatar} w={'16px'} />
<Box ml={1} className="textEllipsis"> <Box
ml={1}
className="textEllipsis"
onClick={() => {
appId && router.push(`/app/detail?appId=${appId}`);
}}
>
{appName} {appName}
</Box> </Box>
</Flex> </Flex>

View File

@@ -345,6 +345,7 @@ const Chat = ({ appId, chatId }: { appId: string; chatId: string }) => {
<ChatHeader <ChatHeader
appAvatar={chatData.app.avatar} appAvatar={chatData.app.avatar}
appName={chatData.app.name} appName={chatData.app.name}
appId={appId}
history={chatData.history} history={chatData.history}
chatModels={chatData.app.chatModels} chatModels={chatData.app.chatModels}
onOpenSlider={onOpenSlider} onOpenSlider={onOpenSlider}

View File

@@ -73,10 +73,6 @@ export const appModule2FlowNode = ({
const template = const template =
ModuleTemplatesFlat.find((template) => template.flowType === item.flowType) || EmptyModule; ModuleTemplatesFlat.find((template) => template.flowType === item.flowType) || EmptyModule;
const mergeOutputs = item.outputs.concat(
template.outputs.filter((output) => !item.outputs.find((item) => item.key === output.key))
);
// replace item data // replace item data
const moduleItem: FlowModuleItemType = { const moduleItem: FlowModuleItemType = {
...item, ...item,
@@ -90,7 +86,7 @@ export const appModule2FlowNode = ({
}; };
}), }),
// 合并 template 和数据库,文案以 template 为准 // 合并 template 和数据库,文案以 template 为准
outputs: mergeOutputs.map((output) => { outputs: item.outputs.map((output) => {
// unChange outputs // unChange outputs
const templateOutput = template.outputs.find((item) => item.key === output.key); const templateOutput = template.outputs.find((item) => item.key === output.key);