Skip to content

Commit

Permalink
fix: load member list (#2536)
Browse files Browse the repository at this point in the history
* fix: load member list

* fix: extract field type error

* fix: workflow runtime error

* fix: ts
  • Loading branch information
c121914yu authored Aug 27, 2024
1 parent 77e6cf4 commit f6e2d13
Show file tree
Hide file tree
Showing 13 changed files with 50 additions and 36 deletions.
2 changes: 2 additions & 0 deletions docSite/content/zh-cn/docs/development/upgrading/4810.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,5 @@ curl --location --request POST 'https://{{host}}/api/admin/initv4810' \
18. 修复 - 选择 Milvus 部署时,无法导出知识库。
19. 修复 - 创建 APP 副本,无法复制系统配置。
20. 修复 - 图片识别模式下,自动解析图片链接正则不够严谨问题。
21. 修复 - 内容提取的数据类型与输出数据类型未一致。
22. 修复 - 工作流运行时间统计错误。
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { WorkflowIOValueTypeEnum } from '../../../constants';

export type ContextExtractAgentItemType = {
valueType: 'string' | 'number' | 'boolean';
valueType:
| WorkflowIOValueTypeEnum.string
| WorkflowIOValueTypeEnum.number
| WorkflowIOValueTypeEnum.boolean;
desc: string;
key: string;
required: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ const ResponseTags = ({
};
}>();
const [quoteFolded, setQuoteFolded] = useState<boolean>(true);

const {
isOpen: isOpenWholeModal,
onOpen: onOpenWholeModal,
Expand All @@ -56,6 +57,7 @@ const ResponseTags = ({
onOpen: onOpenContextModal,
onClose: onCloseContextModal
} = useDisclosure();

useSize(quoteListRef);
const quoteIsOverflow = quoteListRef.current
? quoteListRef.current.scrollHeight > (isPc ? 50 : 55)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ const WholeResponseModal = ({
}) => {
const { t } = useTranslation();

const { appId, chatId, getHistoryResponseData } = useContextSelector(ChatBoxContext, (v) => v);
const { getHistoryResponseData } = useContextSelector(ChatBoxContext, (v) => v);
const { loading: isLoading, data: response } = useRequest2(
() => getHistoryResponseData({ dataId }),
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getTeamMembers } from '@/web/support/user/team/api';
import { useUserStore } from '@/web/support/user/useUserStore';
import {
Box,
Flex,
Expand Down Expand Up @@ -31,11 +31,13 @@ export function ChangeOwnerModal({
onChangeOwner
}: ChangeOwnerModalProps & { onClose: () => void }) {
const { t } = useTranslation();
const { loadAndGetTeamMembers } = useUserStore();

const [inputValue, setInputValue] = React.useState('');
const { data: teamMembers = [] } = useRequest2(getTeamMembers, {

const { data: teamMembers = [] } = useRequest2(loadAndGetTeamMembers, {
manual: false
});

const memberList = teamMembers.filter((item) => {
return item.memberName.includes(inputValue);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import PermissionSelect from './PermissionSelect';
import PermissionTags from './PermissionTags';
import { CollaboratorContext } from './context';
import { useUserStore } from '@/web/support/user/useUserStore';
import { getTeamMembers } from '@/web/support/user/team/api';
import MyBox from '@fastgpt/web/components/common/MyBox';
import { ChevronDownIcon } from '@chakra-ui/icons';
import Avatar from '@fastgpt/web/components/common/Avatar';
Expand All @@ -33,15 +32,16 @@ export type AddModalPropsType = {

function AddMemberModal({ onClose }: AddModalPropsType) {
const { t } = useTranslation();
const { userInfo } = useUserStore();
const { userInfo, loadAndGetTeamMembers } = useUserStore();

const { permissionList, collaboratorList, onUpdateCollaborators, getPerLabelList } =
useContextSelector(CollaboratorContext, (v) => v);
const [searchText, setSearchText] = useState<string>('');

const { data: members = [], loading: loadingMembers } = useRequest2(
async () => {
if (!userInfo?.team?.teamId) return [];
const members = await getTeamMembers();
const members = await loadAndGetTeamMembers(true);
return members;
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { useQuery } from '@tanstack/react-query';
import {
delMemberPermission,
getTeamList,
getTeamMembers,
putSwitchTeam,
updateMemberPermission
} from '@/web/support/user/team/api';
Expand Down Expand Up @@ -56,7 +55,7 @@ export const TeamModalContext = createContext<TeamModalContextType>({
export const TeamModalContextProvider = ({ children }: { children: ReactNode }) => {
const { t } = useTranslation();
const [editTeamData, setEditTeamData] = useState<EditTeamFormDataType>();
const { userInfo, initUserInfo } = useUserStore();
const { userInfo, initUserInfo, loadAndGetTeamMembers } = useUserStore();

const {
data: myTeams = [],
Expand All @@ -72,7 +71,7 @@ export const TeamModalContextProvider = ({ children }: { children: ReactNode })
} = useRequest2(
() => {
if (!userInfo?.team?.teamId) return Promise.resolve([]);
return getTeamMembers();
return loadAndGetTeamMembers();
},
{
manual: false,
Expand Down
3 changes: 2 additions & 1 deletion projects/app/src/global/core/chat/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export function addStatisticalDataToHistoryItem(historyItem: ChatItemType) {
return item;
})
.flat() || [];

return {
...historyItem,
llmModuleAccount: flatResData.filter(isLLMNode).length,
Expand All @@ -36,7 +37,7 @@ export function addStatisticalDataToHistoryItem(historyItem: ChatItemType) {
.flat()
.filter(Boolean) as SearchDataResponseItemType[],
totalRunningTime: Number(
flatResData.reduce((sum, item) => sum + (item.runningTime || 0), 0).toFixed(2)
historyItem.responseData?.reduce((sum, item) => sum + (item.runningTime || 0), 0).toFixed(2)
),
historyPreviewLength: flatResData.find(isLLMNode)?.historyPreview?.length
};
Expand Down
5 changes: 2 additions & 3 deletions projects/app/src/pages/account/components/UsageTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import { useSystemStore } from '@/web/common/system/useSystemStore';
import { useTranslation } from 'next-i18next';
import { useQuery } from '@tanstack/react-query';
import { useUserStore } from '@/web/support/user/useUserStore';
import { getTeamMembers } from '@/web/support/user/team/api';
import Avatar from '@fastgpt/web/components/common/Avatar';
import MySelect from '@fastgpt/web/components/common/MySelect';
import { formatNumber } from '@fastgpt/global/common/math/tools';
Expand All @@ -43,7 +42,7 @@ const UsageTable = () => {
});
const [usageSource, setUsageSource] = useState<UsageSourceEnum | ''>('');
const { isPc } = useSystem();
const { userInfo } = useUserStore();
const { userInfo, loadAndGetTeamMembers } = useUserStore();
const [usageDetail, setUsageDetail] = useState<UsageItemType>();

const sourceList = useMemo(
Expand All @@ -64,7 +63,7 @@ const UsageTable = () => {
const [selectTmbId, setSelectTmbId] = useState(userInfo?.team?.tmbId);
const { data: members = [] } = useQuery(['getMembers', userInfo?.team?.teamId], () => {
if (!userInfo?.team?.teamId) return [];
return getTeamMembers();
return loadAndGetTeamMembers();
});
const tmbList = useMemo(
() =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';

export const defaultField: ContextExtractAgentItemType = {
valueType: 'string',
valueType: WorkflowIOValueTypeEnum.string,
required: false,
defaultValue: '',
desc: '',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ const NodeExtract = ({ data }: NodeProps<FlowNodeItemType>) => {
id: getNanoid(),
key: data.key,
label: `${t('common:extraction_results')}-${data.desc}`,
valueType: WorkflowIOValueTypeEnum.string,
valueType: data.valueType || WorkflowIOValueTypeEnum.string,
type: FlowNodeOutputTypeEnum.static
};

Expand All @@ -215,7 +215,8 @@ const NodeExtract = ({ data }: NodeProps<FlowNodeItemType>) => {
key: data.key,
value: {
...output,
label: `${t('common:extraction_results')}-${data.desc}`
valueType: newOutput.valueType,
label: newOutput.label
}
});
} else {
Expand Down
28 changes: 13 additions & 15 deletions projects/app/src/pages/app/list/components/List.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { useConfirm } from '@fastgpt/web/hooks/useConfirm';
import MyIcon from '@fastgpt/web/components/common/Icon';
import Avatar from '@fastgpt/web/components/common/Avatar';
import PermissionIconText from '@/components/support/permission/IconText';
import { useI18n } from '@/web/context/I18n';
import EmptyTip from '@fastgpt/web/components/common/EmptyTip';
import { useTranslation } from 'next-i18next';
import MyBox from '@fastgpt/web/components/common/MyBox';
Expand Down Expand Up @@ -35,19 +34,19 @@ const ConfigPerModal = dynamic(() => import('@/components/support/permission/Con

import type { EditHttpPluginProps } from './HttpPluginEditModal';
import { postCopyApp } from '@/web/core/app/api/app';
import { getTeamMembers } from '@/web/support/user/team/api';
import { formatTimeToChatTime } from '@fastgpt/global/common/string/time';
import { useSystem } from '@fastgpt/web/hooks/useSystem';
import { useSystemStore } from '@/web/common/system/useSystemStore';
import { useChatStore } from '@/web/core/chat/context/storeChat';
import { useUserStore } from '@/web/support/user/useUserStore';
const HttpEditModal = dynamic(() => import('./HttpPluginEditModal'));

const ListItem = () => {
const { t } = useTranslation();
const { appT, commonT } = useI18n();
const router = useRouter();
const { parentId = null } = router.query;
const { isPc } = useSystem();

const { loadAndGetTeamMembers } = useUserStore();
const { lastChatAppId, setLastChatAppId } = useChatStore();

const { myApps, loadMyApps, onUpdateApp, setMoveAppId, folderDetail } = useContextSelector(
Expand All @@ -59,7 +58,6 @@ const ListItem = () => {
const [editedApp, setEditedApp] = useState<EditResourceInfoFormType>();
const [editHttpPlugin, setEditHttpPlugin] = useState<EditHttpPluginProps>();
const [editPerAppIndex, setEditPerAppIndex] = useState<number>();
const { feConfigs } = useSystemStore();

const editPerApp = useMemo(
() => (editPerAppIndex !== undefined ? myApps[editPerAppIndex] : undefined),
Expand Down Expand Up @@ -100,18 +98,18 @@ const ListItem = () => {
);

const { openConfirm: openConfirmCopy, ConfirmModal: ConfirmCopyModal } = useConfirm({
content: appT('confirm_copy_app_tip')
content: t('app:confirm_copy_app_tip')
});
const { runAsync: onclickCopy } = useRequest2(postCopyApp, {
onSuccess({ appId }) {
router.push(`/app/detail?appId=${appId}`);
loadMyApps();
},
successToast: appT('create_copy_success')
successToast: t('app:create_copy_success')
});

const { data: members = [] } = useRequest2(getTeamMembers, {
manual: !feConfigs.isPlus
const { data: members = [] } = useRequest2(loadAndGetTeamMembers, {
manual: false
});

const { runAsync: onResumeInheritPermission } = useRequest2(
Expand All @@ -120,7 +118,7 @@ const ListItem = () => {
},
{
manual: true,
errorToast: commonT('permission.Resume InheritPermission Failed'),
errorToast: t('common:permission.Resume InheritPermission Failed'),
onSuccess() {
loadMyApps();
}
Expand Down Expand Up @@ -267,7 +265,7 @@ const ListItem = () => {
children: [
{
icon: 'core/chat/chatLight',
label: appT('go_to_chat'),
label: t('app:go_to_chat'),
onClick: () => {
router.push(`/chat?appId=${app._id}`);
}
Expand All @@ -282,7 +280,7 @@ const ListItem = () => {
children: [
{
icon: 'core/chat/chatLight',
label: appT('go_to_run'),
label: t('app:go_to_run'),
onClick: () => {
router.push(`/chat?appId=${app._id}`);
}
Expand Down Expand Up @@ -342,7 +340,7 @@ const ListItem = () => {
children: [
{
icon: 'copy',
label: appT('copy_one_app'),
label: t('app:copy_one_app'),
onClick: () =>
openConfirmCopy(() => onclickCopy({ appId: app._id }))()
}
Expand All @@ -363,8 +361,8 @@ const ListItem = () => {
() => onclickDelApp(app._id),
undefined,
app.type === AppTypeEnum.folder
? appT('confirm_delete_folder_tip')
: appT('confirm_del_app_tip')
? t('app:confirm_delete_folder_tip')
: t('app:confirm_del_app_tip')
)()
}
]
Expand Down
11 changes: 8 additions & 3 deletions projects/app/src/web/support/user/useUserStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { FeTeamPlanStatusType } from '@fastgpt/global/support/wallet/sub/type';
import { getTeamPlanStatus } from './team/api';
import { getTeamMembers } from '@/web/support/user/team/api';
import { TeamMemberItemType } from '@fastgpt/global/support/user/team/type';
import { useSystemStore } from '@/web/common/system/useSystemStore';

type State = {
systemMsgReadId: string;
Expand All @@ -22,7 +23,7 @@ type State = {
initTeamPlanStatus: () => Promise<any>;

teamMembers: TeamMemberItemType[];
loadAndGetTeamMembers: () => Promise<TeamMemberItemType[]>;
loadAndGetTeamMembers: (init?: boolean) => Promise<TeamMemberItemType[]>;
};

export const useUserStore = create<State>()(
Expand Down Expand Up @@ -85,8 +86,12 @@ export const useUserStore = create<State>()(
});
},
teamMembers: [],
loadAndGetTeamMembers: async () => {
if (get().teamMembers.length) return Promise.resolve(get().teamMembers);
loadAndGetTeamMembers: async (init = false) => {
if (!useSystemStore.getState()?.feConfigs?.isPlus) return [];

const randomRefresh = Math.random() > 0.7;
if (!randomRefresh && !init && get().teamMembers.length)
return Promise.resolve(get().teamMembers);

const res = await getTeamMembers();
set((state) => {
Expand Down

0 comments on commit f6e2d13

Please sign in to comment.