feat(*): 分镜与资产 - 完善五类资产、候选去重、搜索、中文镜头编号与分类整理

This commit is contained in:
ddCat
2026-08-31 13:15:38 +08:00
parent ce6e20f749
commit f548681787
53 changed files with 816 additions and 188 deletions

View File

@@ -15,7 +15,9 @@ description: 影策后端核心持久化表与状态边界
容器内命令 `migrate-schema up` 应用缺失迁移,`migrate-schema status` 输出当前和期望版本,`migrate-schema verify` 只检查兼容性。`CANVAS_AUTO_MIGRATE=true` 仅用于开发和旧部署兼容;受管生产部署设置为 `false`,并由 Compose 的一次性 `migrate` 服务先完成迁移。后续迁移必须新增版本,不得修改已经发布迁移的实现或校验和。
当前结构版本为 2。版本 2 为 `schema_migrations.applied_at` 增加 `idx_schema_migrations_applied_at` 索引,用于验证在线更新中的顺序迁移、事务提交和版本健康检查。
当前结构版本为 3。版本 2 为 `schema_migrations.applied_at` 增加 `idx_schema_migrations_applied_at` 索引;版本 3 `asset_taxonomy_candidate_identity` 为资产候选增加规范化名称和来源,收敛资产分类,并为待确认候选建立项目内部分唯一索引。
版本 3 会将 `wardrobe`、`weapon`、`accessory` 迁移为 `prop`,将 `style` 迁移为 `material`,并把原先归入 `other` 的图片、视频、音频和 3D 模型迁移为 `material`。迁移只合并重复的待确认候选:保留最早记录,其余标记为 `ignored`;已经确认的资产不会被自动删除或归并。
## 账号认证与密码找回
@@ -44,6 +46,8 @@ description: 影策后端核心持久化表与状态边界
| --- | --- | --- |
| `projects` | 保存短剧项目基础设置、画幅、画风快照、项目主图和默认图片/视频模型 | `default_image_model` / `default_video_model` 保存前端模型选择器的渠道限定引用;模型下架或渠道停用时前端回退当前全局默认。`cover_resource_id` 只能引用当前用户已就绪的图片资源;资源删除检查会阻止仍被项目主图使用的图片被回收 |
| `project_units` | 保存项目章节或集数的正文、排序和状态 | `word_count` 在正文创建、导入和更新时同步维护,项目详情只返回摘要和字数,不批量返回长篇正文;升级时会为旧正文回填字数 |
| `assets` / `asset_versions` / `project_asset_links` | 保存用户资产、不可变版本及项目引用 | 业务分类统一为 `character`、`environment`、`prop`、`material`、`other`;服饰、武器与配饰属于道具,图片/视频/音频等通用媒体默认属于素材 |
| `project_asset_candidates` | 保存章节或 Agent 提取后等待用户确认的资产候选 | `name_key` 保存规范化名称,`source` 记录提取入口;角色候选只允许来自 `chapter_character_extract` 且必须关联章节,同一项目、分类和规范化名称的待确认候选保持唯一 |
| `shots` | 保存章节内稳定的镜头身份、排序和当前版本指针 | 不保存完整生成历史;`current_revision_id` 指向当前采用的分镜脚本版本 |
| `shot_revisions` | 保存画面、动作、台词、景别、机位、运镜、提示词和动作节拍 | 每次编辑创建新版本;历史版本不可被静默覆盖 |
| `shot_asset_references` | 将镜头绑定到具体资产版本 | 修改引用时只使该镜头的下游产物过期,不影响其他镜头 |
@@ -66,7 +70,7 @@ description: 影策后端核心持久化表与状态边界
| `GET /api/projects/:id/units/:unitId/workspace` | 当前章节的镜头、版本、产物、引用、候选、相关任务和已绑定资产 |
| `GET /api/projects/:id/canvases` | 项目画布与当前页章节关联,使用 `page`、`page_size` |
| `GET /api/projects/:id/assets` | 项目资产分页、分类/目录计数,支持分类、媒体类型、目录和关键词筛选 |
| `GET /api/projects/:id/asset-candidates` | 资产候选分页,支持章节、状态和分类筛选 |
| `GET /api/projects/:id/asset-candidates` | 资产候选分页,支持章节、状态、分类和名称关键词筛选 |
旧 `GET /api/projects/:id` 暂时保留给尚未迁移的调用方;短剧工作台页面不得重新依赖该整包接口。

View File

@@ -127,7 +127,7 @@ description: 影策当前已实现的核心工作台能力与使用入口
### 使用规则
- 选中了两个或以上节点时,只整理选中的可移动节点;没有选中节点时,整理所有顶层可移动节点。
- 候选节点存在连线时,按连线依赖关系进行流程布局;没有连线时,自动使用网格布局。
- 候选节点存在连线时,横向保持从左到右的依赖层级,纵向按文本、图片、视频、音频分泳道;没有连线时,各媒体类型分别使用网格布局,不再把图片与视频混排。
- 锁定节点、容器节点和折叠批次中的隐藏子节点不会被移动。
- 节点位置变化会进入现有画布历史记录,可使用“撤销”恢复整理前的布局,并继续由画布生命周期自动保存。
@@ -135,4 +135,4 @@ description: 影策当前已实现的核心工作台能力与使用入口
- `web/src/components/canvas/canvas-zoom-controls.tsx`:底部视图控制 Dock 与“自动整理节点”入口。
- `web/src/pages/canvas/use-canvas-node-operations.ts`:候选节点筛选、流程/网格布局选择和位置提交。
- `web/src/lib/canvas/canvas-layout.ts`:流程、网格、行列排列和对齐算法。
- `web/src/lib/canvas/canvas-layout.ts`:媒体泳道、拓扑流程、网格、行列排列和对齐算法。

View File

@@ -88,6 +88,9 @@ description: 影策已实现功能的手工验证清单与未确认边界
## 短剧分镜工作流 v2
- [x] 章节角色提取增加候选名称幂等:重复待确认角色、已经确认角色和别名不会再次创建;Agent 来源不能创建角色候选。数据库 schema v3 为候选增加 `name_key` / `source` 并建立待确认唯一索引,后端专项测试通过。
- [x] 资产分类统一为角色、场景、道具、素材、其他;旧服饰/武器/配饰映射为道具,旧画风和通用媒体映射为素材。项目资产页、画布资产菜单、素材选择器和 Agent 合同已同步,前端生产构建与专项测试通过。
- [x] 分镜工作台左栏调整为“章节 → 镜头 → 资产”并默认打开章节;项目资产页和分镜资产栏新增防抖名称搜索;镜头默认编号统一为“镜头01”,仅精确匹配旧 `SC.数字` 的默认标题会转换,自定义标题保持不变。
- [x] 后端新增镜头版本、镜头产物和生产任务上下文;分镜修改与资产版本变更会局部将旧产物标记为 `stale`,专项测试通过。
- [x] 短剧工作流调整为“剧情与章节 → 资产拆分 → 分镜脚本 → 黑白动作预演 → 视频生成 → 交付与打包”,旧 v1 实例保留,新章节使用 v2。
- [x] 项目工作台新增独立分镜工作流路由,支持初始化章节流程、新增镜头、保存分镜版本、绑定资产版本、查看预演/视频版本和交付缺失状态;前端生产构建通过。
@@ -101,6 +104,8 @@ description: 影策已实现功能的手工验证清单与未确认边界
- [ ] 连续保存同一镜头多个版本并绑定不同资产版本,确认只有该镜头的动作预演和视频转为过期,其他镜头不受影响。
- [ ] 使用画布任务和项目任务分别登记镜头产物,确认 `production_task_links` 正确记录 Project、Canvas、Unit、Shot 和 WorkflowStep,且账号归属校验有效。
- [ ] 在浅色、深色、窄屏和常规桌面验证阶段导航、镜头列表、表单、检查器、媒体预览和长章节内容滚动。
- [ ] 在角色与资产页分别搜索已确认资产和待确认角色,再切换分类、目录和分页;确认关键词重置到第一页、空态明确且没有重复请求抖动。进入分镜工作台确认左栏顺序、默认章节页和资产搜索一致。
- [ ] 打开包含旧 `SC.01` 默认标题和用户自定义标题的项目,确认前者显示为“镜头01”且编号旁不重复,后者原样保留;新增镜头和章节生成镜头都直接使用中文编号。
- [ ] 在项目设置分别选择系统、用户自定义的默认生图/视频模型,刷新后进入分镜图、动作预演和镜头视频,确认项目默认优先、已下架模型回退全局默认;切换 Seedance、MiniMax-H3 等能力不同的模型时,画幅、时长、分辨率和本次预计积分立即更新,并与实际账单一致。
- [ ] 连续选择两个镜头并分别提交视频生成,确认两个镜头独立显示“正在提交/生成中”,第二个任务不会被第一个全局锁阻止;刷新页面后两个任务状态都能恢复,完成产物分别绑定各自提交时的镜头版本。
- [ ] 给镜头绑定带主图和声音样本的角色卡及场景资产,使用 MiniMax-H3 生成并检查请求日志:文本包含 `【资产参考】`、角色声音说明和台词,角色/场景图片为 `reference_image`、声音为 `reference_audio`,请求不再出现误判的 `first_frame`,画幅和 `768P` / `2K` 与界面选择一致。
@@ -345,7 +350,8 @@ description: 影策已实现功能的手工验证清单与未确认边界
- [x] `web` 前端 TypeScript 检查与生产构建通过。
- [x] 画布底部视图控制中显示“自动整理节点”按钮。
- [ ] 无选中节点时,确认多个顶层节点会按连线流程布局;无连线时会按网格布局。
- [x] 布局纯函数专项测试覆盖有连线、无连线、选中子集、不同尺寸、锁定节点,以及文本/图片/视频/音频四类泳道。
- [ ] 无选中节点时,确认多个顶层节点横向保持连线层级,纵向按文本、图片、视频、音频分区;无连线时同类节点各自在独立网格中排列。
- [ ] 选中节点时,确认只移动选中的可移动节点,未选中节点保持原位。
- [ ] 确认锁定节点、容器节点和折叠批次隐藏子节点不会被移动。
- [ ] 点击“撤销”确认可以恢复整理前的位置,并确认刷新画布后布局仍能保存。