diff --git a/.env b/.env
index c5d6c9f2..f49eee36 100755
--- a/.env
+++ b/.env
@@ -2,6 +2,6 @@ ENV = 'development'
VITE_BASE=/
VUE_APP_PREVIEW=false
-VITE_BASE_API=https://xxx.xxx.com
-VITE_SOCKET_API=wss://xxx.xxx.com
+VITE_BASE_API=http://127.0.0.1:9503
+VITE_SOCKET_API=ws://127.0.0.1:9504
VUE_APP_WEBSITE_NAME="Lumen IM"
\ No newline at end of file
diff --git a/src/api/embedding.js b/src/api/embedding.js
new file mode 100644
index 00000000..41e0a4ad
--- /dev/null
+++ b/src/api/embedding.js
@@ -0,0 +1,85 @@
+import { post, get, upload } from '@/utils/request'
+
+export function queryModelList(data={}) {
+ return post('/api/v1/echo/embedding/modelList', data)
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/embedding/modelList",
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+}
+
+export function queryChatList(params) {
+ return post('/api/v1/echo/embedding/chatList', params)
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/embedding/chatList",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+}
+
+export function queryChatContentList(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/embedding/chatContentList",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/embedding/chatContentList', params)
+}
+
+export function queryCollectModelList() {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/embedding/collectModelList",
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/embedding/collectModelList')
+}
+
+// /echo/embedding/chatCompletion
+export function queryChatCompletion(params) {
+ return get('/api/v1/echo/embedding/chatCompletion', params)
+}
+
diff --git a/src/api/openAI.js b/src/api/openAI.js
new file mode 100644
index 00000000..85a0c04e
--- /dev/null
+++ b/src/api/openAI.js
@@ -0,0 +1,103 @@
+import { post, get, upload } from '@/utils/request'
+
+export function queryChatList(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/openai/chatList",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/openai/chatList', params)
+}
+
+export function createChat() {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/openai/createChat",
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/openai/createChat')
+}
+
+export function queryChatContentList(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/openai/chatContentListByPage",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/openai/chatContentListByPage', params)
+}
+
+export function queryPlugins() {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/openai/plugins",
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/openai/plugins')
+}
+
+export function updateChatAiPlugin(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/openai/updateChatAiPlugin",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/openai/updateChatAiPlugin', params)
+}
+
+export function callChat(params) {
+ return post('/api/v1/copilot/chat', params)
+}
diff --git a/src/api/shortCut.js b/src/api/shortCut.js
new file mode 100644
index 00000000..7eb69acc
--- /dev/null
+++ b/src/api/shortCut.js
@@ -0,0 +1,81 @@
+import { post, get, upload } from '@/utils/request'
+
+export function fetchAddShortCut(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/shortcut/add",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/shortcut/add', params)
+}
+
+export function fetchShortCutList() {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/shortcut/list",
+ // params: {},
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/shortcut/list')
+}
+
+export function fetchShortCutDetail(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/shortcut/detail",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/shortcut/detail', params)
+}
+
+export function fetchUpdateShortCut(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/shortcut/update",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/shortcut/update', params)
+}
diff --git a/src/api/user.js b/src/api/user.js
index 76c55b7c..a9ed9976 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -29,3 +29,136 @@ export const ServeGetUserDetail = () => {
export const ServeGetUserSetting = () => {
return get('/api/v1/users/setting')
}
+
+// 获取用户相关系统配置信息
+export const ServeGetUserConfig = () => {
+ return get('/api/v1/users/config')
+}
+
+// 获取用户相关系统配置信息分组
+export const ServeGetUserConfigGroup = () => {
+ return get('/api/v1/users/config/group')
+}
+
+// 修改配置服务接口
+export const ServeUpdateConfig = (data) => {
+ return post('/api/v1/users/config', data)
+}
+
+export function fetchUserInfo() {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "get-user-data",
+ // },
+ // (response) => {
+ // if (response && !response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return get('/api/v1/users/detail')
+}
+
+export function fetchLogin(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "user-login",
+ // url: "/users/login",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/users/login', params)
+}
+
+export function fetchRegister(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/user/register",
+ // params,
+ // },
+ // (response) => {
+ // if (response && !response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/users/register', params)
+}
+
+export function fetchUpdateUser(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/user/update",
+ // params,
+ // },
+ // (response) => {
+ // if (response && !response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/users/update', params)
+}
+
+export function fetchSendSms(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/user/sendSms",
+ // params,
+ // },
+ // (response) => {
+ // if (response && !response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/users/sendSms', params)
+}
+
+export function queryAppVersion(params) {
+ // return new Promise((resolve, reject) => {
+ // chrome.runtime.sendMessage(
+ // {
+ // type: "post-data",
+ // url: "/echo/checkVersion",
+ // params,
+ // },
+ // (response) => {
+ // if (!response.status) {
+ // resolve(response.data);
+ // } else {
+ // reject(response);
+ // }
+ // }
+ // );
+ // });
+ return post('/api/v1/echo/checkVersion', params)
+}
diff --git a/src/assets/echo.png b/src/assets/echo.png
new file mode 100644
index 00000000..13f50909
Binary files /dev/null and b/src/assets/echo.png differ
diff --git a/src/components/Chat/ChatCard.vue b/src/components/Chat/ChatCard.vue
new file mode 100644
index 00000000..2fa403cd
--- /dev/null
+++ b/src/components/Chat/ChatCard.vue
@@ -0,0 +1,274 @@
+
+
+