diff --git a/client/src/pages/_app.tsx b/client/src/pages/_app.tsx index 219ae1425..65491bc40 100644 --- a/client/src/pages/_app.tsx +++ b/client/src/pages/_app.tsx @@ -12,6 +12,7 @@ import { clientInitData, feConfigs } from '@/store/static'; import { appWithTranslation, useTranslation } from 'next-i18next'; import { getLangStore, setLangStore } from '@/utils/i18n'; import { useRouter } from 'next/router'; +import { useGlobalStore } from '@/store/global'; import 'nprogress/nprogress.css'; import '@/styles/reset.scss'; @@ -37,6 +38,7 @@ function App({ Component, pageProps }: AppProps) { const router = useRouter(); const { hiId } = router.query as { hiId?: string }; const { i18n } = useTranslation(); + const { setLastRoute } = useGlobalStore(); const [scripts, setScripts] = useState([]); const [googleClientVerKey, setGoogleVerKey] = useState(); @@ -75,6 +77,10 @@ function App({ Component, pageProps }: AppProps) { const lang = getLangStore() || 'zh'; i18n?.changeLanguage?.(lang); setLangStore(lang); + + return () => { + setLastRoute(router.asPath); + }; }, [router.asPath]); return ( diff --git a/client/src/pages/_error.tsx b/client/src/pages/_error.tsx index 339112e90..39d43895e 100644 --- a/client/src/pages/_error.tsx +++ b/client/src/pages/_error.tsx @@ -1,14 +1,22 @@ import { useEffect } from 'react'; import { useRouter } from 'next/router'; import { serviceSideProps } from '@/utils/i18n'; +import { useGlobalStore } from '@/store/global'; +import { addLog } from '@/service/utils/tools'; +import { getErrText } from '@/utils/tools'; + function Error() { const router = useRouter(); + const { lastRoute } = useGlobalStore(); + useEffect(() => { setTimeout(() => { window.umami?.track('pageError', { userAgent: navigator.userAgent, platform: navigator.platform, - appName: navigator.appName + appName: navigator.appName, + lastRoute, + route: router.asPath }); }, 1000); @@ -26,7 +34,9 @@ function Error() { } export async function getServerSideProps(context: any) { - console.log(context); + console.log('[render error]: ', context); + + addLog.error(getErrText(context?.res)); return { props: { ...(await serviceSideProps(context)) } diff --git a/client/src/service/events/generateVector.ts b/client/src/service/events/generateVector.ts index a3ca70974..74bd72a05 100644 --- a/client/src/service/events/generateVector.ts +++ b/client/src/service/events/generateVector.ts @@ -4,6 +4,7 @@ import { TrainingData } from '../models/trainingData'; import { ERROR_ENUM } from '../errorCode'; import { TrainingModeEnum } from '@/constants/plugin'; import { sendInform } from '@/pages/api/user/inform/send'; +import { addLog } from '../utils/tools'; const reduceQueue = () => { global.vectorQueueLen = global.vectorQueueLen > 0 ? global.vectorQueueLen - 1 : 0; @@ -87,10 +88,15 @@ export async function generateVector(): Promise { reduceQueue(); // log if (err?.response) { - console.log('openai error: 生成向量错误'); - console.log(err.response?.status, err.response?.statusText, err.response?.data); + addLog.info('openai error: 生成向量错误', { + status: err.response?.status, + stateusText: err.response?.statusText, + data: err.response?.data + }); } else { - console.log('生成向量错误:', err); + addLog.info('openai error: 生成向量错误', { + err + }); } // message error or openai account error @@ -98,7 +104,9 @@ export async function generateVector(): Promise { err?.message === 'invalid message format' || err.response?.data?.error?.type === 'invalid_request_error' ) { - console.log(dataItems); + addLog.info('invalid message format', { + dataItems + }); try { await TrainingData.findByIdAndUpdate(trainingId, { lockTime: new Date('2998/5/5') diff --git a/client/src/store/global.ts b/client/src/store/global.ts index f5a121c7b..964abeaab 100644 --- a/client/src/store/global.ts +++ b/client/src/store/global.ts @@ -6,6 +6,8 @@ import axios from 'axios'; type LoginStoreType = { provider: 'git'; lastRoute: string }; type State = { + lastRoute: string; + setLastRoute: (e: string) => void; loginStore?: LoginStoreType; setLoginStore: (e: LoginStoreType) => void; loading: boolean; @@ -22,6 +24,12 @@ export const useGlobalStore = create()( devtools( persist( immer((set, get) => ({ + lastRoute: '/app/list', + setLastRoute(e) { + set((state) => { + state.lastRoute = e; + }); + }, loginStore: undefined, setLoginStore(e) { set((state) => {