From 38d49ea05fc52aa55a2682ecc067f35eae4eb310 Mon Sep 17 00:00:00 2001 From: Archer <545436317@qq.com> Date: Fri, 10 Mar 2023 19:44:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/api/chat/chatGpt.ts | 6 +++--- src/pages/login/components/ForgetPasswordForm.tsx | 12 +++++------- src/pages/login/components/LoginForm.tsx | 12 +++++------- src/pages/login/components/RegisterForm.tsx | 13 +++++-------- src/pages/login/index.tsx | 8 ++++++-- src/pages/model/detail.tsx | 8 ++++++-- src/pages/model/list.tsx | 10 ++++++++-- src/service/mongo.ts | 7 ++----- src/types/index.d.ts | 8 ++++---- tsconfig.json | 1 + 10 files changed, 45 insertions(+), 40 deletions(-) diff --git a/src/pages/api/chat/chatGpt.ts b/src/pages/api/chat/chatGpt.ts index 775fd3dba..176941553 100644 --- a/src/pages/api/chat/chatGpt.ts +++ b/src/pages/api/chat/chatGpt.ts @@ -50,13 +50,13 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const formatPrompts: ChatCompletionRequestMessage[] = filterPrompts.map( (item: ChatItemType) => ({ role: map[item.obj], - content: item.value.replace(/\n/g, ' ') + content: item.value }) ); // 第一句话,强调代码类型 formatPrompts.unshift({ role: ChatCompletionRequestMessageRoleEnum.System, - content: '如果你想返回代码,请务必声明代码的类型!' + content: '如果你想返回代码,请务必声明代码的类型!并且在代码块前加一个换行符。' }); // 获取 chatAPI const chatAPI = getOpenAIApi(userApiKey); @@ -100,7 +100,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) } try { const json = JSON.parse(data); - const content: string = json.choices[0].delta.content || ''; + const content: string = json.choices[0].delta.content || '\n'; // console.log('content:', content) res.write(`event: responseData\ndata: ${content.replace(/\n/g, '
')}\n\n`); AIResponse += content; diff --git a/src/pages/login/components/ForgetPasswordForm.tsx b/src/pages/login/components/ForgetPasswordForm.tsx index 3ec8655b8..31d2fd32a 100644 --- a/src/pages/login/components/ForgetPasswordForm.tsx +++ b/src/pages/login/components/ForgetPasswordForm.tsx @@ -61,13 +61,11 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => { title: `密码已找回`, status: 'success' }); - } catch (error) { - typeof error === 'string' && - toast({ - title: error, - status: 'error', - position: 'top' - }); + } catch (error: any) { + toast({ + title: error.message || '修改密码异常', + status: 'error' + }); } setRequesting(false); }, diff --git a/src/pages/login/components/LoginForm.tsx b/src/pages/login/components/LoginForm.tsx index 05092ccd9..8a6d2f499 100644 --- a/src/pages/login/components/LoginForm.tsx +++ b/src/pages/login/components/LoginForm.tsx @@ -42,13 +42,11 @@ const LoginForm = ({ setPageType, loginSuccess }: Props) => { title: '登录成功', status: 'success' }); - } catch (error) { - typeof error === 'string' && - toast({ - title: error, - status: 'error', - position: 'top' - }); + } catch (error: any) { + toast({ + title: error.message || '登录异常', + status: 'error' + }); } setRequesting(false); }, diff --git a/src/pages/login/components/RegisterForm.tsx b/src/pages/login/components/RegisterForm.tsx index ced23724d..aec2cdc61 100644 --- a/src/pages/login/components/RegisterForm.tsx +++ b/src/pages/login/components/RegisterForm.tsx @@ -61,14 +61,11 @@ const RegisterForm = ({ setPageType, loginSuccess }: Props) => { title: `注册成功`, status: 'success' }); - } catch (error) { - typeof error === 'string' && - toast({ - title: error, - status: 'error', - duration: 4000, - isClosable: true - }); + } catch (error: any) { + toast({ + title: error.message || '注册异常', + status: 'error' + }); } setRequesting(false); }, diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index 39ae9c5e3..e6fb8ea7d 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback, useMemo } from 'react'; +import React, { useState, useCallback, useEffect } from 'react'; import styles from './index.module.scss'; import { Box, Flex, Image } from '@chakra-ui/react'; import { PageTypeEnum } from '@/constants/user'; @@ -21,7 +21,7 @@ const Login = () => { const loginSuccess = useCallback( (res: ResLogin) => { setUserInfo(res.user, res.token); - router.push('/'); + router.push('/model/list'); }, [router, setUserInfo] ); @@ -38,6 +38,10 @@ const Login = () => { return ; } + useEffect(() => { + router.prefetch('/model/list'); + }, [router]); + return ( { try { await putModelTrainingStatus(model._id); loadModel(); - } catch (error) { + } catch (error: any) { console.error(error); + toast({ + title: error.message || '更新失败', + status: 'error' + }); } setLoading(false); - }, [setLoading, loadModel, model]); + }, [model, setLoading, loadModel, toast]); return ( <> diff --git a/src/pages/model/list.tsx b/src/pages/model/list.tsx index c6057b81a..b2f801e1f 100644 --- a/src/pages/model/list.tsx +++ b/src/pages/model/list.tsx @@ -10,10 +10,12 @@ import { useScreen } from '@/hooks/useScreen'; import { useQuery } from '@tanstack/react-query'; import { useLoading } from '@/hooks/useLoading'; import dynamic from 'next/dynamic'; +import { useToast } from '@/hooks/useToast'; const CreateModel = dynamic(() => import('./components/CreateModel')); const ModelList = () => { + const { toast } = useToast(); const { isPc } = useScreen(); const router = useRouter(); const [models, setModels] = useState([]); @@ -43,12 +45,16 @@ const ModelList = () => { router.push(`/chat?chatId=${chatId}`, undefined, { shallow: true }); - } catch (err) { + } catch (err: any) { console.error(err); + toast({ + title: err.message || '出现一些异常', + status: 'error' + }); } setIsLoading(false); }, - [router, setIsLoading] + [router, setIsLoading, toast] ); return ( diff --git a/src/service/mongo.ts b/src/service/mongo.ts index 80a8b3016..6e4b81e5a 100644 --- a/src/service/mongo.ts +++ b/src/service/mongo.ts @@ -1,18 +1,16 @@ -import mongoose from 'mongoose'; +import mongoose, { Mongoose } from 'mongoose'; /** * 连接 MongoDB 数据库 */ export async function connectToDatabase(): Promise { - // @ts-ignore if (global.mongodb) { return; } - // @ts-ignore + global.mongodb = 'connecting'; console.log('connect mongo'); try { - // @ts-ignore global.mongodb = await mongoose.connect(process.env.MONGODB_URI as string, { dbName: 'doc_gpt', maxPoolSize: 10, @@ -20,7 +18,6 @@ export async function connectToDatabase(): Promise { }); } catch (error) { console.error('mongo connect error'); - // @ts-ignore global.mongodb = null; } } diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 2a2aedcda..a0eb4fa85 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -1,9 +1,9 @@ import type { Mongoose } from 'mongoose'; declare global { - interface Global { - mongodb: Mongoose; + namespace NodeJS { + interface Global { + mongodb: Mongoose | string; + } } } - -export type a = string; diff --git a/tsconfig.json b/tsconfig.json index c193e0a06..10d295142 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "target": "es5", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, + "noImplicitAny": true, "skipLibCheck": true, "strict": true, "forceConsistentCasingInFileNames": true,