+ {/* YYX#13:参考即梦 —— 显示用户输入的提示词 / 选择的平台 / 生成的张数 */}
- 商品
- {batchProductTitle(batch)}
+ 提示词
+ {batch.prompt || "—"}
- {mode === "model" && batch.modelName && (
-
- 模特
- {batch.modelName}
-
- )}
{mode === "cover" && (
平台
@@ -1313,8 +1307,14 @@ export function ImageWorkbenchPage({
)}
+ {mode === "model" && batch.modelName && (
+
+ 模特
+ {batch.modelName}
+
+ )}
-
结果
+
张数
{batch.count} 张 · {batch.ratio} · {generating ? "生成中" : failed ? "失败" : "已完成"}
{!generating && !failed && batch.results.some((a) => a.in_library)
@@ -1902,12 +1902,31 @@ export function ImageWorkbenchPage({
)}
@@ -1917,7 +1936,7 @@ export function ImageWorkbenchPage({
立即生成 (预估 ¥{(candidateCount * (mode === "model" ? 0.3 : 0.5)).toFixed(2)})
-
// 生成即扣费 · 生成的图先在工作台 · 点「加入资产库」才进资产库列表{anyGenerating ? " · 有批次生成中,可继续提交" : ""}
+ {/* YYX#9:去掉生成按钮下方那行说明文字 */}
diff --git a/core/frontend/src/routes/dashboard.tsx b/core/frontend/src/routes/dashboard.tsx
index 28c3bb1..b97c591 100644
--- a/core/frontend/src/routes/dashboard.tsx
+++ b/core/frontend/src/routes/dashboard.tsx
@@ -6,8 +6,9 @@ import { SkeletonRows } from "../components/loading";
import { money, stageMeta, statusPill } from "./stage-config";
import { Progress } from "../components/pipeline-stage";
import { IconKitSvg } from "../components/IconKitSvg";
+import { ProductCreateDrawer, type ProductCreatePayload } from "../components/product-create-drawer";
-export function Dashboard({ products, projects, productTotal, projectTotal, billing, userName, loading = false, navigate }: {
+export function Dashboard({ products, projects, productTotal, projectTotal, billing, userName, loading = false, navigate, onCreateProduct }: {
products: Product[];
projects: Project[];
productTotal?: number; // 后端真实总数(分页 count),用于「N 个/SKU」展示
@@ -16,7 +17,11 @@ export function Dashboard({ products, projects, productTotal, projectTotal, bill
userName?: string;
loading?: boolean;
navigate: (page: Page) => void;
+ // YYX#11:工作台点「新建商品」直接弹抽屉(复用商品库同一组件),而非跳商品库
+ onCreateProduct?: (payload: ProductCreatePayload) => Promise | void;
}) {
+ // YYX#11:新建商品抽屉开关
+ const [createDrawer, setCreateDrawer] = useState(false);
const projCount = projectTotal ?? projects.length;
const prodCount = productTotal ?? products.length;
// 资产总数:走轻量 summary 接口(各 tab 计数之和),不再吃全局 assets 全量数组
@@ -58,7 +63,7 @@ export function Dashboard({ products, projects, productTotal, projectTotal, bill
// {dateMono}·你有 {running} 个项目 正在进行中
-
++ navigate("account")}>余额 ¥
{money(billing?.account.balance)}
冻结 {money(reservedNum)} / 共 {money(fundsTotal)}
最近项目
navigate("projects")}>[ ALL · {projCount} ] →{loading && projects.length === 0 ?
: projects.slice(0, 6).map((project) =>
navigate("pipeline")}>9:16
{project.name}
{[productTitle(project.product), "AI 全生", project.video_segment_count ? `${project.video_segment_count} 镜` : null].filter(Boolean).join(" / ")}
{stageMeta[project.current_stage]?.label || project.current_stage}继续)}
快捷入口
[ /shortcuts ] navigate("products")} /> navigate("library")} /> navigate("account")} /> navigate("projects")} />
提示
[ FAQ ]扣费规则生成失败、超时、用户重跑 — 均不扣费。仅在你点 [ 确认通过 ] 时按 token 实际结算。
+ {/* YYX#11:新建商品抽屉 · 复用商品库同一组件,创建成功后跳商品库看新商品 */}
+ {onCreateProduct && (
+ setCreateDrawer(false)}
+ onCreate={onCreateProduct}
+ onCreated={() => { setCreateDrawer(false); navigate("products"); }}
+ />
+ )}
>
);
}