feat(pipeline): 兜底弹窗拦截 — 生成故事板/视频前查参考图齐不齐,缺了拦住
原兜底是静默退化文生图/文生视频 → 出来的跟用户建的角色/商品无关,白花钱、易纠纷。 因参考图是自动关联(没给手选),改为生成前拦截: - missingRefsFor:对待生成镜的 entity_refs,查每个角色/场景是否有「按名字采用」的基础资产 (商品永远有主图、不算缺);没提取过实体则不拦(交给提取闸门)。 - guardGen 包住 4 个生成触发点:故事板整张 / 全部视频 / 单段视频 ×2;单段只查对应镜。 - 缺了弹窗:列出缺的角色/场景 + 「去补齐参考图」(跳资产趴)/「仍要生成」(随他便,带警告)。 - 弹窗 CSS 守 design token(深色遮罩 + --r-md + --heat/--accent-black)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c6d1d2f6fe
commit
de29449a76
@@ -814,3 +814,36 @@
|
||||
.eg-load-msg { font-size: 14px; font-weight: 500; color: var(--accent-black); }
|
||||
.eg-load-sub { font-size: 11px; color: var(--black-alpha-48); }
|
||||
.eg-reextract { margin-top: 14px; width: 100%; }
|
||||
|
||||
/* ── 兜底弹窗拦截:生成故事板/视频前,参考图不齐就拦住,让用户去补 / 仍要生成 ── */
|
||||
.ref-gate-mask {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 60;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 24px;
|
||||
background: rgba(21, 20, 15, .42);
|
||||
backdrop-filter: blur(8px);
|
||||
-webkit-backdrop-filter: blur(8px);
|
||||
}
|
||||
.ref-gate-modal {
|
||||
width: min(460px, 100%);
|
||||
background: var(--surface-raised);
|
||||
box-shadow: var(--shadow-floating);
|
||||
border-radius: var(--r-md);
|
||||
padding: 24px;
|
||||
}
|
||||
.rg-title { font-size: 16px; font-weight: 600; color: var(--accent-black); }
|
||||
.rg-body { font-size: 13px; line-height: 1.6; color: var(--black-alpha-64); margin-top: 10px; }
|
||||
.rg-body strong { color: var(--heat); font-weight: 600; }
|
||||
.rg-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
|
||||
.rg-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--accent-black); padding: 5px 11px 5px 5px; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--border-faint); background: var(--background-base); }
|
||||
.rg-kind { font-size: 10px; font-family: var(--font-mono); padding: 2px 6px; border-radius: 999px; }
|
||||
.rg-kind-person { color: var(--heat); background: var(--heat-8); }
|
||||
.rg-kind-scene { color: var(--black-alpha-56); background: var(--black-alpha-5); }
|
||||
.rg-actions { display: flex; gap: 10px; margin-top: 22px; align-items: stretch; }
|
||||
.rg-actions .btn-primary { flex: 1; }
|
||||
.rg-force { display: inline-flex; align-items: baseline; gap: 5px; }
|
||||
.rg-warn { font-size: 10px; font-family: var(--font-mono); color: var(--black-alpha-48); }
|
||||
|
||||
Reference in New Issue
Block a user