diff --git a/core/frontend/src/routes/pipeline.tsx b/core/frontend/src/routes/pipeline.tsx index e168ed6..099dd80 100644 --- a/core/frontend/src/routes/pipeline.tsx +++ b/core/frontend/src/routes/pipeline.tsx @@ -412,10 +412,11 @@ export function PipelinePage(props: { const frameUrl = (f?: { asset: string; asset_url?: string } | null): string => f?.asset_url || assetUrl(f?.asset); const segUrl = (s?: { adopted_asset?: string | null; adopted_asset_url?: string } | null): string => s?.adopted_asset_url || assetUrl(s?.adopted_asset); - // ── Stage 1:脚本(采用版优先,否则最近一版)+ 镜头列表 ── + // ── Stage 1:脚本(显示最近一版,采用状态用 badge 标)+ 镜头列表 ── + // 取最近一版而非「采用版优先」:右侧 agent 重新生成后(新版未采用),左侧要立刻显示新稿供 review, + // 否则会一直停在旧的已采用版,看着像「没更新」。下游故事板/视频仍按后端 is_adopted 取,互不影响。 const scripts = [...(project.script_versions ?? [])]; const currentScript = - scripts.find((s) => s.is_adopted) || [...scripts].sort((a, b) => (b.created_at || "").localeCompare(a.created_at || ""))[0] || null; const scriptAdopted = Boolean(currentScript?.is_adopted); @@ -1834,6 +1835,17 @@ export function PipelinePage(props: { }} >{visualShown} + {/* ScriptDraft 结构化字段:镜型(钩子/痛点/卖点/CTA)+ 商品露出方式(只读展示) */} + {(shot.role || shot.product_exposure) ? ( +
+ 标记 +
+ {shot.role ? `镜型·${shot.role}` : ""} + {shot.role && shot.product_exposure ? " " : ""} + {shot.product_exposure ? `露出·${shot.product_exposure}` : ""} +
+
+ ) : null} {/* 行34 · 该卡之后挂着的本地草稿分镜(点「添加分镜」插入,可编辑,有内容失焦才落库) */}