Initial commit

This commit is contained in:
饺子大魔王
2025-04-11 08:14:27 +08:00
commit 626af60456
1540 changed files with 110511 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo } from '@/app/api/utils/common'
export async function POST(request: NextRequest) {
try {
const formData = await request.formData()
const { user } = getInfo(request)
formData.append('user', user)
const { data } = await client.aduioToText(formData)
return NextResponse.json(data)
}
catch (e: any) {
return NextResponse.json(e.message)
}
}
@@ -0,0 +1,12 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo } from '@/app/api/utils/common'
export async function POST(request: NextRequest, { params }: {
params: { taskId: string }
}) {
const { taskId } = await params
const { user } = getInfo(request)
const { data } = await client.stopChat(taskId, user)
return NextResponse.json(data)
}
+16
View File
@@ -0,0 +1,16 @@
import { type NextRequest } from 'next/server'
import { client, getInfo } from '@/app/api/utils/common'
export async function POST(request: NextRequest) {
const body = await request.json()
const {
inputs,
query,
files,
conversation_id: conversationId,
response_mode: responseMode,
} = body
const { user } = getInfo(request)
const res = await client.createChatMessage(inputs, query, user, responseMode, conversationId, files)
return new Response(res.data as any)
}
@@ -0,0 +1,19 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo } from '@/app/api/utils/common'
export async function POST(request: NextRequest, { params }: {
params: { conversationId: string }
}) {
const body = await request.json()
const {
auto_generate,
name,
} = body
const { conversationId } = await params
const { user } = getInfo(request)
// auto generate name
const { data } = await client.renameConversation(conversationId, name, user, auto_generate)
return NextResponse.json(data)
}
@@ -0,0 +1,13 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo } from '@/app/api/utils/common'
export async function DELETE(request: NextRequest, { params }: {
params: { conversationId: string }
}) {
const { conversationId } = await params
const { user } = await getInfo(request)
const { data } = await client.deleteConversation(conversationId, user)
return NextResponse.json(data)
}
+19
View File
@@ -0,0 +1,19 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo, setSession } from '@/app/api/utils/common'
export async function GET(request: NextRequest) {
const { sessionId, user } = getInfo(request)
try {
const { data }: any = await client.getConversations(user)
return NextResponse.json(data, {
headers: setSession(sessionId),
})
}
catch (error: any) {
return NextResponse.json({
data: [],
error: error.message,
})
}
}
+27
View File
@@ -0,0 +1,27 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import axios from 'axios';
import FormData from 'form-data'
import { client, getInfo } from '@/app/api/utils/common'
export async function POST(request: NextRequest) {
try {
const { user } = getInfo(request)
const { url } = await request.json()
const filename = url.split('/').pop() || '';
const response = await axios.get(url, { responseType: 'arraybuffer' });
if (response.status !== 200) {
return NextResponse.json({ error: 'Failed to fetch the file' });
}
const buffer = Buffer.from(response.data);
const formData = new FormData() as any;
formData.append('file', buffer, { filename });
formData.append('user', user)
const { data } = await client.fileUpload(formData)
// 返回缺少 url 字段
return NextResponse.json(data)
}
catch (e: any) {
return NextResponse.json(e.message)
}
}
+17
View File
@@ -0,0 +1,17 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo } from '@/app/api/utils/common'
export async function POST(request: NextRequest) {
try {
const formData = await request.formData()
const { user } = getInfo(request)
formData.append('user', user)
const { data } = await client.fileUpload(formData)
return NextResponse.json(data)
}
catch (e: any) {
return NextResponse.json(e.message)
}
}
+35
View File
@@ -0,0 +1,35 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo, setSession } from '@/app/api/utils/common'
export async function GET(request: NextRequest) {
const { sessionId, user } = getInfo(request)
try {
const { data } = await client.getInfo(user)
// 接口未返回 建议从配置文件或者环境变量获取
data.app_id = 'app_id'
data.site = {
"title": "卓远智能问答",
"chat_color_theme": null,
"chat_color_theme_inverted": false,
"icon_type": "image",
"icon": "48159ee8",
"icon_background": "#E4FBCC",
"icon_url": "/files/aaa.png",
"description": "Zhuoyuan AI Helper",
"copyright": null,
"privacy_policy": null,
"custom_disclaimer": "",
"default_language": "zh-Hans",
"prompt_public": false,
"show_workflow_steps": true,
"use_icon_as_answer_icon": false
}
return NextResponse.json(data as object, {
headers: setSession(sessionId),
})
}
catch (error) {
return NextResponse.json([])
}
}
@@ -0,0 +1,16 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo } from '@/app/api/utils/common'
export async function POST(request: NextRequest, { params }: {
params: { messageId: string }
}) {
const body = await request.json()
const {
rating,
} = body
const { messageId } = await params
const { user } = getInfo(request)
const { data } = await client.messageFeedback(messageId, rating, user)
return NextResponse.json(data)
}
@@ -0,0 +1,10 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo } from '@/app/api/utils/common'
export async function GET(request: NextRequest, params: { messageId: string }) {
const { messageId } = await params
const { user } = getInfo(request)
const { data }: any = await client.getSuggested(messageId, user,)
return NextResponse.json(data)
}
+13
View File
@@ -0,0 +1,13 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo, setSession } from '@/app/api/utils/common'
export async function GET(request: NextRequest) {
const { sessionId, user } = getInfo(request)
const { searchParams } = new URL(request.url)
const conversationId = searchParams.get('conversation_id')
const { data }: any = await client.getConversationMessages(user, conversationId as string)
return NextResponse.json(data, {
headers: setSession(sessionId),
})
}
+16
View File
@@ -0,0 +1,16 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo, setSession } from '@/app/api/utils/common'
export async function GET(request: NextRequest) {
const { sessionId } = getInfo(request)
try {
const { data } = await client.getMeta()
return NextResponse.json(data as object, {
headers: setSession(sessionId),
})
}
catch (error) {
return NextResponse.json([])
}
}
+16
View File
@@ -0,0 +1,16 @@
import { type NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
import { client, getInfo, setSession } from '@/app/api/utils/common'
export async function GET(request: NextRequest) {
const { sessionId, user } = getInfo(request)
try {
const { data } = await client.getApplicationParameters(user)
return NextResponse.json(data as object, {
headers: setSession(sessionId),
})
}
catch (error) {
return NextResponse.json([])
}
}
+20
View File
@@ -0,0 +1,20 @@
import { type NextRequest } from 'next/server'
import { ChatClient } from 'dify-client-plus'
import { v4 } from 'uuid'
import { API_KEY, API_URL } from '@/config'
export const getInfo = (request: NextRequest) => {
const username = request.cookies.get('username')?.value || 'no-user'
const sessionId = request.cookies.get('session_id')?.value || v4()
const user = `user_${username}:${sessionId}`
return {
sessionId,
user,
}
}
export const setSession = (sessionId: string) => {
return { 'Set-Cookie': `session_id=${sessionId}` }
}
export const client = new ChatClient(API_KEY, API_URL || undefined)