From 6ad28a1c5d76e396f1b445dbc884df1efe75b5ee Mon Sep 17 00:00:00 2001
From: Linchen Xu <592789211@qq.com>
Date: Sat, 16 Nov 2024 13:10:23 -0500
Subject: [PATCH 1/3] feat: implement interview question suggestion
---
fe_repo/src/App.tsx | 28 ++++++++++++++++++++++++++--
fe_repo/src/functions/api.ts | 16 ++++++++++++++++
fe_repo/src/pages/ChatBox.tsx | 12 +++++++++---
3 files changed, 51 insertions(+), 5 deletions(-)
diff --git a/fe_repo/src/App.tsx b/fe_repo/src/App.tsx
index 80bc90833..d8b49caa2 100644
--- a/fe_repo/src/App.tsx
+++ b/fe_repo/src/App.tsx
@@ -1,6 +1,6 @@
import {ChatBox, Content, Header} from './pages'
import {ReactNode, useState} from "react";
-import {analyze, sendMessage} from "./functions/api.ts";
+import {analyze, sendMessage, suggest} from "./functions/api.ts";
export type Message = {
text: string | ReactNode,
@@ -77,11 +77,35 @@ function App() {
setMessages((messages) => [...messages]);
}
+ const onSuggest = async () => {
+ const sendingMessage: Message = {
+ text: 'Waiting for interview question suggestions...',
+ isUser: false
+ };
+ // show loading message
+ setMessages((messages) => [...messages, {
+ text: 'Suggest interview questions',
+ isUser: true
+ }, sendingMessage]);
+ // show loading message
+ const response = await suggest();
+ if (null === response) {
+ sendingMessage.text = "Something went wrong, please try again later."
+ } else {
+ sendingMessage.text = (
+ <>
+
Suggested questions:
{response.response}
+ >
+ );
+ }
+ setMessages((messages) => [...messages]);
+ }
+
return (
-
+
)
}
diff --git a/fe_repo/src/functions/api.ts b/fe_repo/src/functions/api.ts
index 4f109d4e5..80d909bbe 100644
--- a/fe_repo/src/functions/api.ts
+++ b/fe_repo/src/functions/api.ts
@@ -24,6 +24,22 @@ export type LoginResponse = {
user_id: string
}
+export async function suggest(): Promise {
+ try {
+ return axios.post(uri + '/suggest/interiew_question',
+ {user_id: getUserId()},
+ {headers: {'Content-Type': 'multipart/form-data'}})
+ .then(response => response.data)
+ .catch(error => {
+ console.error('Error fetching response', error);
+ return null;
+ });
+ } catch (error) {
+ console.error('Error fetching the backend response', error);
+ return null;
+ }
+}
+
export async function sendMessage(message: string): Promise {
console.log("Sending message: " + message);
try {
diff --git a/fe_repo/src/pages/ChatBox.tsx b/fe_repo/src/pages/ChatBox.tsx
index 9dec15c94..5a2dd630c 100644
--- a/fe_repo/src/pages/ChatBox.tsx
+++ b/fe_repo/src/pages/ChatBox.tsx
@@ -9,7 +9,7 @@ interface IChatBoxProps {
onAnalyze: (jd: string) => void;
}
-export const ChatBox = ({onSendMessage, onAnalyze}: IChatBoxProps) => {
+export const ChatBox = ({onSendMessage, onAnalyze, onSuggest}: IChatBoxProps) => {
const [message, setMessage] = useState("");
const [showPrompt, setShowPrompt] = useState(false);
@@ -87,11 +87,17 @@ export const ChatBox = ({onSendMessage, onAnalyze}: IChatBoxProps) => {
/>
+
{/*🛈 /!* Example icon - you can use actual icons here *!/*/}
{/*💼 /!* Example icon for interview *!/*/}
From 77bdb0657c7368b8dbc93a09dbb0811fc6257cf8 Mon Sep 17 00:00:00 2001
From: Linchen Xu <592789211@qq.com>
Date: Mon, 18 Nov 2024 00:12:57 -0500
Subject: [PATCH 2/3] feat: add suggestion test and onSuggest type declaration
---
fe_repo/src/functions/api.test.ts | 7 ++++++-
fe_repo/src/pages/ChatBox.tsx | 1 +
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/fe_repo/src/functions/api.test.ts b/fe_repo/src/functions/api.test.ts
index 7242e82b7..108196198 100644
--- a/fe_repo/src/functions/api.test.ts
+++ b/fe_repo/src/functions/api.test.ts
@@ -1,5 +1,5 @@
import {expect, test} from 'vitest';
-import {analyze, login, sendMessage, uploadFile} from "./api.ts";
+import {analyze, login, sendMessage, suggest, uploadFile} from "./api.ts";
test('sendMessage', () => {
expect(sendMessage("I'm adam")).toBeDefined();
@@ -24,3 +24,8 @@ test('login', () => {
// make sure message is always returned
expect(login('')).toBeDefined();
})
+
+test('suggest', () => {
+ // make sure message is always returned
+ expect(async () => (await suggest())?.analysis).toBeDefined();
+})
diff --git a/fe_repo/src/pages/ChatBox.tsx b/fe_repo/src/pages/ChatBox.tsx
index 5a2dd630c..d9b5ea016 100644
--- a/fe_repo/src/pages/ChatBox.tsx
+++ b/fe_repo/src/pages/ChatBox.tsx
@@ -7,6 +7,7 @@ import xss from "xss";
interface IChatBoxProps {
onSendMessage: (message: string) => void;
onAnalyze: (jd: string) => void;
+ onSuggest: () => void;
}
export const ChatBox = ({onSendMessage, onAnalyze, onSuggest}: IChatBoxProps) => {
From 0068cfc5378372a4486cce1b10875a45dcc71f20 Mon Sep 17 00:00:00 2001
From: Linchen Xu <592789211@qq.com>
Date: Mon, 18 Nov 2024 00:15:05 -0500
Subject: [PATCH 3/3] feat: add suggestion test and onSuggest type declaration
---
fe_repo/src/functions/api.test.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fe_repo/src/functions/api.test.ts b/fe_repo/src/functions/api.test.ts
index 108196198..f4e05360d 100644
--- a/fe_repo/src/functions/api.test.ts
+++ b/fe_repo/src/functions/api.test.ts
@@ -27,5 +27,5 @@ test('login', () => {
test('suggest', () => {
// make sure message is always returned
- expect(async () => (await suggest())?.analysis).toBeDefined();
+ expect(async () => (await suggest())).toBeDefined();
})