diff --git a/README.md b/README.md index 88475c5..063ca09 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ Oxfmt 不负责代码质量,Oxlint 不负责 Vue 的完整类型推导;Vue S ## 接口基线 对齐后端 `qianlanse/short-drama-agent` 的 `dev`: -`c50d3f536fbca40ea07d36e00bace7bb886fabfa`(2026-08-31),包含 Character Casting、身份/形态双参考首帧、首帧与视频生产就绪检查。本轮只修改前端,请确保后端依照其开发流程同步 Prisma migration 并重启服务。 +`40c700f47d578888105484cfb317f52568855e0e`(2026-09-01),包含 Character Casting、身份/形态双参考首帧、首帧与视频生产就绪检查,以及独立候选生成和中国人物默认选角基线。本轮只修改前端,请确保后端依照其开发流程同步 Prisma migration 并重启服务。 | HTTP | 路径(以 /api 为前缀) | 用途 | | --- | --- | --- | @@ -195,11 +195,12 @@ API 层也提供 `state` 与 `breakdown/latest` 方法。页面通过共享 chec 3. 前端以正式 `subject-forms` 目录为基础,并合并 Character Casting readiness,因此尚无形态的角色也可先完成 Identity 和选角。Scene / Prop 若还没有 Form,仍不会凭 checkpoint 伪造正式 Subject ID。 4. 身份文本批量分为 Character 专用入口和全部主体高级入口。选角候选批量只处理 `missing_anchor`,受本批上限控制;`candidate_pending` 必须人工确认,不会由批量任务静默决定演员。 5. 身份图片的 `isAnchor` 来自专用 GET。Character primary 通过 Casting Candidate 接口生成且默认停用;点击确认演员后才成为 Anchor 并锁定 Identity。辅助视图不能直接成为母版。Scene / Prop 保留普通母版切换接口。 -6. 身份生图不传 `referenceImageId` 时,由后端自动选择当前母版;无母版时按文本生成。指定时只能选择当前身份已完成的图片;候选图即使停用也可作为显式参考。后端没有“有母版但忽略它”的参数。尺寸成对留空或提供正整数。自定义 Prompt 会替换后端编译的完整文本,建议保留默认。 +6. 普通身份生图不传 `referenceImageId` 时,由后端自动选择当前母版;无母版时按文本生成。指定时只能选择当前身份已完成的图片;候选图即使停用也可作为显式参考。Character Casting Candidate 是独立选角入口,即使已有 Anchor 也不会复用旧母版,避免旧演员身份污染新候选。尺寸成对留空或提供正整数。自定义 Prompt 会替换后端编译的完整文本,建议保留默认。 7. 目前**人物与场景形态生图**会自动注入当前身份母版,分别固定人物身份和空间骨架;道具暂不自动引用。没有身份或母版时,原形态生图流程仍可使用。已有母版但缺少 Provider 可访问远程地址时,后端会报错;本地 `/storage/` 能显示并不证明原始 Provider URL 仍可访问。前端显示后端错误,不自动重试消耗额度。 8. 修改风格、身份文本或母版,不会自动使旧图失效或重生成。已有形态主图仍会被分镜使用;需要保持新身份时,主动生成候选图并设为形态主图,再刷新分镜参考图,按需覆盖视频提示词。图库详情展示当次 `identityAnchorImageId` 或 `referenceImageId`;旧记录没有该字段时明确显示未知,不推断它使用了当前母版。 9. 风格参考图支持登记已有 HTTP(S)/`/storage/` 地址、分类、排序、启停和删除记录;**没有文件上传接口,也没有风格图 AI 生成接口**。当前身份图/形态图 Provider 调用不会自动消费风格参考图片,页面不暗示登记后已生效。 10. 编辑草稿与轮询分离。保存成功才清空草稿,失败保留;主体切换会提示放弃未保存修改。离开页面不会自动保存。所有新写操作沿用项目级会话互斥,生成前需要费用与后台任务确认,无法替代后端跨浏览器锁。 +11. AI 生成 VisualStyle 与 Character Identity 时,若项目、世界观和角色事实都未指定人物背景,默认采用自然真实的中国人物选角基线。项目明确配置和角色事实优先于系统默认值,不限制后续使用其它国家、地区、族裔或肤色人物。 ### 后端限制 diff --git a/src/features/subject-identity/SubjectIdentityPage.vue b/src/features/subject-identity/SubjectIdentityPage.vue index f0950b3..eb70a7d 100644 --- a/src/features/subject-identity/SubjectIdentityPage.vue +++ b/src/features/subject-identity/SubjectIdentityPage.vue @@ -130,7 +130,8 @@ function chooseAnchor(imageId: string) {
Character 现在需要依次完成身份文本、选角候选、确认演员并锁定 - Identity,之后首帧才能就绪。场景和道具仍使用普通身份母版流程;旧形态图、首帧与视频不会因母版切换自动更新。 + Identity,之后首帧才能就绪。未明确人物背景时,AI + 默认以中国人物作为选角基线;项目和角色的明确事实始终优先。场景和道具仍使用普通身份母版流程。
- 只处理 Character。候选图不会自动成为演员,确认选择时才会同时切换 Anchor 并锁定 Identity。 + 只处理 Character。每张候选都从 Identity 独立生成,不复用旧 Anchor;确认选择时才会同时切换 + Anchor 并锁定 Identity。
@@ -221,7 +223,7 @@ function chooseAnchor(imageId: string) { castingBlocked || !hasStyle || !batchValid || !candidateLimitValid || !casting.missingAnchor " acknowledgement - description="最多按本批上限为缺少 Anchor 的 Character 调用 Seedream,各生成一张停用的 primary 候选。已有候选、已有母版或已完成选角的角色不会重复处理。" + description="最多按本批上限为缺少 Anchor 的 Character 调用 Seedream,各自独立生成一张停用的 primary 候选,不复用旧身份母版。已有候选、已有母版或已完成选角的角色不会重复处理。" @confirm="generateCastingCandidates" /> diff --git a/src/features/subject-identity/components/CastingCandidateDialog.vue b/src/features/subject-identity/components/CastingCandidateDialog.vue index 2028a6f..3051420 100644 --- a/src/features/subject-identity/components/CastingCandidateDialog.vue +++ b/src/features/subject-identity/components/CastingCandidateDialog.vue @@ -4,7 +4,7 @@ import { AppDialog } from '../../../components/ui' import { validImageSize } from '../../subject-images/model' import type { GenerateCastingCandidateInput } from '../types' -/** Character 选角候选表单固定使用 primary,且不会自动选择演员。 */ +/** Character 选角候选表单固定使用 primary,每次独立生成且不会自动选择演员。 */ const props = defineProps<{ subjectId: string; subjectName: string; disabled: boolean }>() const open = defineModel