From ab743b9358c8b499daf8ca7c44f945bd8459dd82 Mon Sep 17 00:00:00 2001
From: Archer <545436317@qq.com>
Date: Mon, 22 Dec 2025 00:02:23 +0800
Subject: [PATCH] fix: ticktime (#6134)
* stop design doc
* remove invalid doc
* del s3 tip
* fix: ticktime
* fix: ticktime
* fix: ticktime
---
packages/service/common/s3/buckets/base.ts | 1 +
.../app/src/components/Layout/HelperBot.tsx | 16 +++++--
.../pageComponents/chat/WorkorderEntrance.tsx | 1 -
projects/app/src/pages/account/info/index.tsx | 44 ++++++++++++-------
4 files changed, 42 insertions(+), 20 deletions(-)
diff --git a/packages/service/common/s3/buckets/base.ts b/packages/service/common/s3/buckets/base.ts
index 82c44f4c9..2ab81c923 100644
--- a/packages/service/common/s3/buckets/base.ts
+++ b/packages/service/common/s3/buckets/base.ts
@@ -34,6 +34,7 @@ export const isFileNotFoundError = (error: any): boolean => {
error.message === 'Not Found' ||
error.message ===
'The request signature we calculated does not match the signature you provided. Check your key and signing method.' ||
+ error.message.includes('Resource name contains bad components') ||
error.message.includes('Object name contains unsupported characters.')
);
}
diff --git a/projects/app/src/components/Layout/HelperBot.tsx b/projects/app/src/components/Layout/HelperBot.tsx
index 96494a388..3ac44c35d 100644
--- a/projects/app/src/components/Layout/HelperBot.tsx
+++ b/projects/app/src/components/Layout/HelperBot.tsx
@@ -28,13 +28,21 @@ const HelperBot = () => {
const [showChat, setShowChat] = useToggle(false);
const [isLoading, setIsLoading] = useState(true);
- const { feConfigs, setNotSufficientModalType } = useSystemStore();
+ const { feConfigs, setNotSufficientModalType, subPlans } = useSystemStore();
const { teamPlanStatus } = useUserStore();
const hasTicketAccess = useMemo(() => {
- const ticketResponseTime = teamPlanStatus?.standard?.ticketResponseTime;
- return ticketResponseTime !== undefined && ticketResponseTime > 0;
- }, [teamPlanStatus?.standard?.ticketResponseTime]);
+ const plan = teamPlanStatus?.standard?.currentSubLevel
+ ? subPlans?.standard?.[teamPlanStatus?.standard?.currentSubLevel]
+ : undefined;
+ const ticketResponseTime =
+ teamPlanStatus?.standard?.ticketResponseTime ?? plan?.ticketResponseTime;
+ return !!ticketResponseTime;
+ }, [
+ subPlans?.standard,
+ teamPlanStatus?.standard?.currentSubLevel,
+ teamPlanStatus?.standard?.ticketResponseTime
+ ]);
const botIframeUrl = feConfigs?.botIframeUrl;
diff --git a/projects/app/src/pageComponents/chat/WorkorderEntrance.tsx b/projects/app/src/pageComponents/chat/WorkorderEntrance.tsx
index c66f7dc31..af7f83894 100644
--- a/projects/app/src/pageComponents/chat/WorkorderEntrance.tsx
+++ b/projects/app/src/pageComponents/chat/WorkorderEntrance.tsx
@@ -1,5 +1,4 @@
import { Button } from '@chakra-ui/react';
-import { getWorkorderURL } from '@/web/common/workorder/api';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { useTranslation } from 'next-i18next';
diff --git a/projects/app/src/pages/account/info/index.tsx b/projects/app/src/pages/account/info/index.tsx
index 8f28ccc4c..811fdbb90 100644
--- a/projects/app/src/pages/account/info/index.tsx
+++ b/projects/app/src/pages/account/info/index.tsx
@@ -45,6 +45,7 @@ import { useMount } from 'ahooks';
import MyDivider from '@fastgpt/web/components/common/MyDivider';
import { useUploadAvatar } from '@fastgpt/web/common/file/hooks/useUploadAvatar';
import { getUploadAvatarPresignedUrl } from '@/web/common/file/api';
+import { TeamErrEnum } from '@fastgpt/global/common/error/code/team';
const RedeemCouponModal = dynamic(() => import('@/pageComponents/account/info/RedeemCouponModal'), {
ssr: false
@@ -717,19 +718,34 @@ const ButtonStyles = {
fontSize: 'sm'
};
const Other = ({ onOpenContact }: { onOpenContact: () => void }) => {
- const { feConfigs } = useSystemStore();
+ const { feConfigs, setNotSufficientModalType, subPlans } = useSystemStore();
const { teamPlanStatus } = useUserStore();
const { t } = useTranslation();
const { isPc } = useSystem();
- const { runAsync: onFeedback } = useRequest2(getWorkorderURL, {
- manual: true,
- onSuccess(data) {
+ const { runAsync: onFeedback } = useRequest2(
+ async () => {
+ const plan = teamPlanStatus?.standard?.currentSubLevel
+ ? subPlans?.standard?.[teamPlanStatus?.standard?.currentSubLevel]
+ : undefined;
+
+ const ticketResponseTime =
+ teamPlanStatus?.standard?.ticketResponseTime ?? plan?.ticketResponseTime;
+ const hasTicketAccess = !!ticketResponseTime;
+ if (!hasTicketAccess) {
+ setNotSufficientModalType(TeamErrEnum.ticketNotAvailable);
+ return;
+ }
+
+ const data = await getWorkorderURL();
if (data) {
window.open(data.redirectUrl);
}
+ },
+ {
+ manual: true
}
- });
+ );
return (
@@ -767,16 +783,14 @@ const Other = ({ onOpenContact }: { onOpenContact: () => void }) => {
)}
- {feConfigs?.show_workorder &&
- teamPlanStatus &&
- teamPlanStatus.standard?.currentSubLevel !== StandardSubLevelEnum.free && (
-
-
-
- {t('common:question_feedback')}
-
-
- )}
+ {feConfigs?.show_workorder && (
+
+
+
+ {t('common:question_feedback')}
+
+
+ )}
);