58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
/**
|
||
* 场景裂变配置 API(公开端点)
|
||
*
|
||
* 允许普通用户获取场景裂变的配置信息
|
||
*/
|
||
|
||
import { NextResponse } from "next/server";
|
||
import { auth } from "@/app/(auth)/auth";
|
||
import { getSystemSetting } from "@/lib/db/queries";
|
||
|
||
// 默认提示词
|
||
const FALLBACK_PROMPT = "将图1的产品替换到图2的场景中,保持图1产品的外观、颜色和细节不变,自然融合到图2的环境中。";
|
||
|
||
export async function GET() {
|
||
try {
|
||
// 需要登录但不需要 admin 权限
|
||
const session = await auth();
|
||
if (!session?.user?.id) {
|
||
return NextResponse.json(
|
||
{ error: "未登录" },
|
||
{ status: 401 }
|
||
);
|
||
}
|
||
|
||
// 获取配置
|
||
const setting = await getSystemSetting({ key: "scene_fusion_config" });
|
||
|
||
if (setting?.value) {
|
||
const config = setting.value as {
|
||
enabled?: boolean;
|
||
defaultPrompt?: string;
|
||
maxScenes?: number;
|
||
};
|
||
|
||
return NextResponse.json({
|
||
enabled: config.enabled ?? true,
|
||
defaultPrompt: config.defaultPrompt || FALLBACK_PROMPT,
|
||
maxScenes: config.maxScenes ?? 10,
|
||
mode: "diversity",
|
||
});
|
||
}
|
||
|
||
// 返回默认配置
|
||
return NextResponse.json({
|
||
enabled: true,
|
||
defaultPrompt: FALLBACK_PROMPT,
|
||
maxScenes: 10,
|
||
mode: "diversity",
|
||
});
|
||
} catch (error) {
|
||
console.error("[SceneFusion Config] Error:", error);
|
||
return NextResponse.json(
|
||
{ error: "获取配置失败" },
|
||
{ status: 500 }
|
||
);
|
||
}
|
||
}
|