feat: 同步质量校验修复并精简工作台操作

This commit is contained in:
GouJ
2026-09-03 19:38:57 +08:00
parent 771b66cafc
commit 13bb6dc83b
47 changed files with 2244 additions and 260 deletions
@@ -1,5 +1,7 @@
<script setup lang="ts">
import WorkspacePage from '../../components/ui/WorkspacePage.vue'
import ActionMenu from '../../components/ui/ActionMenu.vue'
import DetailDisclosure from '../../components/ui/DetailDisclosure.vue'
import WorkspaceTools from '../../components/ui/WorkspaceTools.vue'
import { NAlert, NButton, NCheckbox, NCollapse, NCollapseItem, NInput, NInputNumber, NSelect, NTag } from 'naive-ui'
import { computed, ref, watch } from 'vue'
@@ -196,6 +198,7 @@ async function showStaleForms() {
><WorkspaceTools
v-model:open="toolsOpen"
title="形态生图配置与回执"
label="批量生图"
:has-receipt="!!session.receipt || !!session.promptReceipt"
><div class="flex flex-wrap items-end justify-between gap-4">
<div>
@@ -208,12 +211,12 @@ async function showStaleForms() {
>去检查分镜参考图<ArrowRight :size="14"
/></RouterLink>
</div>
<NAlert type="info" :show-icon="false" class="mt-5 text-xs">
<DetailDisclosure title="母版继承与过期处理" class="mt-4">
人物场景道具形态图均可继承已锁定 Identity
的母版并记录本次引用来源母版变化后可筛选过期图重新生成候选并人工确认新的主参考图不要直接沿用旧资产进入下游
<RouterLink :to="`/projects/${id}/subject-identity`" class="text-button ml-2"
>管理主体身份 </RouterLink
></NAlert
></DetailDisclosure
>
<FormPromptBatch
:forms="forms"
@@ -231,7 +234,7 @@ async function showStaleForms() {
<span v-if="staleForms.length" class="ml-3 text-xs text-danger">
{{ staleForms.length }} 个形态主图已过期
</span>
<span class="ml-3 text-xs text-muted">Seedream · 后端配置</span>
<span class="ml-3 text-xs text-muted">图片模型 · 后端配置</span>
</p>
</div>
<p class="mt-2 text-[11px] leading-6 text-muted">
@@ -248,7 +251,7 @@ async function showStaleForms() {
label="重新生成过期形态"
:disabled="blocked || !concurrencyValid || !staleForms.length"
acknowledgement
description="只为身份母版已经变化的形态调用 Seedream,各新增一张基于当前已锁定母版的候选图;不会自动替换旧主图,生成后请人工确认并设置新的主参考图。"
description="只为身份母版已经变化的形态调用 图片模型,各新增一张基于当前已锁定母版的候选图;不会自动替换旧主图,生成后请人工确认并设置新的主参考图。"
@confirm="generateStale"
/></div
></NAlert>
@@ -290,8 +293,8 @@ async function showStaleForms() {
acknowledgement
:description="
force
? '对项目全部形态调用 Seedream 新增一张图片。已有主图不会被替换,生成后可在图片记录中手动选择主图。'
: '仅对没有主图的形态调用 Seedream 生图,已有主图的形态跳过。操作面向整个项目,不受列表筛选影响。'
? '对项目全部形态调用图片模型新增一张图片。已有主图不会被替换,生成后可在图片记录中手动选择主图。'
: '仅对没有主图的形态调用图片模型生图,已有主图的形态跳过。操作面向整个项目,不受列表筛选影响。'
"
@confirm="generateProject"
/>
@@ -531,11 +534,6 @@ async function showStaleForms() {
<p v-if="form.description" class="mt-3 line-clamp-2 text-xs leading-6 text-muted">
{{ form.description }}
</p>
<RouterLink
:to="{ path: `/projects/${id}/subject-identity`, query: { subjectId: form.subjectId } }"
class="text-button mt-3"
>查看主体身份与母版 →</RouterLink
>
<div class="mt-3 flex flex-wrap items-center gap-2">
<StatusBadge v-if="hasRunningImages(form.images)" status="generating" />
<NTag v-if="isPrimaryIdentityStale(form)" size="small" :bordered="false">身份母版已变更</NTag>
@@ -582,8 +580,22 @@ async function showStaleForms() {
{{ form.images[0].error }}
</p>
<div class="mt-4 flex flex-wrap items-center justify-between gap-2">
<NButton text size="small" @click="openPrompt(form)">提示词与生成</NButton>
<NButton @click="openGallery(form)" text size="small">查看图片与记录</NButton>
<ActionMenu
:label="`${form.subject.name} · ${form.name} 更多操作`"
:items="[
{ key: 'prompt', label: '提示词与生成' },
{ key: 'identity', label: '主体身份与母版' }
]"
@select="
$event === 'prompt'
? openPrompt(form)
: router.push({
path: `/projects/${id}/subject-identity`,
query: { subjectId: form.subjectId }
})
"
/>
<NButton :disabled="blocked" @click="openGenerate(form)"
><ImagePlus :size="14" />
{{