feat(workbench): 三工序图片区视觉对齐 + 任务中心聚合 + 工具台头部筛选

- model-photo / platform-cover · 头部 toolbar 落地: 时间 / 模特(平台) chip 下拉 + 折叠搜索
- model-photo / platform-cover · 图片卡片样式同步图片创作 (.io-cell): bg / hover / .gen 脉冲 / .err 红框
- model-photo / platform-cover · 单图 hover overlay: 再次生成 + 下载 + 更多(加入资产库/删除)
- model-photo / platform-cover · 批次底栏: 再次生成图标统一 + 更多 menu(全部加入资产库/删除该批)
- model-photo · 修 TDZ bug: renderModelMini 调用挪到 MODELS 声明后, 解决整页崩溃
- model-photo · 去掉冗余 pv-summary, 商品自动选最近编辑, task 写入 name 字段
- image-optimize · 单图右上加再次生成图标, 加入 fs-image-tasks-image 与任务中心打通
- image-optimize · 输入区拆 3 行: + 在顶 / textarea 满宽 / 发送在底栏右; 参考图缩略与加号同 64×64
- asset-factory · 任务中心加时间 chip + image 类型 + 跳转表; 删冗余类型列
- pipeline · stage2 商品卡换商品库风格 + AI 生成三视图主 CTA + .tri-missing-badge[hidden] CSS 修复
This commit is contained in:
iye
2026-05-22 19:35:36 +08:00
parent f420af2069
commit 04335f3269
25 changed files with 13042 additions and 2700 deletions
+128 -8
View File
@@ -431,6 +431,15 @@ main { position: relative; background: var(--background-base); min-width: 0; }
}
.page-head .sub .mono { font-family: var(--font-mono); font-size: 11.5px; color: var(--black-alpha-48); letter-spacing: .04em; }
.page-head .actions { display: flex; gap: 10px; align-items: center; }
/* page-head 右上角主操作按钮 · 统一尺寸(对齐 .btn-lg),覆盖各页里 btn / btn-sm / btn-lg 混用 */
.page-head .actions > .btn,
.page-head .actions > a.btn,
.page-head .actions > button.btn {
height: 40px;
padding: 0 20px;
font-size: 13.5px;
}
.page-head .actions > .btn svg { width: 14px; height: 14px; }
.section-h { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 14px; }
.section-h h2 { font-size: 16px; font-weight: 600; letter-spacing: -.01em; color: var(--accent-black); }
@@ -1415,11 +1424,22 @@ table.t tbody tr:hover { background: var(--black-alpha-4); }
background: var(--background-lighter);
}
/* ─── Scrollbar ─── */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--black-alpha-12); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--black-alpha-24); }
/* ─── Scrollbar · 全局隐藏可视滚动条,保留滚动能力
用 !important 覆盖各页 inline <style> 里残留的 scrollbar-width:thin / 自定义 webkit 滚动条 ─── */
* { scrollbar-width: none !important; -ms-overflow-style: none !important; }
*::-webkit-scrollbar {
width: 0 !important;
height: 0 !important;
display: none !important;
-webkit-appearance: none !important;
}
*::-webkit-scrollbar-track,
*::-webkit-scrollbar-thumb,
*::-webkit-scrollbar-thumb:hover,
*::-webkit-scrollbar-corner {
background: transparent !important;
display: none !important;
}
/* ─── Responsive ─── */
@media (max-width: 1100px) {
@@ -1456,10 +1476,29 @@ table.t tbody tr:hover { background: var(--black-alpha-4); }
letter-spacing: .03em;
border-radius: var(--r-sm);
box-shadow: 0 1px 2px rgba(0,0,0,.12);
pointer-events: none;
cursor: help;
user-select: none;
transition: background var(--t-base), box-shadow var(--t-base), transform var(--t-base);
}
.tri-missing-badge::before {
.tri-missing-badge[hidden] { display: none; }
.tri-missing-badge:hover {
box-shadow: 0 3px 8px rgba(0,0,0,.18);
transform: translateY(-1px);
}
.tri-missing-badge .ico {
width: 12px; height: 12px;
border: 1px solid currentColor;
border-radius: 50%;
display: grid; place-items: center;
font-size: 9px; font-weight: 700;
line-height: 1;
font-family: var(--font-mono);
}
.tri-missing-badge .ico::before { content: '!'; }
.tri-missing-badge .lbl-mono { font-family: var(--font-mono); letter-spacing: .04em; }
/* 兼容旧 markup(没有 .ico 子元素的也保留 ! 圆点) */
.tri-missing-badge:not(:has(.ico))::before {
content: '!';
width: 12px; height: 12px;
border: 1px solid currentColor;
@@ -1468,4 +1507,85 @@ table.t tbody tr:hover { background: var(--black-alpha-4); }
font-size: 9px; font-weight: 700;
line-height: 1;
}
.tri-missing-badge .lbl-mono { font-family: var(--font-mono); letter-spacing: .04em; }
/* hover popover · V2.1 dark tooltip with arrow */
.tri-missing-pop {
position: absolute;
top: calc(100% + 9px);
left: 0;
width: 252px;
padding: 11px 13px 12px;
background: var(--accent-black);
color: var(--accent-white);
border-radius: var(--r-md);
box-shadow: 0 8px 24px rgba(0,0,0,.20), 0 2px 6px rgba(0,0,0,.10);
opacity: 0; visibility: hidden;
transform: translateY(-4px);
transition: opacity .15s ease, visibility .15s ease, transform .15s ease;
pointer-events: none;
z-index: 30;
font-family: var(--font-sans);
font-weight: 400;
letter-spacing: 0;
text-transform: none;
text-align: left;
cursor: default;
}
.tri-missing-pop::before {
content: '';
position: absolute;
top: -5px; left: 14px;
width: 10px; height: 10px;
background: var(--accent-black);
transform: rotate(45deg);
border-radius: 2px;
}
.tri-missing-pop .pop-h {
display: flex; align-items: center; gap: 6px;
font-family: var(--font-mono);
font-size: 11px;
letter-spacing: .04em;
color: var(--heat);
margin-bottom: 6px;
}
.tri-missing-pop .pop-h svg { display: block; }
.tri-missing-pop .pop-body {
font-size: 12px;
line-height: 1.6;
color: rgba(255,255,255,.88);
}
.tri-missing-pop .pop-tip {
display: block;
margin-top: 8px;
padding-top: 8px;
border-top: 1px solid rgba(255,255,255,.12);
font-family: var(--font-mono);
font-size: 11px;
line-height: 1.55;
letter-spacing: .02em;
color: rgba(255,255,255,.78);
}
.tri-missing-pop .pop-tip b {
color: var(--accent-white);
font-weight: 600;
letter-spacing: .03em;
}
.tri-missing-badge:hover .tri-missing-pop,
.tri-missing-badge:focus-within .tri-missing-pop {
opacity: 1; visibility: visible; transform: translateY(0);
transition-delay: .12s;
}
/* 让 popover 能溢出 thumb / 卡片 容器(否则被 overflow:hidden 裁切) */
.placeholder:has(.tri-missing-badge:hover),
.placeholder:has(.tri-missing-badge:focus-within) {
overflow: visible;
z-index: 4;
}
.product-card:has(.tri-missing-badge:hover),
.product-card:has(.tri-missing-badge:focus-within),
.asset-card:has(.tri-missing-badge:hover),
.asset-card:has(.tri-missing-badge:focus-within) {
overflow: visible;
z-index: 5;
}