fix(worker): 素材下载改用storage_key字段,修复file_url为URL导致下载无效文件 #480
Reference in New Issue
Block a user
Delete Branch "fix/download-asset-storage-key"
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?
问题
_download_assets中使用a.file_url作为 OSS key 下载素材,但file_url是带签名的完整URL(用于客户端访问),不是 OSS 存储键。导致 worker 下载下来的文件是无效的,ffmpeg 报moov atom not found。修复
storage_key字段(真正的 OSS 存储键)render_adapter._download_assets()改用a.storage_keyrender_adapter._prepare_bgm()素材库BGM下载改用storage_keyedit_plan_generation.py同步修复generation.pyBGM素材库下载同步修复asset_repository映射同步更新(storage_key 字段)影响范围
注意
代码审查结果 - PR #480
⚠️ 问题(2个需要修改)
packages/adapters/sqlalchemy_impl/asset_repository.py 第75行, 第103行:
file_url字段被错误地赋值为storage_key。file_url=asset.storage_key将内部存储键赋值给了file_url字段。根据models.py中的注释,file_url定义为“完整可访问的 URL”,而storage_key是“OSS 存储键/路径”。如果客户端依赖file_url字段获取资源链接,此变更会导致客户端获取到错误的路径(而非完整的 http/https URL),从而造成资源无法访问。file_url的用途。如果需要保留file_url为完整 URL,应保留原有的生成逻辑或根据storage_key拼接完整 URL;如果file_url字段已被废弃,不应继续写入数据或应明确注释其不再作为对外接口。.gitea/workflows/ci-cd.yml 第354行:使用了未定义的环境变量
HAS_APP_CHANGES。if条件中引用了env.HAS_APP_CHANGES,但在 "Select incremental test files" 步骤的脚本逻辑中并未设置该环境变量(仅设置了UNIT_TEST_MODE和SELECTED_TEST_FILES)。这会导致该条件判断失败或报错,使得增量覆盖率检查步骤被意外跳过。HAS_APP_CHANGES环境变量(例如echo "HAS_APP_CHANGES=true" >> $GITHUB_ENV)。💡 建议(2个可选)
alembic/versions/042_add_storage_key_to_assets.py 第20行:字段长度限制风险。
storage_key字段长度限制为String(500),而原有的file_url为String(1000)。虽然通常存储键比 URL 短,但如果存在长路径或特殊命名,可能会导致数据截断或写入失败。建议确认历史数据中路径长度是否均在 500 以内,或适当放宽限制。.gitea/workflows/ci-cd.yml 第268行:API 查询限制。
curl请求 API 时使用了limit=300。如果 PR 涉及的文件变动超过 300 个,将无法获取完整的变动列表,导致增量测试文件选择不完整。建议在日志中增加提示,或处理分页逻辑(虽然对于 CI 场景 300 个通常已足够,但存在边界情况)。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-17 19:08:22 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。