数据库结构优化:版本状态流程简化
此内容尚不支持你的语言。
Initial release for Minecraft 1.20.1
简化项目版本创建和审核流程,移除中间的 draft 状态,版本创建成功(所有文件上传完成)后自动提交审核。
1. 状态流程简化
Section titled “1. 状态流程简化”旧流程:
创建版本(uploading) -> 上传完成(draft) -> 手动提交审核(processing) -> 审核结果(approved/rejected)新流程:
创建版本(uploading) -> 上传完成(自动提交审核 processing) -> 审核结果(approved/rejected)2. 数据库 Schema 变更
Section titled “2. 数据库 Schema 变更”projectVersion 表
Section titled “projectVersion 表”status字段默认值保持uploading(临时),但在 schema 注释中移除draft状态- 状态枚举:
uploading,processing,rejected,approved,published,archived
3. API 流程变更
Section titled “3. API 流程变更”3.1 创建版本 API (POST /project/version/create)
Section titled “3.1 创建版本 API (POST /project/version/create)”- 事务创建:版本记录 + 文件记录 + 预签名URL
- 初始状态:
uploading - 失败回滚:事务保护,失败时自动清理所有记录
3.2 文件上传确认 API (POST /project/file/upload-complete)
Section titled “3.2 文件上传确认 API (POST /project/file/upload-complete)”- 更新文件状态:
pending->completed/failed - 检查完成度:所有文件上传完成时
- 自动提交审核:
uploading->processing(关键变更)
3.3 重新提交审核 API (POST /project/version/resubmit)
Section titled “3.3 重新提交审核 API (POST /project/version/resubmit)”- 替代原提交审核API:专门用于被拒绝版本的重新提交
- 状态限制:只允许
rejected状态的版本重新提交 - 目标状态:
rejected->processing
3.4 取消版本创建 API (DELETE /project/version/{id}/cancel)
Section titled “3.4 取消版本创建 API (DELETE /project/version/{id}/cancel)”- 状态限制:只能取消
uploading状态的版本 - 清理逻辑:删除版本及相关文件记录
4. 业务逻辑优化
Section titled “4. 业务逻辑优化”4.1 自动化审核提交
Section titled “4.1 自动化审核提交”- 触发条件:所有文件上传完成
- 执行逻辑:在文件上传确认API中自动检查并更新版本状态
- 用户体验:无需手动点击”提交审核”按钮
4.2 状态一致性
Section titled “4.2 状态一致性”- 创建阶段:版本始终从
uploading开始 - 上传阶段:文件状态与版本状态联动
- 审核阶段:版本自动进入
processing状态
4.3 错误处理
Section titled “4.3 错误处理”- 事务保护:版本创建失败时自动回滚
- 状态验证:API 操作前验证状态合法性
- 权限检查:确保操作者有相应权限
迁移脚本:migrations/simplify-version-status-flow.sql
Section titled “迁移脚本:migrations/simplify-version-status-flow.sql”- 状态转换:将现有
draft状态版本转为processing - 完成的上传:将完成文件上传的
uploading版本转为processing - 注释更新:更新状态字段注释,说明新的状态流转
- 条件更新:只更新满足条件的记录
- 数据验证:确保文件上传状态与版本状态一致
- 向后兼容:保持其他状态不变
- 用户体验:简化操作流程,减少手动步骤
- 一致性:状态流转更加清晰和自动化
- 维护性:减少状态管理复杂度
- 前端适配:需要更新UI以移除”提交审核”按钮
- 状态显示:需要调整版本状态的显示逻辑
- 通知机制:可能需要调整自动审核提交的通知
- 端到端测试:完整的版本创建 -> 文件上传 -> 自动审核提交流程
- 边界情况:部分文件上传失败的处理
- 权限测试:不同用户角色的操作权限
- 数据迁移测试:在测试环境验证迁移脚本效果