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