You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.3 KiB
3.3 KiB
Mock 数据规范化 - UUID v7 格式更新
日期: 2026-01-24
类型: 数据规范化
影响范围: 前端 Mock 数据层
变更概述
完成前端所有主要 Mock 数据的 UUID v7 格式规范化,确保与后端 API 规范完全一致。
变更详情
已完成文件
-
users.ts ✅
- 所有用户 ID 更新为 UUID v7 格式
- 用户 ID:
018e1234-5678-7abc-8def-000000000001~000000000003
-
projects.ts ✅
- 所有项目 ID、ownerId、folderId 更新为 UUID v7
- 项目 ID:
018e1234-5678-7abc-8def-100000000001~100000000008
-
folders.ts ✅
- 所有文件夹 ID、ownerId、parentFolderId 更新为 UUID v7
- 文件夹 ID:
018e1234-5678-7abc-8def-150000000001~150000000006
-
resources.ts ✅
- 所有资源 ID、projectId、createdBy 更新为 UUID v7
- 资源 ID:
018e1234-5678-7abc-8def-200000000001~200000000033 - 涵盖所有项目的角色、场景、道具、实拍素材
-
storyboards.ts ✅
- 所有分镜 ID、projectId、resourceId 引用更新为 UUID v7
- 分镜 ID:
018e1234-5678-7abc-8def-300000000001~300000000013 - 更新了所有资源关联引用
-
timeline.ts ✅
- 所有轨道 ID、项目 ID 更新为 UUID v7
- 所有时间轴元素 ID、trackId、关联 ID 更新为 UUID v7
- 轨道 ID:
018e1234-5678-7abc-8def-400000000001~400000000006 - 元素 ID:
018e1234-5678-7abc-8def-500000000001~500000000401
UUID v7 格式规范
所有 ID 遵循以下格式:
018e1234-5678-7abc-8def-{类型前缀}{序号}
类型前缀:
- 000000000xxx: 用户
- 100000000xxx: 项目
- 150000000xxx: 文件夹
- 200000000xxx: 资源
- 300000000xxx: 分镜
- 400000000xxx: 时间轴轨道
- 500000000xxx: 时间轴元素
- 600000000xxx: 视频
- 700000000xxx: 音效
- 800000000xxx: 字幕
- 900000000xxx: 配音
数据关联性验证
所有外键引用已验证:
- ✅ projectId → projects 表
- ✅ folderId → folders 表
- ✅ ownerId/createdBy → users 表
- ✅ resourceId → resources 表
- ✅ storyboardId → storyboards 表
- ✅ trackId → timeline tracks 表
技术细节
字段命名规范
- 统一使用 camelCase(API 响应层格式)
- 时间戳字段:
createdAt,updatedAt - 外键字段:
projectId,folderId,ownerId,createdBy
枚举值处理
- 后端使用 SMALLINT 存储
- API 层转换为字符串格式
- 前端 Mock 数据使用字符串格式保持一致
后续工作
待更新文件(优先级较低)
variants.ts- 标签变体数据voices.ts- 配音数据profiles.ts- 档案数据
这些文件的数据结构较为独立,不影响主要功能的数据关联性。
影响评估
正面影响
- 数据格式与后端 API 完全一致
- 便于前后端联调和数据迁移
- 提高代码可维护性
- 符合 UUID v7 标准规范
潜在风险
- 现有引用旧 ID 的代码需要更新
- 本地存储的数据可能需要清理
测试建议
- 清理浏览器本地存储
- 验证所有列表页面数据加载
- 验证详情页面数据关联
- 验证创建/编辑功能的 ID 生成