- 在图片预览组件左上角添加变清晰和抠图按钮 - 创建图片处理加载组件(类似Gemini生图的动态卡片效果) - 实现点击按钮后的处理逻辑:创建临时消息、调用API、更新消息 - 添加消息保存API用于保存处理后的图片消息 - 当消息文本为'正在变清晰...'或'正在抠图...'时显示动态加载组件 - 处理完成后替换加载卡片为处理后的图片并保存到数据库
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { auth } from "@/app/(auth)/auth";
|
|
import { saveMessages } from "@/lib/db/queries";
|
|
import type { DBMessage } from "@/lib/db/schema";
|
|
|
|
/**
|
|
* 保存消息到数据库的API
|
|
* 用于图片处理等场景中保存助手回复消息
|
|
*/
|
|
export async function POST(request: NextRequest) {
|
|
try {
|
|
const session = await auth();
|
|
|
|
if (!session?.user?.id) {
|
|
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
}
|
|
|
|
const body = await request.json();
|
|
const { chatId, message } = body;
|
|
|
|
if (!chatId || !message) {
|
|
return NextResponse.json(
|
|
{ error: "Missing required fields: chatId and message" },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
|
|
// 构造DBMessage对象
|
|
const dbMessage: DBMessage = {
|
|
id: message.id,
|
|
chatId,
|
|
role: message.role || "assistant",
|
|
parts: message.parts || [],
|
|
attachments: message.attachments || [],
|
|
createdAt: message.createdAt ? new Date(message.createdAt) : new Date(),
|
|
videoStorageStatus: null,
|
|
temporaryVideoUrl: null,
|
|
permanentVideoUrl: null,
|
|
archivedAt: null,
|
|
videoMetadata: null,
|
|
};
|
|
|
|
// 保存消息到数据库
|
|
await saveMessages({ messages: [dbMessage] });
|
|
|
|
return NextResponse.json({ success: true });
|
|
} catch (error) {
|
|
console.error("[Messages API] Error:", error);
|
|
return NextResponse.json(
|
|
{ error: "Failed to save message" },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|
|
|