perf(platform): 短剧创作工作台 - 拆分长篇项目接口并优化章节与素材分页

This commit is contained in:
ddCat
2026-08-30 01:32:33 +08:00
parent 40fd0c54a4
commit d89f170a08
22 changed files with 1497 additions and 222 deletions

View File

@@ -33,6 +33,34 @@ description: 影策后端核心持久化表与状态边界
短剧项目状态以这些领域表为准。自由画布可以承载探索节点,但画布 metadata 不作为生产完成度、镜头版本或交付可用性的真相源。
### 长篇项目读取边界
短剧工作台不再通过单个项目详情响应下载全部章节正文、镜头历史、产物、画布和资产。读取按页面职责拆分:
| 接口 | 返回范围 |
| --- | --- |
| `GET /api/projects/:id/core` | 项目基础设置,不包含业务集合 |
| `GET /api/projects/:id/overview` | 项目聚合计数与前 8 个章节进度 |
| `GET /api/projects/:id/units` | 全部章节摘要与字数,不包含正文 |
| `GET /api/projects/:id/units/:unitId` | 单章正文 |
| `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` 暂时保留给尚未迁移的调用方;短剧工作台页面不得重新依赖该整包接口。
面向上千章、上万镜头的数据量,迁移会建立以下组合索引:
- `idx_project_units_project_position`:章节按项目和位置读取。
- `idx_shots_project_unit_position`:当前章节镜头按位置读取。
- `idx_shot_artifacts_project_unit`:当前章节产物读取。
- `idx_canvas_unit_links_project_unit`:章节关联画布聚合。
- `idx_canvas_projects_user_project_updated`:项目画布倒序分页。
- `idx_project_asset_links_project_folder_position`:项目目录资产分页与排序。
- `idx_project_asset_candidates_project_unit_status`、`idx_project_asset_candidates_project_status_category`:章节候选和待确认分类队列。
- `idx_tasks_user_project_created`:项目任务恢复读取。
## 模型渠道与目录
| 表 | 用途 | 关键边界 |

View File

@@ -5,6 +5,21 @@ description: 影策已实现功能的手工验证清单与未确认边界
# 待测试
## 素材库网格密度
- [x] 素材库桌面端缩小卡片并改为每行 6 张;新增素材占首格,默认每页 35 项,可切换 70/105 项,首屏正好组成 6×6 完整网格;中窄屏按 4/3/1 列收敛,前端生产构建通过。
- [ ] 在 1280px、1440px、1920px 与窄屏下检查图片、视频、音频、文本、模型和新增素材卡片,确认标题、徽标、批量选择和操作菜单不拥挤或溢出。
## 短剧长篇项目分页读取
- [x] 短剧工作台已拆分项目核心、制作概览、章节摘要、当前章节生产包、画布分页、资产分页和候选分页接口;章节列表不返回正文,当前章节生产包不返回其他章节镜头和产物。
- [x] 资产库按目录/分类分页,候选角色单独分页;分镜工作台资产栏服务端分页,当前章节响应只携带镜头已绑定资产;项目设置仅在打开主图选择器时读取图片资产。
- [x] 新增章节、镜头、章节产物、画布、项目目录资产、候选资产和项目任务组合索引;后端聚合/隔离/分页专项测试与前端生产构建通过。
- [ ] 导入至少 1000 章、每章 10 个镜头的测试项目,分别打开概览、章节、分镜、画布、资产和设置页,确认首屏请求不再出现整项目详情响应,切章只读取目标章节生产包。
- [ ] 在浏览器网络面板记录上述页面的响应体积、请求耗时和内存占用;连续切换 30 个章节、翻阅 10 页画布和资产,确认 React Query 缓存及 DOM 数量没有持续异常增长。
- [ ] 在资产超过 80 项、角色候选超过 24 项、画布超过 40 张时验证分页、分类、目录、候选确认、镜头资产绑定和主图选择;确认新增、移动、删除、确认后总数与当前页自动刷新。
- [ ] 使用 SQLite 与 PostgreSQL 各执行一次大项目冒烟,确认新增组合索引成功创建,概览聚合、章节隔离和分页顺序一致。
## 多文件技能包库
- [x] 后端新增技能版本与文件索引,支持单个 Markdown、ZIP 和公开 GitHub 仓库安装;ZIP 路径越界、软链接、重复路径、文件数、单文件大小和总解压大小均在写入前校验,后端全量测试通过。
@@ -541,7 +556,7 @@ description: 影策已实现功能的手工验证清单与未确认边界
- [x] 剧情章节列表去除装饰性侧边表达并显示状态、字数、画布数;制作概览新增六阶段标准流程、当前指标、制作缺口和可点击快速入口;底部镜头卡增加画面、加粗时长、镜头参数、产物版本与绿色成功状态。
- [x] 画布空白区域双击改为直接打开已有新增节点面板,并保留双击位置作为节点落点;原“适配内容”能力继续由缩放控制区提供。
- [ ] 在项目设置分别从个人素材、项目素材和上传图片设置主图,刷新项目列表后确认图片一致;替换、移除主图后确认回退逻辑正确,尝试删除当前主图资源时确认显示项目引用来源。
- [ ] 使用 2500 章项目搜索章节序号和标题,连续切换上一章、下一章并刷新页面,确认当前位置、总章数、字数和路由一致,弹窗滚动流畅且不会一次渲染全部章节。
- [ ] 使用 2500 章项目搜索章节序号和标题,确认定位弹窗桌面端为 5 列、默认每页 100 章,搜索区与分页区保持同一表面;连续切换上一章、下一章并刷新页面,确认当前位置、总章数、字数和路由一致。
- [ ] 在制作概览点击剧情、资产、分镜、预演、视频、交付和三个快速入口,确认跳转到正确章节及阶段,真实镜头产物数量与完成状态一致。
- [ ] 在浅色、深色主题和 1280px、1680px 宽度检查镜头卡,确认时长明显、标题与镜头参数不溢出、“已生成”为绿色且选中态仍使用工作台强调色。
- [ ] 在画布不同缩放和平移位置双击空白处,确认新增节点面板直接打开,选择文本、图片、视频和扩展节点后落点接近双击位置;双击节点、弹窗和其他浮层不应触发新增。