feat(P1): 成片库按用户维度改造,修复一键生成查不到+越权漏洞 #563
Reference in New Issue
Block a user
Delete Branch "fix/p1-video-library-user-level"
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?
背景
方案
改为按user_id维度组织成片库,既解决一键生成查不到的问题,又修复越权漏洞。
改动
🚀 预览环境已部署
代码审查结果 - PR #563
⚠️ 问题(2个需要修改)
apps/worker/worker_app/tasks/generation.py 第1516行:变量
user_id未定义直接使用。_upload_and_record时传入了user_id=user_id,但在generate_video函数的作用域内并未看到该变量的定义或提取逻辑(对比edit_plan_generation.py中的plan.created_by_user_id)。这将导致运行时直接抛出NameError。edit_plan_generation.py的处理方式,从generation_task对象中提取user_id,并处理可能的None值(例如user_id=task.user_id or "")。packages/domain/generated_video.py 第60行:潜在的
AttributeError风险。create方法中执行了user_id=user_id.strip()。虽然类型注解为str,但 Python 不强制执行类型,若上游传入None(例如数据库中旧数据或任务对象属性为空),此处会崩溃。且由于GeneratedVideoModel中该字段nullable=False,若传入None会导致数据库插入错误。user_id = (user_id or "").strip(),确保存入数据库的值不为None。💡 建议(1个可选)
server_default=""处理存量数据。这意味着现有的成片记录user_id将为空字符串。配合 Repository 中的if user_id:过滤逻辑,这些存量成片将对所有用户不可见(即被“隐藏”)。如果业务上需要保留存量数据的可见性,需要编写额外的数据迁移脚本来归属这些历史记录。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能检查通过
🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 10:25:22 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #563 已关闭或合并,对应的预览环境已被清理。