fix(test-round): 测试清单一批 bug 修复 + 团队月限额持久化
后端: - accounts: 团队级月限额持久化(Team.monthly_credit_limit 三态 + PATCH/GET /api/auth/team/settings/,刷新不丢,PMC#12);头像上传 500→502 可读错误; 设备下线真失效(删并重建 token,旧 token 401) - assets: 审核类目加 model_portrait,消除三视图"无需审核"误报 - ai/projects/products: 模特已有三视图复用、产品三视图同步回商品库 (metadata.view=three_view)、真人模特三视图回写 前端: - 商品图删除判断改用真实图片数;团队成员弹窗禁点外部关闭 - 图片预览骨架铺满占位;平台套图左侧栏折叠改导航同款;收件箱长文换行对齐 - 团队月限额改真落库(乐观更新+失败回滚) 测试:新增 TeamSettingsTests(5 条),accounts 全套 36 tests 通过;前端 build 0 error Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -649,16 +649,49 @@
|
||||
/* 胶囊在框底 → 下拉菜单向上弹,避免被框/CTA 遮住 */
|
||||
.image-workbench .iw-model-pill .chip-menu { top: auto; bottom: calc(100% + 4px); }
|
||||
|
||||
/* ── YYX#17:左侧商品栏折叠 ── */
|
||||
.image-workbench .iw-side-top .iw-side-collapse {
|
||||
margin-left: auto;
|
||||
width: 28px; height: 28px;
|
||||
display: grid; place-items: center;
|
||||
border: 1px solid var(--border-faint); border-radius: var(--r-md);
|
||||
background: var(--surface); color: var(--black-alpha-48); cursor: pointer;
|
||||
transition: background var(--t-base), color var(--t-base), border-color var(--t-base);
|
||||
/* ── YYX#17:左侧商品栏折叠 —— 复用导航栏(app-shell .sidebar-toggle)同款视觉/交互 ──
|
||||
贴商品栏右边缘的竖条按钮:平时隐形(chevron opacity 0),hover 才浮现 chevron + 浅底,
|
||||
点击切换收/展。不用原来那个带边框的方块丑按钮。 */
|
||||
.image-workbench .iw-prod-space { position: relative; }
|
||||
.image-workbench .iw-side-toggle {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: 5;
|
||||
width: 28px;
|
||||
height: 100%;
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
color: var(--black-alpha-48);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
transition: color var(--t-base), background var(--t-base);
|
||||
}
|
||||
.image-workbench .iw-side-top .iw-side-collapse:hover { background: var(--heat-12); color: var(--heat); border-color: var(--heat-20); }
|
||||
.image-workbench .iw-side-toggle:hover,
|
||||
.image-workbench .iw-side-toggle:focus-visible {
|
||||
background: var(--black-alpha-4);
|
||||
backdrop-filter: blur(4px);
|
||||
-webkit-backdrop-filter: blur(4px);
|
||||
color: var(--accent-black);
|
||||
outline: none;
|
||||
}
|
||||
.image-workbench .iw-side-toggle-icon {
|
||||
display: block;
|
||||
opacity: 0;
|
||||
line-height: 1;
|
||||
transition: opacity var(--t-base);
|
||||
}
|
||||
.image-workbench .iw-side-toggle:hover .iw-side-toggle-icon,
|
||||
.image-workbench .iw-side-toggle:focus-visible .iw-side-toggle-icon { opacity: 1; }
|
||||
.image-workbench .iw-side-toggle-icon--expand { display: none; }
|
||||
.image-workbench .iw-prod-space.collapsed .iw-side-toggle-icon--collapse { display: none; }
|
||||
.image-workbench .iw-prod-space.collapsed .iw-side-toggle-icon--expand { display: block; }
|
||||
/* 展开态:列表/头部右侧给竖条让位(28px),避免竖条覆盖商品行右侧的点击区 */
|
||||
.image-workbench .iw-prod-space:not(.collapsed) .iw-side-top { padding-right: 30px; }
|
||||
.image-workbench .iw-prod-space:not(.collapsed) .iw-ps-list { padding-right: 28px; }
|
||||
/* 收起后整列变窄,只剩商品图 */
|
||||
.image-workbench .iw-layout:has(.iw-prod-space.collapsed) { grid-template-columns: 76px minmax(0, 1fr); }
|
||||
.image-workbench .iw-prod-space.collapsed .back-pill,
|
||||
@@ -666,7 +699,6 @@
|
||||
.image-workbench .iw-prod-space.collapsed .iw-list-h,
|
||||
.image-workbench .iw-prod-space.collapsed .iw-prod-item .body { display: none; }
|
||||
.image-workbench .iw-prod-space.collapsed .iw-side-top { justify-content: center; padding: 12px 0 10px; }
|
||||
.image-workbench .iw-prod-space.collapsed .iw-side-top .iw-side-collapse { margin-left: 0; }
|
||||
.image-workbench .iw-prod-space.collapsed .iw-ps-list { padding-left: 0; padding-right: 0; align-items: center; }
|
||||
.image-workbench .iw-prod-space.collapsed .iw-prod-item { justify-content: center; padding: 4px; }
|
||||
|
||||
@@ -851,16 +883,20 @@
|
||||
/* 不在此裁切:否则「更多」气泡(.gen-bubble)作为后代会被 overflow:hidden 切掉。
|
||||
改为给图片/占位各自圆角,卡片保持圆角的同时让气泡能溢出展示。 */
|
||||
cursor: pointer;
|
||||
/* YYX#13:容器自带铺满的 skeleton 占位底(网纹 + 灰底),图片加载前/加载中不留空白;
|
||||
真图(.gen-image-img)叠在其上,加载完盖住占位底。复用 .placeholder 同款网纹纹理。 */
|
||||
background:
|
||||
repeating-linear-gradient(135deg, rgba(0, 0, 0, 0.025) 0 1px, transparent 1px 12px),
|
||||
var(--black-alpha-4);
|
||||
}
|
||||
.image-workbench .gen-image .placeholder { position: absolute; inset: 0; border-radius: var(--r-md); overflow: hidden; }
|
||||
/* 生成结果真图 · 填满 .gen-image(比例由容器 aspect-ratio 控制) */
|
||||
/* 生成结果真图 · 填满 .gen-image(比例由容器 aspect-ratio 控制) · 透明背景让容器 skeleton 占位透出,加载完图片自身盖住 */
|
||||
.image-workbench .gen-image-img {
|
||||
position: absolute; inset: 0;
|
||||
width: 100%; height: 100%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
border-radius: var(--r-md);
|
||||
background: var(--black-alpha-4);
|
||||
}
|
||||
/* 右上浮层按钮组(§4.18 .gen-image-actions) */
|
||||
.image-workbench .gen-image-actions {
|
||||
|
||||
Reference in New Issue
Block a user