import { NextResponse } from "next/server"; import { z } from "zod"; import { auth } from "@/app/(auth)/auth"; import { getSystemSetting } from "@/lib/db/queries"; import { VIDEO_CANVAS_FUNCTION_CONFIG_KEY, defaultVideoCanvasFunctionConfig, normalizeVideoCanvasFunctionConfig, } from "@/lib/video-canvas/config"; import { rankVideoCanvasEffectPresets } from "@/lib/video-canvas/video-effects"; export const dynamic = "force-dynamic"; const requestSchema = z.object({ query: z.string().trim().max(100).default(""), }); export async function POST(request: Request) { const session = await auth(); if (!session?.user?.id) { return NextResponse.json({ success: false, error: "未登录" }, { status: 401 }); } const parsed = requestSchema.safeParse(await request.json().catch(() => ({}))); if (!parsed.success) { return NextResponse.json( { success: false, error: parsed.error.issues[0]?.message || "搜索参数无效" }, { status: 400 }, ); } const setting = await getSystemSetting({ key: VIDEO_CANVAS_FUNCTION_CONFIG_KEY, }).catch(() => null); const config = setting?.value ? normalizeVideoCanvasFunctionConfig(setting.value) : defaultVideoCanvasFunctionConfig; if (!config.enabled) { return NextResponse.json( { success: false, error: "视频画布功能已停用" }, { status: 403 }, ); } return NextResponse.json({ success: true, data: { presets: rankVideoCanvasEffectPresets( config.effectPresets, parsed.data.query, ), query: parsed.data.query, }, }); }