fix:修复页面样式

This commit is contained in:
Daniel
2026-04-14 12:05:56 +08:00
parent 508c28ce31
commit 89b21dd314
36 changed files with 2866 additions and 495 deletions

View File

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