From 2793582fd15cb5e51c9a0d7438688936d4b13d1f Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 15 Feb 2026 20:18:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96AI=E8=AF=A6=E6=83=85=E7=94=9F?= =?UTF-8?q?=E6=88=90Agent=E6=B5=81=E7=A8=8B=E4=B8=8EPC=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../settings/admin-settings-client.tsx | 19 + app/api/canvas/detail-plan/route.ts | 781 +++++++++++ app/api/canvas/generate/image/route.ts | 31 +- app/api/site-settings/route.ts | 53 + components/canvas/CanvasChatPanel.tsx | 1215 ++++++++++++++++- 5 files changed, 2076 insertions(+), 23 deletions(-) create mode 100644 app/api/canvas/detail-plan/route.ts diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx index ad8258b7e..1972b9eba 100644 --- a/app/(admin)/settings/admin-settings-client.tsx +++ b/app/(admin)/settings/admin-settings-client.tsx @@ -193,6 +193,7 @@ type SiteSettings = { tutorialEnabled: boolean; rankingEnabled: boolean; canvasEnabled: boolean; + aiDetailGenerationEnabled: boolean; canvasDefaultModelId: string | null; canvasAutoModeDefaultModelId: string | null; lovartComposerPrefix: string; @@ -432,6 +433,7 @@ export function AdminSettingsClient() { tutorialEnabled: false, rankingEnabled: true, canvasEnabled: true, + aiDetailGenerationEnabled: false, canvasDefaultModelId: null, canvasAutoModeDefaultModelId: null, lovartComposerPrefix: "让Buyi-ai", @@ -496,6 +498,7 @@ export function AdminSettingsClient() { tutorialEnabled: siteSettingsData.tutorialEnabled ?? false, rankingEnabled: siteSettingsData.rankingEnabled ?? true, canvasEnabled: siteSettingsData.canvasEnabled ?? true, + aiDetailGenerationEnabled: siteSettingsData.aiDetailGenerationEnabled ?? false, canvasDefaultModelId: siteSettingsData.canvasDefaultModelId || null, canvasAutoModeDefaultModelId: siteSettingsData.canvasAutoModeDefaultModelId || null, lovartComposerPrefix: @@ -4144,6 +4147,22 @@ export function AdminSettingsClient() { {siteSettings.canvasEnabled && ( <> +
+
+ +
+ 开启后,无限画布前端会显示“AI详情生成”入口;关闭后前端隐藏该功能。 +
+
+ + setSiteSettings({ ...siteSettings, aiDetailGenerationEnabled: checked }) + } + /> +
+
updateDetailBriefField("targetAudience", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="主购买人群 *" + /> + updateDetailBriefField("usageScenario", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="需求场景 *" + /> + updateDetailBriefField("coreNeed", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="核心需求 *" + /> + updateDetailBriefField("productName", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="产品名称(选填)" + /> + updateDetailBriefField("mainUser", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="主使用者(选填)" + /> + updateDetailBriefField("triggerMoment", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="触发时刻(选填)" + /> + updateDetailBriefField("riskConcern", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="用户顾虑(选填)" + /> + updateDetailBriefField("expectedResult", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="期望结果(选填)" + /> + updateDetailBriefField("coreSellingPoint", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 xl:col-span-2 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="核心卖点关键词(选填)" + /> + updateDetailBriefField("positioningStatement", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 xl:col-span-2 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="一句话定位(选填)" + /> +
+ ) : null} + + +
+ + {detailSections.strategy ? ( +
+ updateDetailBriefField("priceBand", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="价格带(选填)" + /> + updateDetailBriefField("brandTone", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="品牌语气(选填)" + /> + updateDetailBriefField("competitorReference", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 xl:col-span-2 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="竞品对标(选填)" + /> + updateDetailBriefField("bannedWords", event.target.value)} + className="h-8 rounded-lg border border-violet-200/80 bg-white/90 px-2 text-xs outline-none focus:border-violet-400 xl:col-span-2 dark:border-violet-500/30 dark:bg-zinc-900/60" + placeholder="禁用表达(选填,逗号分隔)" + /> +