96 lines
2.9 KiB
TypeScript
96 lines
2.9 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { db } from "@/lib/db";
|
|
import { systemSettings } from "@/lib/db/schema";
|
|
import { eq } from "drizzle-orm";
|
|
import { auth } from "@/app/(auth)/auth";
|
|
|
|
const SETTING_KEY = "starter_questions";
|
|
const DEFAULT_QUESTIONS = [
|
|
// AI图片编辑
|
|
"帮我优化这张产品图片,突出产品特点和卖点",
|
|
"请美化这张商品图片,提升视觉吸引力",
|
|
"帮我调整产品图片的色调和构图",
|
|
// 市场分析
|
|
"分析一下当前电商市场的热门趋势和消费者偏好",
|
|
"帮我分析竞品的产品策略和定价",
|
|
"请分析目标用户群体的消费习惯",
|
|
// 文案优化
|
|
"优化这段产品描述文案,让它更有吸引力和转化力",
|
|
"帮我改写产品标题,提升点击率",
|
|
"请优化商品详情页的文案结构",
|
|
// 卖点优化
|
|
"提炼这个产品的核心卖点,突出差异化优势",
|
|
"帮我找出产品的独特价值主张",
|
|
"请分析产品的竞争优势并提炼卖点",
|
|
// 视频生成
|
|
"帮我生成一个产品宣传视频的创意脚本",
|
|
"请为这个产品设计视频营销方案",
|
|
"帮我写一个产品演示视频的脚本",
|
|
];
|
|
|
|
// GET: 公开
|
|
export async function GET() {
|
|
try {
|
|
const [setting] = await db
|
|
.select()
|
|
.from(systemSettings)
|
|
.where(eq(systemSettings.key, SETTING_KEY))
|
|
.limit(1);
|
|
|
|
let questions = DEFAULT_QUESTIONS;
|
|
if (setting && Array.isArray(setting.value)) {
|
|
questions = setting.value as string[];
|
|
}
|
|
|
|
return NextResponse.json(questions);
|
|
} catch (error) {
|
|
console.error("[Starter Questions API] Get error:", error);
|
|
return NextResponse.json(DEFAULT_QUESTIONS); // 出错时返回默认值
|
|
}
|
|
}
|
|
|
|
// PUT: 管理员
|
|
export async function PUT(request: NextRequest) {
|
|
try {
|
|
const session = await auth();
|
|
if (session?.user?.type !== "admin") {
|
|
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
}
|
|
|
|
const body = await request.json();
|
|
if (!Array.isArray(body)) {
|
|
return NextResponse.json({ error: "Invalid data format" }, { status: 400 });
|
|
}
|
|
|
|
// 查找是否存在
|
|
const [existing] = await db
|
|
.select()
|
|
.from(systemSettings)
|
|
.where(eq(systemSettings.key, SETTING_KEY))
|
|
.limit(1);
|
|
|
|
if (existing) {
|
|
await db
|
|
.update(systemSettings)
|
|
.set({
|
|
value: body,
|
|
updatedAt: new Date(),
|
|
updatedBy: session.user.id,
|
|
})
|
|
.where(eq(systemSettings.id, existing.id));
|
|
} else {
|
|
await db.insert(systemSettings).values({
|
|
key: SETTING_KEY,
|
|
value: body,
|
|
updatedBy: session.user.id,
|
|
});
|
|
}
|
|
|
|
return NextResponse.json({ success: true });
|
|
} catch (error) {
|
|
console.error("[Starter Questions API] Update error:", error);
|
|
return NextResponse.json({ error: "Failed to update" }, { status: 500 });
|
|
}
|
|
}
|
|
|