diff --git a/core/frontend/src/pipeline-page.css b/core/frontend/src/pipeline-page.css index 8189dae..38f2114 100644 --- a/core/frontend/src/pipeline-page.css +++ b/core/frontend/src/pipeline-page.css @@ -285,9 +285,11 @@ .asset-sec .sec-h { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; } .asset-sec .sec-h h3 { font-size: 15px; font-weight: 600; } - .asset-grid-2 { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; } + /* 固定 240px 列(不拉伸)→ 人物/场景卡与上方商品卡精确等大 */ + .asset-grid-2 { display: grid; grid-template-columns: repeat(auto-fill, 240px); gap: 14px; } .prod-row { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; } - .prod-row > .asset-card-2 { flex: 0 0 auto; width: auto; max-width: none; min-width: 0; height: 360px; aspect-ratio: 3 / 5; } + /* 商品卡与下方人物/场景卡统一尺寸:240px 宽 + 方图(原 360px高/3:5 高窄,跟人物卡不一致) */ + .prod-row > .asset-card-2 { flex: 0 0 240px; width: 240px; min-width: 0; } .prod-preview { flex: 0 0 360px; height: 360px; background: var(--surface); border: 1px solid var(--border-faint); border-radius: var(--r-md); padding: 12px; display: none; flex-direction: column; gap: 10px; } .prod-preview.show { display: flex; } .prod-preview-h { display: flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: 12px; color: var(--black-alpha-56); letter-spacing: .04em; text-transform: uppercase; } @@ -328,7 +330,7 @@ .asset-card-2 .body-2 .btn:disabled:hover, .asset-card-2 .body-2 .btn.disabled:hover { background: transparent; border-color: transparent; color: var(--black-alpha-32); box-shadow: none; transform: none; } .asset-card-2.prod-lib-card:hover { background: var(--background-lighter); border-color: var(--black-alpha-48); } - .asset-card-2.prod-lib-card .prod-thumb { flex: 1 1 0; min-height: 0; position: relative; aspect-ratio: auto; } + .asset-card-2.prod-lib-card .prod-thumb { position: relative; aspect-ratio: 1; } .asset-card-2.prod-lib-card .prod-body { padding: 14px 14px 12px; flex: 0 0 auto; } .asset-card-2.prod-lib-card .prod-name { font-size: 14px; font-weight: 600; color: var(--accent-black); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .asset-card-2.prod-lib-card .prod-cat { display: inline-flex; align-items: center; margin-top: 8px; padding: 2px 8px; background: var(--background-lighter); color: var(--black-alpha-72); border-radius: var(--r-sm); font-size: 12px; } diff --git a/docs/todo/UI还原核对-2026-06-20.md b/docs/todo/UI还原核对-2026-06-20.md index 2eb798a..ac562f2 100644 --- a/docs/todo/UI还原核对-2026-06-20.md +++ b/docs/todo/UI还原核对-2026-06-20.md @@ -137,9 +137,12 @@ 摸完代码发现:**火山人像内容审核(P0 法务红线)绑死在 `category=person`**(assets/review.py:64、adminpanel 审核队列)。现在三视图算 person → **会送审**。若按新分类把三视图/模特上身图从 person 拆走,它们就**不再过内容审核**。这是合规决策,不能我自己定。 -**需你拍板:** -1. **三视图 / 模特上身图 拆成独立类后,要不要仍送火山内容审核?**(建议:要——它们都是真人图;那我把审核过滤改成 category ∈ {模特, 三视图, 模特上身图}) -2. **已有 505 条历史素材要不要一起重新打标?**(三视图现在混在 person、分镜混在 scene)→ 需要一支数据迁移在测试库跑(可逆,你确认低峰再跑)。 +**✅ 用户已拍板(2026-06-20):** +平台两大趴 = ① 图片资产生成 ② 带货视频生成。通用模特可拍上身图、可出演视频。 +- **只有「视频趴」带人脸素材送审**:模特形象图(立绘) / 三视图 / 分镜图 → 调 Seedance 出视频前必须过火山审核(不然被 ban)。 +- **图片趴不送审**:模特上身图 / 平台套图 / 自由创作图 —— 图直接给电商用,不进视频、不调 Seedance。即便商家拿上身图当参考生成视频,那是第二阶段的事(等第一版反馈再说)。 +- 所以审核集合 = **{PERSON(模特形象图), TRI_VIEW(三视图), STORYBOARD(分镜图)}**;MODEL_TRYON/PLATFORM_KIT/FREE_CREATE 不审。 +- 待确认:历史 505 条数据重打标用一支可逆数据迁移(你确认低峰再在测试库跑)。 拍完这俩,W4 我一次做完:Asset.Category 细化 + 各生成流程打标 + 前端标签表 + 演员库三毛病 + 资产库「成片」→「素材」+ 最终成片隐藏 + 数据迁移 + 后端测试。