Skip to content

Commit 732b59c

Browse files
author
weilei
committed
feat: 新增Dify聊天功能集成(待测试)
1 parent 2e98732 commit 732b59c

File tree

9 files changed

+1210
-2
lines changed

9 files changed

+1210
-2
lines changed

examples/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"clean": "rimraf dist"
1212
},
1313
"dependencies": {
14+
"axios": "^1.9.0",
1415
"element-ui": "2.15.14",
1516
"katex": "^0.16.22",
1617
"markdown-it-emoji": "^3.0.0",

examples/src/App.vue

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<template>
22
<div id="app">
3-
<el-container class="app-container">
3+
<el-container
4+
v-if="$route.path != '/difychat'"
5+
class="app-container"
6+
>
47
<!-- 侧边栏 -->
58
<el-aside class="app-aside">
69
<div class="aside-content">
@@ -158,6 +161,9 @@
158161
</el-main>
159162
</el-container>
160163
</el-container>
164+
<div v-else>
165+
<router-view></router-view>
166+
</div>
161167
</div>
162168
</template>
163169

@@ -178,6 +184,9 @@
178184
});
179185
},
180186
},
187+
mounted() {
188+
console.log(this.$route.path);
189+
},
181190
methods: {
182191
getCurrentPageTitle() {
183192
const routeMap = {
@@ -213,7 +222,7 @@
213222
$aside-width: 260px;
214223
$header-height: 60px;
215224
$aside-bg: #ffffff;
216-
$main-bg: #f8fafc;
225+
$main-bg: #ffffff;
217226
$border-color: #e5e7eb;
218227
$shadow-light: 0 1px 3px rgba(0, 0, 0, 0.1);
219228
$shadow-medium: 0 4px 6px rgba(0, 0, 0, 0.07);

examples/src/api/dify.js

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
// Dify API服务
2+
import request from '@/utils/request';
3+
4+
/**
5+
* 会话管理API
6+
*/
7+
export const conversationApi = {
8+
// 获取会话列表
9+
getConversations(params = {}) {
10+
return request.get('/conversations', {
11+
params: {
12+
user: 'default-user',
13+
limit: 20,
14+
sort_by: 'created_at',
15+
...params,
16+
},
17+
});
18+
},
19+
20+
// 删除会话
21+
deleteConversation(conversationId, user = 'default-user') {
22+
return request.delete(`/conversations/${conversationId}`, {
23+
data: {
24+
user,
25+
},
26+
});
27+
},
28+
29+
// 会话重命名
30+
renameConversation(conversationId, name, user = 'default-user') {
31+
return request.post(`/conversations/${conversationId}/name`, {
32+
name,
33+
user,
34+
});
35+
},
36+
37+
// 自动生成会话标题
38+
autoGenerateTitle(conversationId, user = 'default-user') {
39+
return request.post(`/conversations/${conversationId}/name`, {
40+
auto_generate: true,
41+
user,
42+
});
43+
},
44+
};
45+
46+
/**
47+
* 消息管理API
48+
*/
49+
export const messageApi = {
50+
// 获取会话历史消息
51+
getMessages(params = {}) {
52+
return request.get('/messages', {
53+
params: {
54+
user: 'default-user',
55+
limit: 20,
56+
...params,
57+
},
58+
});
59+
},
60+
61+
// 发送消息
62+
sendMessage(data) {
63+
return request.post('/chat-messages', {
64+
user: 'default-user',
65+
response_mode: 'streaming',
66+
inputs: {},
67+
auto_generate_name: true,
68+
...data,
69+
});
70+
},
71+
72+
// 停止响应
73+
stopMessage(taskId, user = 'default-user') {
74+
return request.post(`/chat-messages/${taskId}/stop`, {
75+
user,
76+
});
77+
},
78+
79+
// 消息反馈
80+
feedbackMessage(messageId, rating, content = '', user = 'default-user') {
81+
return request.post(`/messages/${messageId}/feedbacks`, {
82+
rating, // 'like' | 'dislike' | null
83+
content,
84+
user,
85+
});
86+
},
87+
88+
// 获取建议问题
89+
getSuggestedQuestions(messageId, user = 'default-user') {
90+
return request.get(`/messages/${messageId}/suggested`, {
91+
params: {
92+
user,
93+
},
94+
});
95+
},
96+
};
97+
98+
/**
99+
* 应用信息API
100+
*/
101+
export const appApi = {
102+
// 获取应用基本信息
103+
getAppInfo() {
104+
return request.get('/info');
105+
},
106+
107+
// 获取应用参数
108+
getAppParameters() {
109+
return request.get('/parameters');
110+
},
111+
112+
// 获取应用Meta信息
113+
getAppMeta() {
114+
return request.get('/meta');
115+
},
116+
};
117+
118+
/**
119+
* 文件上传API
120+
*/
121+
export const fileApi = {
122+
// 上传文件
123+
uploadFile(file, user = 'default-user') {
124+
const formData = new FormData();
125+
formData.append('file', file);
126+
formData.append('user', user);
127+
128+
return request.post('/files/upload', formData, {
129+
headers: {
130+
'Content-Type': 'multipart/form-data',
131+
},
132+
});
133+
},
134+
};
135+
136+
// 默认导出所有API
137+
export default {
138+
conversation: conversationApi,
139+
message: messageApi,
140+
app: appApi,
141+
file: fileApi,
142+
};

examples/src/api/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// API服务入口文件
2+
export * from './dify';
3+
export { default as difyApi } from './dify';
Lines changed: 12 additions & 0 deletions
Loading

examples/src/router/index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Attachments from '../views/Attachments.vue';
44
import Bubble from '../views/Bubble.vue';
55
import BubbleList from '../views/BubbleList.vue';
66
import Conversations from '../views/Conversations.vue';
7+
import DifyChat from '../views/DifyChat/index.vue';
78
import FilesCard from '../views/FilesCard.vue';
89
import Overview from '../views/Overview.vue';
910
import Prompts from '../views/Prompts.vue';
@@ -94,6 +95,14 @@ export default new Router({
9495
name: 'StreamMixins',
9596
component: StreamMixins,
9697
},
98+
{
99+
path: '/difychat',
100+
name: 'DifyChat',
101+
component: DifyChat,
102+
meta: {
103+
hideInMenu: true,
104+
},
105+
},
97106
{
98107
path: '*',
99108
redirect: '/',

0 commit comments

Comments
 (0)