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

View File

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

View File

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

View File

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

View File

@@ -73,10 +73,6 @@ export const appModule2FlowNode = ({
const template =
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
const moduleItem: FlowModuleItemType = {
...item,
@@ -90,7 +86,7 @@ export const appModule2FlowNode = ({
};
}),
// 合并 template 和数据库,文案以 template 为准
outputs: mergeOutputs.map((output) => {
outputs: item.outputs.map((output) => {
// unChange outputs
const templateOutput = template.outputs.find((item) => item.key === output.key);