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;
|
aiDetailGenerationEnabled: boolean;
|
||||||
canvasDefaultModelId: string | null;
|
canvasDefaultModelId: string | null;
|
||||||
canvasAutoModeDefaultModelId: string | null;
|
canvasAutoModeDefaultModelId: string | null;
|
||||||
|
canvasDetailDefaultModelId: string | null;
|
||||||
lovartComposerPrefix: string;
|
lovartComposerPrefix: string;
|
||||||
lovartComposerPreviewTexts: string[];
|
lovartComposerPreviewTexts: string[];
|
||||||
lovartPromptTagVisibility: LovartPromptTagVisibility;
|
lovartPromptTagVisibility: LovartPromptTagVisibility;
|
||||||
@ -520,6 +521,7 @@ export function AdminSettingsClient() {
|
|||||||
aiDetailGenerationEnabled: false,
|
aiDetailGenerationEnabled: false,
|
||||||
canvasDefaultModelId: null,
|
canvasDefaultModelId: null,
|
||||||
canvasAutoModeDefaultModelId: null,
|
canvasAutoModeDefaultModelId: null,
|
||||||
|
canvasDetailDefaultModelId: null,
|
||||||
lovartComposerPrefix: "让Buyi-ai",
|
lovartComposerPrefix: "让Buyi-ai",
|
||||||
lovartComposerPreviewTexts: [
|
lovartComposerPreviewTexts: [
|
||||||
"打造引人注目的社交媒体视觉",
|
"打造引人注目的社交媒体视觉",
|
||||||
@ -587,6 +589,7 @@ export function AdminSettingsClient() {
|
|||||||
aiDetailGenerationEnabled: siteSettingsData.aiDetailGenerationEnabled ?? false,
|
aiDetailGenerationEnabled: siteSettingsData.aiDetailGenerationEnabled ?? false,
|
||||||
canvasDefaultModelId: siteSettingsData.canvasDefaultModelId || null,
|
canvasDefaultModelId: siteSettingsData.canvasDefaultModelId || null,
|
||||||
canvasAutoModeDefaultModelId: siteSettingsData.canvasAutoModeDefaultModelId || null,
|
canvasAutoModeDefaultModelId: siteSettingsData.canvasAutoModeDefaultModelId || null,
|
||||||
|
canvasDetailDefaultModelId: siteSettingsData.canvasDetailDefaultModelId || null,
|
||||||
lovartComposerPrefix:
|
lovartComposerPrefix:
|
||||||
String((siteSettingsData as any).lovartComposerPrefix || "").trim() ||
|
String((siteSettingsData as any).lovartComposerPrefix || "").trim() ||
|
||||||
"让Buyi-ai",
|
"让Buyi-ai",
|
||||||
@ -4556,6 +4559,34 @@ export function AdminSettingsClient() {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</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">
|
<div className="space-y-2">
|
||||||
<Label htmlFor="canvasDefaultModelId">画布默认生图模型</Label>
|
<Label htmlFor="canvasDefaultModelId">画布默认生图模型</Label>
|
||||||
<Select
|
<Select
|
||||||
|
|||||||
@ -285,6 +285,7 @@ export async function GET() {
|
|||||||
canvasEnabled: true,
|
canvasEnabled: true,
|
||||||
canvasDefaultModelId: null,
|
canvasDefaultModelId: null,
|
||||||
canvasAutoModeDefaultModelId: null,
|
canvasAutoModeDefaultModelId: null,
|
||||||
|
canvasDetailDefaultModelId: null,
|
||||||
lovartPromoText: "现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠",
|
lovartPromoText: "现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠",
|
||||||
lovartPromoActionText: "立即升级",
|
lovartPromoActionText: "立即升级",
|
||||||
lovartHeroTitle: "由壹点AI 让设计更简单",
|
lovartHeroTitle: "由壹点AI 让设计更简单",
|
||||||
@ -366,6 +367,7 @@ const updateSchema = z.object({
|
|||||||
aiDetailGenerationEnabled: z.boolean().optional(),
|
aiDetailGenerationEnabled: z.boolean().optional(),
|
||||||
canvasDefaultModelId: z.string().nullable().optional(),
|
canvasDefaultModelId: z.string().nullable().optional(),
|
||||||
canvasAutoModeDefaultModelId: z.string().nullable().optional(),
|
canvasAutoModeDefaultModelId: z.string().nullable().optional(),
|
||||||
|
canvasDetailDefaultModelId: z.string().nullable().optional(),
|
||||||
lovartPromoText: z.string().max(300).optional(),
|
lovartPromoText: z.string().max(300).optional(),
|
||||||
lovartPromoActionText: z.string().max(32).optional(),
|
lovartPromoActionText: z.string().max(32).optional(),
|
||||||
lovartHeroTitle: z.string().max(300).optional(),
|
lovartHeroTitle: z.string().max(300).optional(),
|
||||||
@ -754,6 +756,7 @@ export async function PUT(request: NextRequest) {
|
|||||||
canvasEnabled: siteSettingsPayload.canvasEnabled ?? true,
|
canvasEnabled: siteSettingsPayload.canvasEnabled ?? true,
|
||||||
canvasDefaultModelId: siteSettingsPayload.canvasDefaultModelId,
|
canvasDefaultModelId: siteSettingsPayload.canvasDefaultModelId,
|
||||||
canvasAutoModeDefaultModelId: siteSettingsPayload.canvasAutoModeDefaultModelId,
|
canvasAutoModeDefaultModelId: siteSettingsPayload.canvasAutoModeDefaultModelId,
|
||||||
|
canvasDetailDefaultModelId: siteSettingsPayload.canvasDetailDefaultModelId,
|
||||||
lovartPromoText:
|
lovartPromoText:
|
||||||
siteSettingsPayload.lovartPromoText ??
|
siteSettingsPayload.lovartPromoText ??
|
||||||
"现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠",
|
"现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠",
|
||||||
|
|||||||
@ -1865,6 +1865,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
|||||||
aiDetailGenerationEnabled?: boolean;
|
aiDetailGenerationEnabled?: boolean;
|
||||||
canvasDefaultModelId?: string | null;
|
canvasDefaultModelId?: string | null;
|
||||||
canvasAutoModeDefaultModelId?: string | null;
|
canvasAutoModeDefaultModelId?: string | null;
|
||||||
|
canvasDetailDefaultModelId?: string | null;
|
||||||
}>("/api/site-settings", fetcher);
|
}>("/api/site-settings", fetcher);
|
||||||
const { data: membershipSummary } = useSWR<{
|
const { data: membershipSummary } = useSWR<{
|
||||||
pointsSystemConfig?: {
|
pointsSystemConfig?: {
|
||||||
@ -3553,7 +3554,8 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
|||||||
const modelForGeneration =
|
const modelForGeneration =
|
||||||
selectedModelId !== "auto"
|
selectedModelId !== "auto"
|
||||||
? selectedModelId
|
? selectedModelId
|
||||||
: siteSettings?.canvasAutoModeDefaultModelId ||
|
: siteSettings?.canvasDetailDefaultModelId ||
|
||||||
|
siteSettings?.canvasAutoModeDefaultModelId ||
|
||||||
siteSettings?.canvasDefaultModelId ||
|
siteSettings?.canvasDefaultModelId ||
|
||||||
undefined;
|
undefined;
|
||||||
for (let index = 0; index < prompts.length; index += 1) {
|
for (let index = 0; index < prompts.length; index += 1) {
|
||||||
@ -3973,6 +3975,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
|||||||
saveDetailArchiveSnapshot,
|
saveDetailArchiveSnapshot,
|
||||||
setMessages,
|
setMessages,
|
||||||
siteSettings?.canvasAutoModeDefaultModelId,
|
siteSettings?.canvasAutoModeDefaultModelId,
|
||||||
|
siteSettings?.canvasDetailDefaultModelId,
|
||||||
siteSettings?.canvasDefaultModelId,
|
siteSettings?.canvasDefaultModelId,
|
||||||
updateLocalDetailArchive,
|
updateLocalDetailArchive,
|
||||||
]);
|
]);
|
||||||
@ -4030,7 +4033,8 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
|||||||
const modelForGeneration =
|
const modelForGeneration =
|
||||||
selectedModelId !== "auto"
|
selectedModelId !== "auto"
|
||||||
? selectedModelId
|
? selectedModelId
|
||||||
: siteSettings?.canvasAutoModeDefaultModelId ||
|
: siteSettings?.canvasDetailDefaultModelId ||
|
||||||
|
siteSettings?.canvasAutoModeDefaultModelId ||
|
||||||
siteSettings?.canvasDefaultModelId ||
|
siteSettings?.canvasDefaultModelId ||
|
||||||
undefined;
|
undefined;
|
||||||
const existingImageBottom = nodes
|
const existingImageBottom = nodes
|
||||||
@ -4251,6 +4255,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
|||||||
selectedModelId,
|
selectedModelId,
|
||||||
setMessages,
|
setMessages,
|
||||||
siteSettings?.canvasAutoModeDefaultModelId,
|
siteSettings?.canvasAutoModeDefaultModelId,
|
||||||
|
siteSettings?.canvasDetailDefaultModelId,
|
||||||
siteSettings?.canvasDefaultModelId,
|
siteSettings?.canvasDefaultModelId,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE "SiteSettings"
|
||||||
|
ADD COLUMN IF NOT EXISTS "canvasDetailDefaultModelId" varchar(128);
|
||||||
@ -183,6 +183,13 @@
|
|||||||
"when": 1771588800000,
|
"when": 1771588800000,
|
||||||
"tag": "0039_add_ai_model_hidden",
|
"tag": "0039_add_ai_model_hidden",
|
||||||
"breakpoints": true
|
"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), // 是否启用无限画布功能
|
canvasEnabled: boolean("canvasEnabled").notNull().default(true), // 是否启用无限画布功能
|
||||||
canvasDefaultModelId: varchar("canvasDefaultModelId", { length: 128 }), // 画布默认选择的模型ID(null表示智能自动)
|
canvasDefaultModelId: varchar("canvasDefaultModelId", { length: 128 }), // 画布默认选择的模型ID(null表示智能自动)
|
||||||
canvasAutoModeDefaultModelId: varchar("canvasAutoModeDefaultModelId", { length: 128 }), // 智能自动模式下实际使用的默认生图模型ID
|
canvasAutoModeDefaultModelId: varchar("canvasAutoModeDefaultModelId", { length: 128 }), // 智能自动模式下实际使用的默认生图模型ID
|
||||||
|
canvasDetailDefaultModelId: varchar("canvasDetailDefaultModelId", { length: 128 }), // AI详情生成专用默认生图模型ID
|
||||||
lovartPromoText: text("lovartPromoText").default(
|
lovartPromoText: text("lovartPromoText").default(
|
||||||
"现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠"
|
"现在升级,立享 Kling 3.0 与 Nano Banana Pro,最高 5 折优惠"
|
||||||
),
|
),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user