fix: 状态枚举添加_missing_兼容历史脏数据,修复Staging模板生成接口500 #809 #835
Reference in New Issue
Block a user
Delete Branch "bugfix/809-generation-task-status-missing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
Staging 环境模板生成接口和任务列表接口返回500(#809),E2E测试失败。
根因
Staging PostgreSQL 有历史脏数据(早期版本的状态值如
success/done等),GenerationTaskStatus枚举缺少_missing_兼容方法,从 DB 读取时枚举转换抛ValueError,触发500。两个500接口的共性:都调用
generation_task_repository.list_by_user_filtered()→_to_domain()→GenerationTaskStatus(model.status)枚举转换。同类问题:
EditPlanStatus和EditPlanClipStatus也缺_missing_,有同样的潜在风险,一并修复。修复
参照
AssetStatus和ClassificationJobStatus的已有模式,给三个枚举都加上_missing_方法:改动
packages/domain/generation_task.py:GenerationTaskStatus._missing_packages/domain/edit_plan.py:EditPlanStatus._missing_packages/domain/edit_plan_clip.py:EditPlanClipStatus._missing_tests/unit/test_generation_task_status_enum.py:32个兼容性单测(全绿)79a0ab457cto528bcaf59f代码审查结果 - PR #835
⚠️ 问题(0个需要修改)
无
💡 建议(2个可选)
_missing_方法中的映射列表包含冗余值。normalized in ("done", ..., "completed"),由于枚举中已定义COMPLETED = "completed",当传入"completed"时 Python 会直接匹配成功,根本不会调用_missing_。建议移除列表中与枚举值完全一致的字符串(如"completed","failed","cancelled"等),以保持代码整洁,避免误导。EditPlanStatus和EditPlanClipStatus的逻辑,但仅新增了GenerationTaskStatus的单元测试。虽然逻辑相似,但为了防止未来修改导致的不一致,建议补充另外两个枚举的兼容性测试。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题
🤖 由 AI 代码审查机器人自动生成 | 2026-07-24 16:18:53 | 模型:
🗑️ 预览环境已清理
PR #835 已关闭或合并,对应的预览环境已被清理。