From 36e91aab3c79a94f9bfc32ef40b665f60df42664 Mon Sep 17 00:00:00 2001 From: "Azmat@qq.com" Date: Fri, 14 Aug 2026 18:23:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E9=A1=B9=E7=9B=AE=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E9=98=B6=E6=AE=B5=E7=9A=84=E8=A7=86=E9=A2=91=E6=97=B6?= =?UTF-8?q?=E9=95=BF=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/frontend/src/routes/projects.tsx | 37 +++++---------------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/core/frontend/src/routes/projects.tsx b/core/frontend/src/routes/projects.tsx index 84a9c8b..fabb5f1 100644 --- a/core/frontend/src/routes/projects.tsx +++ b/core/frontend/src/routes/projects.tsx @@ -11,14 +11,7 @@ import "../project-wizard-page.css"; const PROJ_PAGE_SIZE = 10; // 项目列表/网格每页条数 -// 时长 / 脚本风格 / 人设 — 与 projects-new.html 基线对齐(创建页仅作视觉选择, -// 脚本走向细节进入 Stage 1;onCreate 契约只携带 name + product)。 -const WIZ_DURATIONS = [ - { id: "0-15", label: "0-15 秒", shots: [4, 5], tag: "精准短片", note: "适合短平快投放" }, - { id: "0-30", label: "0-30 秒", shots: [6, 8], tag: "卖点展开", note: "适合卖点展开" }, - { id: "0-60", label: "0-60 秒", shots: [10, 12], tag: "故事化", note: "适合故事化表达" } -]; - +// 创建页只保留商品与项目名;时长在脚本阶段统一落定,避免前置参数脱钩。 const WIZ_PAGE_SIZE = 7; // 4 列 × 2 行 = 8 格,首格为「创建新商品」→ 每页 7 商品 type WizProductPayload = { @@ -61,8 +54,7 @@ export function ProjectWizardPage({ products, projects = [], preselectProductId, // 新建商品 · 右侧抽屉开关(抽屉实现与商品库共用 ProductCreateDrawer,保证同一流程) const [npOpen, setNpOpen] = useState(false); - // Step 2 · 配置(基础配置只保留项目名 + 成片时长;脚本风格/人物设定已移到流水线第 1 步脚本助手) - const [duration, setDuration] = useState("0-15"); + // Step 2 · 配置(基础配置只保留项目名;脚本风格/人物设定与时长都在流水线第 1 步统一落定) const [points, setPoints] = useState>({}); useEffect(() => { @@ -129,11 +121,9 @@ export function ProjectWizardPage({ products, projects = [], preselectProductId, setNpOpen(true); } - const durObj = WIZ_DURATIONS.find((d) => d.id === duration); - const product1Done = !!productId; - // 信息没填完(项目名 < 2 字 / 未选时长)时「开始」禁用 - const config2Done = !!durObj && name.trim().length >= 2; + // 项目创建只要求选商品 + 输入项目名;时长在脚本阶段确认,避免阶段前置参数脱钩 + const config2Done = name.trim().length >= 2; const canStart = product1Done && config2Done; // 提交中状态:创建项目后 App 端全量刷新需数秒,按钮要给「创建中…」反馈,避免用户以为没点上 @@ -150,7 +140,6 @@ export function ProjectWizardPage({ products, projects = [], preselectProductId, product: product.id, metadata: { wizard: { - duration, selling_point_ids: selectedPoints } } @@ -197,7 +186,7 @@ export function ProjectWizardPage({ products, projects = [], preselectProductId, ) : "2"}
项目配置
-
{durObj ? `${durObj.label} · ${name.trim() || "未命名"}` : "项目名 · 成片时长"}
+
{name.trim() || "未命名"}
@@ -298,7 +287,7 @@ export function ProjectWizardPage({ products, projects = [], preselectProductId,

第 2 步 · 项目配置

-

基础配置只保留项目名和成片时长。脚本来源、风格和人物设定已移到流水线第 1 步由脚本助手引导。

+

基础配置只保留项目名;脚本来源、风格、人物设定和最终时长都在流水线第 1 步由脚本助手统一落定。

@@ -306,20 +295,6 @@ export function ProjectWizardPage({ products, projects = [], preselectProductId, { setName(event.target.value); setNameTouched(true); }} />
-
- -
- {WIZ_DURATIONS.map((d) => ( -
setDuration(d.id)}> - [ {d.tag} ] -

{d.label}

-
{d.shots[0]}-{d.shots[1]} 镜 · 9:16
-
{d.note}
-
- ))} -
-
- {Object.keys(points).length > 0 && (