fix(P1): 成片库历史数据user_id回填 #572
Reference in New Issue
Block a user
Delete Branch "fix/p1-video-library-backfill-user-id"
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?
问题
#563 成片库按用户维度改造上线后,历史数据查不到。原因:migration只加了user_id列但没回填,老记录user_id是空字符串,按真实用户UUID过滤匹配不到。
修复
兜底记录评估
所有正常生成路径(一键生成、剪辑计划、去重入库)都通过 create_video_record_and_dedup 创建记录,都有 generation_task_id。
回填不到的情况仅可能是早期手工测试数据或异常链路产生,数量极少。
如果staging上仍有查不到的情况,可进一步排查具体记录。
LGTM
2565cc5a2ftoe3f9fc5984e3f9fc5984to38bddb2a76CI全绿,自动审批通过。
CI全绿,自动审批通过。
38bddb2a76tob6819a9e3e🚀 预览环境已部署
📊 审查概览
❌ 需修改的问题(严重)
UPDATE ... FROM ...SQL 语句。如果generated_videos表数据量较大(例如超过 10 万行),此操作会长时间持有数据库写锁,阻塞线上业务对该表的读写请求,严重时可导致服务不可用或数据库连接池耗尽。LIMIT的 UPDATE 语句(每次处理 1000-5000 行),并在批次之间短暂休眠,以减小事务锁粒度。💡 改进建议(一般)
downgrade函数直接pass,意味着该迁移无法回滚。虽然数据回填确实难以精确区分哪些是回填的数据,但留空会让迁移工具误以为回滚成功。建议抛出NotImplementedError或在文档头部显著标记此迁移为“不可逆”,防止运维人员误操作回滚导致数据状态不一致。✅ 良好实践
WHERE gv.user_id = ''确保幂等性,避免重复更新已有数据。AND gt.created_by_user_id != ''作为防御性编程,防止将空值错误地回填进去。🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 11:56:30 | 模型:
🗑️ 预览环境已清理
PR #572 已关闭或合并,对应的预览环境已被清理。