67 lines
7.7 KiB
Markdown
67 lines
7.7 KiB
Markdown
# 前端简化与质量功能同步
|
||
|
||
核对日期:2026-09-10。后端本地基线:`f0321c2`。精简返回结构见 [接口数据同步说明](api-contract-sync.md)。本次只改前端,不更改数据库、后端配置或生成资产。
|
||
|
||
## 页面保留什么、收起什么
|
||
|
||
沿用现有路由、左侧导航、剧集/主体/镜头目录、详情分栏和灰阶主题,不另建工作台。主操作、正式内容和阻塞提示直接显示;低频入口采用 Naive UI 菜单、折叠区和弹窗。
|
||
|
||
| 工作区 | 默认显示 | 按需查看 |
|
||
| --- | --- | --- |
|
||
| 剧本创作 | 正文、角色/世界观/审核标签、进入拆解 | Tabs suffix 的更多菜单:执行记录、导出 |
|
||
| 剧本拆解 | 主体、形态、分镜、任务与失败提醒 | 更多菜单:执行记录、JSON 导出;长主体介绍可展开 |
|
||
| 视觉风格 | 名称、整体风格、锁定、保存和 AI 生成 | 分类风格、硬约束、生成规则;收起不丢失草稿 |
|
||
| 主体身份 | 身份编辑、锁定、选角、母版及图片 | 身份填写规则;批量功能仍在原抽屉 |
|
||
| 形态图片 | 图片、主图状态、看图与生成 | 卡片更多菜单:提示词、主体身份与母版;批量配置在抽屉 |
|
||
| 分镜设计 | 剧集、目录、设计与状态 | 更多菜单导出本集,原抽屉生成与恢复 |
|
||
| 镜头生产 | 提示词、首帧、视频和主要操作 | 资产更多菜单查看生成规格;质量检查打开独立面板,细参数/逐轮回执可展开 |
|
||
|
||
少边框、无圆角的布局保持不变;浅色 Tabs 分隔线仍为 `#dadada`。新增刷新与更多按钮为正方形并保留可访问名称;规则折叠标题使用可键盘激活的按钮。摘要只改变显示,不截断底层内容或导出结果。
|
||
|
||
不收起:读取失败、任务失败、素材过期、未保存修改、关键禁用条件、费用说明、主图替换后果。原来的素材精确定位/返回原镜头功能保留。重复分镜前置问题只在对应生产阶段显示。
|
||
|
||
## 与新后端同步
|
||
|
||
### 模型配置
|
||
|
||
图片与视频实际使用后端 `IMAGE_*`、`VIDEO_*` 配置。身份/选角/形态/首帧/视频请求不再发送固定 `provider`;串联生产也不再传固定 `imageProvider`、`videoProvider`。旧串联路由仍保留默认字段,但新执行节点不再消费这些请求级模型值,因此界面不能把它们当实际模型展示。
|
||
|
||
质量面板或资产规格弹窗可按需读取 `/image-providers/capabilities` 和当前镜头的 `keyframe-provider-capability`。此入口只读,不提供会被后端忽略的“前端切换模型”。未声明参考图上限显示“上限未声明”,不声称无限制。
|
||
|
||
### 质量入口
|
||
|
||
| 入口 | 实际 API | 结果与边界 |
|
||
| --- | --- | --- |
|
||
| 已完成首帧 → 质量检查 → 仅校验 | POST `/storyboard-shots/:shotId/keyframes/:keyframeId/validate` | 调用视觉模型,不重生成、不切换主首帧 |
|
||
| 首帧 → 质量检查 → 校验并修复 | POST 同路径 `/repair` | 有限重生成;新候选通过才晋升主首帧;原图直接通过不会自动晋升 |
|
||
| 生产工具栏 → 首帧质量生成 | POST `/projects/:projectId/keyframes/generate-quality` | 当前集、默认最多一镜、并发 1、最多修复 1 次;每镜候选通过后才设主图 |
|
||
| 单镜头 → 提交视频质量任务 | POST `/storyboard-shots/:shotId/videos/generate-quality` | 创建严格质量候选;生成完成后由后端自动校验,失败时最多自动修复 2 次,通过后才晋升主视频 |
|
||
| 批量生产 → 视频成片 | POST `/projects/:projectId/videos/generate-quality` | 显式限制本批镜头数和每镜修复次数;只提交 ready 镜头,后续 Validator/Repair 由 Poller 推进 |
|
||
| 已完成视频 → 质量检查 | POST `/storyboard-shots/:shotId/videos/:videoId/validate` | 抽样视觉与按需运动/道具专项检查,不检测音频/口型;普通候选不切换主视频,修复候选通过后自动晋升 |
|
||
|
||
批量质量配置与普通批量面板独立。后端非 force 先根据全项目是否有过期项决定筛选,再筛当前集;因此其他集存在过期项而当前集无过期项时,本集不会先补缺失首帧。前端明确提示切换剧集,不悄悄扩大范围。
|
||
|
||
允许文字按行输入并清理空白/重复;未填写不自行授权文字。宽高同时留空或填写正整数,修复次数可为 0。确认区显示本次最多生图/视觉校验调用次数,修改参数或目标后撤销费用确认。
|
||
|
||
### 视频自动质量链与手工复检
|
||
|
||
生产页的单镜和批量视频主入口使用 `generate-quality`。HTTP 回执只表示初始 Candidate 已创建;后台 Poller 会在 Provider 完成后自动执行 Validator,失败时按 `maxRepairAttempts` 创建下一代 Repair Candidate,只有通过校验的版本才会晋升 Primary。公开视频列表不再提供 `rawJson`。前端以资产 `isPrimary` 展示晋升结果;只有本会话收到 PASS 校验的候选才可使用手动“设为主视频”。不会将缺少历史质量数据标为自动校验中或通过。
|
||
|
||
视频质量面板新增“生成修复候选”,使用 POST `/storyboard-shots/:shotId/videos/:videoId/repair`,只接受 `maxRepairAttempts`(默认 2,正整数)。该参数是修复链的上限,不是本次自动生成次数。本次只提交一个视频候选,不自动等待、复检或循环重试;修复约束和允许文字沿用已保存的失败校验。
|
||
|
||
确认后重新读取视频;本会话没有失败校验或镜头有活动视频时不提交。修复链次数不再由内部 JSON 推断,交由后端校验并显示其失败原因。候选完成后仍不是主视频,需要对新候选显式执行视觉校验;后端通过后自动晋升,界面在付费确认前说明后果,并显示实际晋升结果。未通过复检的修复候选不提供普通“设为主视频”按钮,不能绕过验收。
|
||
|
||
### 状态与风险控制
|
||
|
||
- 打开页面、菜单、结果和模型能力不会自动调用生成/视觉模型。质量 POST 只在确认后发生,不自动超时重试。
|
||
- 确认后再次 GET 项目完成状态、工作流 checkpoint、项目镜头列表与目标资产归属。项目详情已无内部任务数组,只检查公开工作流执行状态和资产活动状态。视频必须有完成状态、地址和有效时长;首帧必须完成且有图片。修复和小批量质量生成先检查模型参考图能力,批次检查当前镜头是否仍在生图。
|
||
- 预检期间关闭面板或换目标不发送 POST。已提交请求继续运行,回执按原项目/镜头/资产保存,不能写入新项目。当前浏览器项目互斥不能代替后端跨客户端锁;仍需确认外部任务停止。
|
||
- 结果分别显示视觉通过、修复未通过、调用失败、未执行;不会把 HTTP 200 当质量通过。批量回执提供定位镜头,完整主体检查/逐轮耗时/原始回执可展开和导出。
|
||
- 视频列表不再返回质量历史;查看本会话校验回执不会重新调用模型。浏览器刷新后不保留通过结论;修复请求失败保留其所依据的失败校验。
|
||
- 后端持久化首帧校验,但尚无历史读取 GET。前端只显示当前会话确实收到的首帧回执并支持导出,不虚构历史接口。
|
||
- 后端已修复视频校验漏传身份母版导致的过期误报。前端保留两种就绪结果冲突时的防御性提示,不绕过后端阻塞、不自动重复生成。
|
||
|
||
## 验证边界
|
||
|
||
单元与组件测试全部使用模拟 API,验证参数、正式 ID、禁用、费用确认、范围、归属、回执隔离和菜单访问,不触发真实模型任务。浏览器视觉与实际模型联调需要在可访问的开发环境进行;不将 DOM 测试视为视觉验收。
|