Your Name 1c7bd9e2d0
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
feat: 在聊天对话中为图片添加变清晰和抠图功能
- 在图片预览组件左上角添加变清晰和抠图按钮
- 创建图片处理加载组件(类似Gemini生图的动态卡片效果)
- 实现点击按钮后的处理逻辑:创建临时消息、调用API、更新消息
- 添加消息保存API用于保存处理后的图片消息
- 当消息文本为'正在变清晰...'或'正在抠图...'时显示动态加载组件
- 处理完成后替换加载卡片为处理后的图片并保存到数据库
2025-12-29 09:10:52 +08:00

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 }
);
}
}