后端生成闸+多项修复;前端全站更新;QA 审计与报告
后端: - 新增 celery_health 生成前置闸——无 worker 在线时图片/视频生成入口 一律 503,防"提交到 ARK 后无人轮询、结果悬空+额度冻结"的数据丢失 - 拼接导出:帧率跟随源众数、字幕逐句重映射、原声/BGM 混音修复 - 资金核算审计脚本 + genesis 账目回填 + 滞留预留清理命令 - 接入 yunqi provider 与豆包 TTS 模型(catalog/migrations/bootstrap 命令) 前端:全站页面更新(pipeline/library/products/projects/team/account 等), 新增共享 pager 分页组件 QA:刷新 function-audit 全量输出,新增 full-qa 报告 文档:BP 产品介绍资料、design/CLAUDE.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1483,6 +1483,38 @@ select.duration-select:focus,
|
||||
color: rgba(255, 255, 255, .7);
|
||||
letter-spacing: .04em;
|
||||
}
|
||||
/* ─── 通用列表分页器(components/pager.tsx,视觉同向导 pp-pager)─── */
|
||||
.list-pager {
|
||||
display: flex; align-items: center; gap: 16px;
|
||||
margin-top: 18px; padding-top: 14px;
|
||||
border-top: 1px solid var(--border-faint);
|
||||
font-size: 12.5px; color: var(--black-alpha-56);
|
||||
}
|
||||
.list-pager .total { font-family: var(--font-mono); letter-spacing: .02em; }
|
||||
.list-pager .pages { display: inline-flex; gap: 4px; margin-left: auto; }
|
||||
.list-pager .pages button {
|
||||
min-width: 28px; height: 28px; padding: 0 8px;
|
||||
border: 1px solid var(--border-faint); background: var(--surface);
|
||||
border-radius: var(--r-sm);
|
||||
cursor: pointer; font-size: 12.5px; color: var(--black-alpha-72); font-family: inherit;
|
||||
transition: border-color var(--t-base), background var(--t-base), color var(--t-base);
|
||||
}
|
||||
.list-pager .pages button:hover:not(.active):not(:disabled) { border-color: var(--black-alpha-32); color: var(--accent-black); }
|
||||
.list-pager .pages button.active { background: var(--heat); color: var(--accent-white); border-color: var(--heat); font-weight: 600; }
|
||||
.list-pager .pages button:disabled { opacity: .4; cursor: not-allowed; }
|
||||
.list-pager .pages .ellipsis { min-width: 22px; height: 28px; display: inline-flex; align-items: center; justify-content: center; color: var(--black-alpha-48); }
|
||||
.list-pager .page-size { font-family: var(--font-mono); letter-spacing: .02em; }
|
||||
|
||||
/* 音频试听面板:灯箱内居中,音符 + 原生播放器 */
|
||||
.np-lightbox .lb-audio {
|
||||
display: flex; flex-direction: column; align-items: center; gap: 20px;
|
||||
background: rgba(255, 255, 255, .08);
|
||||
border-radius: var(--r-md);
|
||||
padding: 36px 44px;
|
||||
cursor: default;
|
||||
}
|
||||
.np-lightbox .lb-audio svg { width: 34px; height: 34px; color: rgba(255, 255, 255, .8); }
|
||||
.np-lightbox .lb-audio audio { width: min(420px, 76vw); }
|
||||
|
||||
/* Bullet list · 弹窗内 (复用样式) */
|
||||
.np-body .bullet-list { list-style: none; padding: 0; }
|
||||
@@ -2121,14 +2153,45 @@ table.t tbody tr:hover { background: var(--black-alpha-4); }
|
||||
}
|
||||
|
||||
/* ─── Responsive ─── */
|
||||
/* 桌面端汉堡键不出现(基础态,放在 @media 前,避免被后置规则覆盖) */
|
||||
.mobile-nav-btn { display: none; }
|
||||
@media (max-width: 1100px) {
|
||||
.app { grid-template-columns: 1fr; }
|
||||
aside.sidebar { display: none; }
|
||||
/* 窄屏:侧栏改为左侧抽屉(默认移出视口),汉堡键拉出;桌面收窄键隐藏 */
|
||||
aside.sidebar {
|
||||
display: block;
|
||||
position: fixed; top: 0; left: 0; bottom: 0;
|
||||
width: 248px;
|
||||
z-index: 1200;
|
||||
transform: translateX(-100%);
|
||||
transition: transform .28s cubic-bezier(.32, .72, 0, 1);
|
||||
box-shadow: 0 0 40px rgba(0, 0, 0, .18);
|
||||
}
|
||||
/* 抽屉里收窄态不适用,强制展开宽度,避免 body.sidebar-collapsed 把抽屉压成 96px */
|
||||
body.sidebar-collapsed aside.sidebar { width: 248px; }
|
||||
aside.sidebar.mobile-open { transform: translateX(0); }
|
||||
.sidebar-toggle { display: none; }
|
||||
/* 抽屉内汉堡键无意义,藏掉,留出顶部空间给页面自己的汉堡 */
|
||||
.mobile-nav-btn {
|
||||
display: flex; flex-direction: column; gap: 4px; justify-content: center; align-items: center;
|
||||
position: fixed; top: 14px; left: 14px; z-index: 60;
|
||||
width: 38px; height: 38px;
|
||||
background: var(--surface); border: 1px solid var(--border-faint); border-radius: var(--r-sm);
|
||||
cursor: pointer;
|
||||
}
|
||||
.mobile-nav-btn span { display: block; width: 16px; height: 1.6px; background: var(--accent-black); border-radius: 2px; }
|
||||
.mobile-nav-backdrop { position: fixed; inset: 0; z-index: 1150; background: rgba(21, 20, 15, .42); }
|
||||
/* 顶栏给汉堡键让出左侧空间 */
|
||||
.topbar { padding-left: 64px; }
|
||||
.stats { grid-template-columns: repeat(2, 1fr); }
|
||||
.stat:nth-child(2) { border-right: 0; }
|
||||
.stat:nth-child(1), .stat:nth-child(2) { border-bottom: 1px solid var(--border-faint); }
|
||||
/* 统计卡标签不要被挤到逐字竖排 */
|
||||
.stat .lbl { white-space: nowrap; }
|
||||
.content { padding: 28px 24px 48px; }
|
||||
/* 宽数据表(项目列表/成员表/账单表)在窄屏改横向滚动,否则右侧列被裁切、点不到 */
|
||||
#list-view, .members-table-wrap, .billing-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
|
||||
.members-table, .billing-table, #list-view table.t { min-width: 640px; }
|
||||
}
|
||||
|
||||
/* ─── Spinner ─── */
|
||||
|
||||
Reference in New Issue
Block a user