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,