Your Name 53ddb7e585
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
Initial commit - clean repository
2025-12-17 20:15:18 +08:00

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