跳转到内容

数据库结构优化:版本状态流程简化

此内容尚不支持你的语言。

Initial release for Minecraft 1.20.1

简化项目版本创建和审核流程,移除中间的 draft 状态,版本创建成功(所有文件上传完成)后自动提交审核。

旧流程

创建版本(uploading) -> 上传完成(draft) -> 手动提交审核(processing) -> 审核结果(approved/rejected)

新流程

创建版本(uploading) -> 上传完成(自动提交审核 processing) -> 审核结果(approved/rejected)
  • status 字段默认值保持 uploading(临时),但在 schema 注释中移除 draft 状态
  • 状态枚举:uploading, processing, rejected, approved, published, archived

3.1 创建版本 API (POST /project/version/create)

Section titled “3.1 创建版本 API (POST /project/version/create)”
  1. 事务创建:版本记录 + 文件记录 + 预签名URL
  2. 初始状态uploading
  3. 失败回滚:事务保护,失败时自动清理所有记录

3.2 文件上传确认 API (POST /project/file/upload-complete)

Section titled “3.2 文件上传确认 API (POST /project/file/upload-complete)”
  1. 更新文件状态pending -> completed/failed
  2. 检查完成度:所有文件上传完成时
  3. 自动提交审核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 状态的版本
  • 清理逻辑:删除版本及相关文件记录
  • 触发条件:所有文件上传完成
  • 执行逻辑:在文件上传确认API中自动检查并更新版本状态
  • 用户体验:无需手动点击”提交审核”按钮
  • 创建阶段:版本始终从 uploading 开始
  • 上传阶段:文件状态与版本状态联动
  • 审核阶段:版本自动进入 processing 状态
  • 事务保护:版本创建失败时自动回滚
  • 状态验证:API 操作前验证状态合法性
  • 权限检查:确保操作者有相应权限

迁移脚本:migrations/simplify-version-status-flow.sql

Section titled “迁移脚本:migrations/simplify-version-status-flow.sql”
  1. 状态转换:将现有 draft 状态版本转为 processing
  2. 完成的上传:将完成文件上传的 uploading 版本转为 processing
  3. 注释更新:更新状态字段注释,说明新的状态流转
  • 条件更新:只更新满足条件的记录
  • 数据验证:确保文件上传状态与版本状态一致
  • 向后兼容:保持其他状态不变
  1. 用户体验:简化操作流程,减少手动步骤
  2. 一致性:状态流转更加清晰和自动化
  3. 维护性:减少状态管理复杂度
  1. 前端适配:需要更新UI以移除”提交审核”按钮
  2. 状态显示:需要调整版本状态的显示逻辑
  3. 通知机制:可能需要调整自动审核提交的通知
  1. 端到端测试:完整的版本创建 -> 文件上传 -> 自动审核提交流程
  2. 边界情况:部分文件上传失败的处理
  3. 权限测试:不同用户角色的操作权限
  4. 数据迁移测试:在测试环境验证迁移脚本效果
t1