Files
short-drama-agent-front/docs/frontend-simplification.md

68 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 前端简化与质量功能同步
核对日期:2026-09-10。后端本地基线:`f0321c2`。精简返回结构见 [接口数据同步说明](api-contract-sync.md)。本次只改前端,不更改数据库、后端配置或生成资产。
## 页面保留什么、收起什么
沿用现有路由、左侧导航、剧集/主体/镜头目录、详情分栏和灰阶主题,不另建工作台。主操作、正式内容和阻塞提示直接显示;低频入口采用 Naive UI 菜单、折叠区和弹窗。
| 工作区 | 默认显示 | 按需查看 |
| --- | --- | --- |
| 剧本创作 | 正文、角色/世界观/审核标签、进入拆解 | Tabs suffix 的更多菜单:执行记录、导出 |
| 剧本拆解 | 主体、形态、分镜、任务与失败提醒 | 更多菜单:执行记录、JSON 导出;长主体介绍可展开 |
| 视觉风格 | 名称、整体风格、锁定、保存和 AI 生成 | 分类风格、硬约束、生成规则;收起不丢失草稿 |
| 主体身份 | 身份编辑、锁定、选角、母版及图片 | 身份填写规则;批量功能仍在原抽屉 |
| 形态图片 | 图片、主图状态、看图与生成 | 卡片更多菜单:提示词、主体身份与母版;批量配置在抽屉 |
| 分镜设计 | 剧集、目录、设计与状态 | 更多菜单导出本集,原抽屉生成与恢复 |
| 镜头生产 | 提示词、首帧、视频和主要操作 | 资产更多菜单查看生成规格;质量检查打开独立面板,细参数/逐轮回执可展开 |
少边框、无圆角的布局保持不变;浅色 Tabs 分隔线仍为 `#dadada`。新增刷新与更多按钮为正方形并保留可访问名称;规则折叠标题使用可键盘激活的按钮。摘要只改变显示,不截断底层内容或导出结果。
不收起:读取失败、任务失败、素材过期、未保存修改、关键禁用条件、费用说明、主图替换后果。原来的素材精确定位/返回原镜头功能保留。重复分镜前置问题只在对应生产阶段显示。
## 与新后端同步
### 模型配置
图片与视频实际使用后端 `IMAGE_*``VIDEO_*` 配置。身份/选角/形态/首帧/视频请求不再发送固定 `provider`;串联生产也不再传固定 `imageProvider``videoProvider`。串联启动路由已移除请求级模型字段;指定模型的只读输入检查独立传入 provider,不影响生产配置。
质量面板或资产规格弹窗可按需读取 `/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 镜头,后续 ValidatorRepair 由 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 测试视为视觉验收。