feat: add dedicated default model for canvas detail generation
This commit is contained in:
parent
c5abfaf974
commit
9f66a5ea28
@ -199,6 +199,7 @@ type SiteSettings = {
|
||||
aiDetailGenerationEnabled: boolean;
|
||||
canvasDefaultModelId: string | null;
|
||||
canvasAutoModeDefaultModelId: string | null;
|
||||
canvasDetailDefaultModelId: string | null;
|
||||
lovartComposerPrefix: string;
|
||||
lovartComposerPreviewTexts: string[];
|
||||
lovartPromptTagVisibility: LovartPromptTagVisibility;
|
||||
@ -520,6 +521,7 @@ export function AdminSettingsClient() {
|
||||
aiDetailGenerationEnabled: false,
|
||||
canvasDefaultModelId: null,
|
||||
canvasAutoModeDefaultModelId: null,
|
||||
canvasDetailDefaultModelId: null,
|
||||
lovartComposerPrefix: "让Buyi-ai",
|
||||
lovartComposerPreviewTexts: [
|
||||
"打造引人注目的社交媒体视觉",
|
||||
@ -587,6 +589,7 @@ export function AdminSettingsClient() {
|
||||
aiDetailGenerationEnabled: siteSettingsData.aiDetailGenerationEnabled ?? false,
|
||||
canvasDefaultModelId: siteSettingsData.canvasDefaultModelId || null,
|
||||
canvasAutoModeDefaultModelId: siteSettingsData.canvasAutoModeDefaultModelId || null,
|
||||
canvasDetailDefaultModelId: siteSettingsData.canvasDetailDefaultModelId || null,
|
||||
lovartComposerPrefix:
|
||||
String((siteSettingsData as any).lovartComposerPrefix || "").trim() ||
|
||||
"让Buyi-ai",
|
||||
@ -4556,6 +4559,34 @@ export function AdminSettingsClient() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2 mt-4">
|
||||
<Label htmlFor="canvasDetailDefaultModelId">AI详情生成 - 默认生图模型</Label>
|
||||
<Select
|
||||
value={siteSettings.canvasDetailDefaultModelId || "agent-default"}
|
||||
onValueChange={(value) =>
|
||||
setSiteSettings({
|
||||
...siteSettings,
|
||||
canvasDetailDefaultModelId: value === "agent-default" ? null : value,
|
||||
})
|
||||
}
|
||||
>
|
||||
<SelectTrigger id="canvasDetailDefaultModelId">
|
||||
<SelectValue placeholder="选择默认模型" />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="agent-default">沿用Agent模式默认生图模型</SelectItem>
|
||||
{modelsData?.models?.filter((m: any) => m.supportsImageGen).map((model: any) => (
|
||||
<SelectItem key={model.id} value={model.id}>
|
||||
{model.displayName}
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<div className="text-xs text-muted-foreground">
|
||||
仅用于AI详情生成(含详情图与评价晒图)的默认出图模型;不影响普通生图模式。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<Label htmlFor="canvasDefaultModelId">画布默认生图模型</Label>
|
||||
<Select
|
||||
|
||||
@ -285,6 +285,7 @@ export async function GET() {
|
||||
canvasEnabled: true,
|
||||
canvasDefaultModelId: null,
|
||||
canvasAutoModeDefaultModelId: null,
|
||||
canvasDetailDefaultModelId: null,
|
||||
lovartPromoText: "现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠",
|
||||
lovartPromoActionText: "立即升级",
|
||||
lovartHeroTitle: "由壹点AI 让设计更简单",
|
||||
@ -366,6 +367,7 @@ const updateSchema = z.object({
|
||||
aiDetailGenerationEnabled: z.boolean().optional(),
|
||||
canvasDefaultModelId: z.string().nullable().optional(),
|
||||
canvasAutoModeDefaultModelId: z.string().nullable().optional(),
|
||||
canvasDetailDefaultModelId: z.string().nullable().optional(),
|
||||
lovartPromoText: z.string().max(300).optional(),
|
||||
lovartPromoActionText: z.string().max(32).optional(),
|
||||
lovartHeroTitle: z.string().max(300).optional(),
|
||||
@ -754,6 +756,7 @@ export async function PUT(request: NextRequest) {
|
||||
canvasEnabled: siteSettingsPayload.canvasEnabled ?? true,
|
||||
canvasDefaultModelId: siteSettingsPayload.canvasDefaultModelId,
|
||||
canvasAutoModeDefaultModelId: siteSettingsPayload.canvasAutoModeDefaultModelId,
|
||||
canvasDetailDefaultModelId: siteSettingsPayload.canvasDetailDefaultModelId,
|
||||
lovartPromoText:
|
||||
siteSettingsPayload.lovartPromoText ??
|
||||
"现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠",
|
||||
|
||||
@ -1865,6 +1865,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
||||
aiDetailGenerationEnabled?: boolean;
|
||||
canvasDefaultModelId?: string | null;
|
||||
canvasAutoModeDefaultModelId?: string | null;
|
||||
canvasDetailDefaultModelId?: string | null;
|
||||
}>("/api/site-settings", fetcher);
|
||||
const { data: membershipSummary } = useSWR<{
|
||||
pointsSystemConfig?: {
|
||||
@ -3553,7 +3554,8 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
||||
const modelForGeneration =
|
||||
selectedModelId !== "auto"
|
||||
? selectedModelId
|
||||
: siteSettings?.canvasAutoModeDefaultModelId ||
|
||||
: siteSettings?.canvasDetailDefaultModelId ||
|
||||
siteSettings?.canvasAutoModeDefaultModelId ||
|
||||
siteSettings?.canvasDefaultModelId ||
|
||||
undefined;
|
||||
for (let index = 0; index < prompts.length; index += 1) {
|
||||
@ -3973,6 +3975,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
||||
saveDetailArchiveSnapshot,
|
||||
setMessages,
|
||||
siteSettings?.canvasAutoModeDefaultModelId,
|
||||
siteSettings?.canvasDetailDefaultModelId,
|
||||
siteSettings?.canvasDefaultModelId,
|
||||
updateLocalDetailArchive,
|
||||
]);
|
||||
@ -4030,7 +4033,8 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
||||
const modelForGeneration =
|
||||
selectedModelId !== "auto"
|
||||
? selectedModelId
|
||||
: siteSettings?.canvasAutoModeDefaultModelId ||
|
||||
: siteSettings?.canvasDetailDefaultModelId ||
|
||||
siteSettings?.canvasAutoModeDefaultModelId ||
|
||||
siteSettings?.canvasDefaultModelId ||
|
||||
undefined;
|
||||
const existingImageBottom = nodes
|
||||
@ -4251,6 +4255,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
||||
selectedModelId,
|
||||
setMessages,
|
||||
siteSettings?.canvasAutoModeDefaultModelId,
|
||||
siteSettings?.canvasDetailDefaultModelId,
|
||||
siteSettings?.canvasDefaultModelId,
|
||||
]);
|
||||
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
ALTER TABLE "SiteSettings"
|
||||
ADD COLUMN IF NOT EXISTS "canvasDetailDefaultModelId" varchar(128);
|
||||
@ -183,6 +183,13 @@
|
||||
"when": 1771588800000,
|
||||
"tag": "0039_add_ai_model_hidden",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"version": "7",
|
||||
"when": 1771718400000,
|
||||
"tag": "0040_add_canvas_detail_default_model",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -355,6 +355,7 @@ export const siteSettings = pgTable("SiteSettings", {
|
||||
canvasEnabled: boolean("canvasEnabled").notNull().default(true), // 是否启用无限画布功能
|
||||
canvasDefaultModelId: varchar("canvasDefaultModelId", { length: 128 }), // 画布默认选择的模型ID(null表示智能自动)
|
||||
canvasAutoModeDefaultModelId: varchar("canvasAutoModeDefaultModelId", { length: 128 }), // 智能自动模式下实际使用的默认生图模型ID
|
||||
canvasDetailDefaultModelId: varchar("canvasDetailDefaultModelId", { length: 128 }), // AI详情生成专用默认生图模型ID
|
||||
lovartPromoText: text("lovartPromoText").default(
|
||||
"现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠"
|
||||
),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user