From 1c5b1e448a9e0841469ee0376599fbcec403a6ae Mon Sep 17 00:00:00 2001 From: GouJ Date: Tue, 22 Sep 2026 21:40:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=AD=A5=E9=AA=A4=E5=BC=95=E5=AF=BC=E4=B8=8E=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/CreativeProfileSettings.vue | 4 +- src/features/production/ProductionPage.vue | 18 +- src/features/projects/ProjectLayout.vue | 133 ++++++++-- .../subject-identity/SubjectIdentityPage.vue | 238 +++++++++++++++--- .../components/IdentityEditor.vue | 38 +-- .../components/IdentityGallery.vue | 8 - .../subject-identity/useSubjectIdentity.ts | 26 +- tests/features/workflows/pages.test.ts | 31 +-- 8 files changed, 374 insertions(+), 122 deletions(-) diff --git a/src/features/generation-config/components/CreativeProfileSettings.vue b/src/features/generation-config/components/CreativeProfileSettings.vue index 922dbdf..23a2e02 100644 --- a/src/features/generation-config/components/CreativeProfileSettings.vue +++ b/src/features/generation-config/components/CreativeProfileSettings.vue @@ -24,8 +24,8 @@ const profile = ref(null) let controller: AbortController | null = null const aspectRatios = ['9:16', '16:9', '1:1', '4:3', '3:4'].map(value => ({ label: value, value })) -const enabledImages = computed(() => catalog.value?.images.filter(item => item.enabled && item.model) ?? []) -const enabledVideos = computed(() => catalog.value?.videos.filter(item => item.enabled && item.model) ?? []) +const enabledImages = computed(() => catalog.value?.images?.filter(item => item.enabled && item.model) ?? []) +const enabledVideos = computed(() => catalog.value?.videos?.filter(item => item.enabled && item.model) ?? []) const imageSelection = computed(() => profile.value ? selectionValue(profile.value.imageProvider, profile.value.imageModel) : null ) diff --git a/src/features/production/ProductionPage.vue b/src/features/production/ProductionPage.vue index 4adf18f..9528c5b 100644 --- a/src/features/production/ProductionPage.vue +++ b/src/features/production/ProductionPage.vue @@ -169,6 +169,17 @@ watch( if (receipt) toolsOpen.value = true } ) +watch( + () => route?.query.configure, + value => { + if (value === 'profile') toolsOpen.value = true + }, + { immediate: true } +) + +function profileSaved() { + operation.value.error = '' +} const batchModel = computed(() => ({ concurrency: concurrency.value })) const batchRules = { concurrency: integerRule('批量并发') } const keyframeModel = computed(() => ({ @@ -273,7 +284,7 @@ const videoRules = { videoLimit: integerRule('本批镜头上限'), videoRepairA
- +

提示词与视频就绪检查面向全项目;视频实际提交受本批镜头上限控制,并使用严格质量流水线。首帧默认补当前剧集,存在过期主首帧时优先更新全项目过期项,覆盖模式处理全项目;过期首帧成功后会自动接替旧主图,其余新增候选。图片模型、视频模型与视觉校验均可能产生费用。 @@ -290,9 +301,8 @@ const videoRules = { videoLimit: integerRule('本批镜头上限'), videoRepairA :show-icon="false" class="mt-4" > - 当前有 - {{ videoRunning }} - 个视频任务等待或生成中。请手动刷新查看最新状态;同一镜头不会重复提交活动任务。 + 当前有 {{ videoRunning }} 个视频任务等待或生成中。后端正在轮询 + Provider;同一镜头不会重复提交活动任务。 当前有 {{ identityBlocked }} 项角色身份前置问题。Character 必须生成 diff --git a/src/features/projects/ProjectLayout.vue b/src/features/projects/ProjectLayout.vue index 2df3ede..26c0e93 100644 --- a/src/features/projects/ProjectLayout.vue +++ b/src/features/projects/ProjectLayout.vue @@ -1,34 +1,80 @@