2.4 KiB
2.4 KiB
AiVideo Studio 重构方案(V2)
目标
- 实现与参考编辑器页面一致的工作台布局:顶部导航、中央预览舞台、底部时间线、右侧参数与日志面板。
- 保留并强化现有能力:自动分镜、单镜头润色、渲染、阶段日志、任务跟踪。
- 将前端代码从“流程散落”改造为“分层架构”,减少重复逻辑与状态不一致风险。
新架构
1. UI Shell 层
TopNav:品牌、快捷操作、Play/Render 入口。ToolBar:上下文状态(task/mock)与工具位。PreviewStage:展示当前 Scene 预览或 final video。TimelineStrip:镜头缩略图时间线与进度条。SceneEditor:单镜头编辑与润色入口。
2. 状态层(StudioState)
- 统一使用
useReducer管理工作台状态。 - 核心状态:
scenesselectedSceneIndexstageStatestageLogsrenderProgresstaskIdfinalVideoUrltoast
- 所有修改均通过
dispatch(action)进入 reducer,避免多处useState导致的竞态和重复。
3. API/流处理层(StudioAPI)
startScriptStream():EventSource 流式接收 Script 阶段事件。postStream():统一处理 Refine/Render 的 fetch + SSE 流。consumeFetchSSE():抽象 SSE 分块解析,消除重复解析代码。
4. 事件编排层
onStageEvent(sourceStage, event, data)统一路由:taskstage_updatelineerrordone
applyStageUpdate()负责阶段状态、进度、scene upsert 的单点更新。
数据流
- 用户修改 Prompt / Provider 参数。
- 自动防抖触发
startScript(),进入 Script SSE。 stage_update.scene_json持续更新scenes,时间线和右侧编辑器同步刷新。- 用户可对当前 Scene 进行编辑与
refine。 - 用户触发
render,进度与日志实时反馈,完成后挂载 final video URL。
兼容性说明
- 继续使用
babel-standalone@6,所以 JSX 不使用<>...</>,统一为React.Fragment。 - 保持现有后端接口契约不变:
GET /api/scriptPOST /api/refinePOST /api/render
后续建议
- 将当前单文件页面拆分为真正多文件前端工程(Vite + React),引入 TypeScript 与单元测试。
- 增加 Timeline 的拖拽排序与片段时长编辑。
- 增加右侧“资产库”与“模板库”,进一步贴近参考产品完整体验。