fix(worker): 修复素材下载——asset_id查assets表拿file_url + 统一OSS配置读取 #471

Merged
auto-approve-bot merged 3 commits from fix/worker-oss-settings-unified into develop 2026-07-17 15:37:41 +08:00
Owner

问题根因(两个)

根因1(主要):render_adapter.py _download_assets 直接把 asset_id 当 OSS key 用

RenderAdapter._download_assets()clip.asset_id(UUID主键)直接传给 download_asset() 当OSS存储路径,但 asset_id 是数据库主键,不是OSS上的文件路径。正确做法应该是先通过 asset_id 查 assets 表拿到 file_url(真正的OSS存储路径),再用 file_url 下载。

对比 edit_plan_generation.py 里的 legacy 路径和 _prepare_bgm() 方法,都是先查 AssetModel 拿 file_url 再下载,唯独 render_adapter 的 _download_assets 写错了。

根因2(次要):两套独立的OSS配置读取路径

Worker端存在两套OSS配置读取:

  • SharedStorageService → pydantic-settings + .env文件
  • oss_helpers.oss_settings() → 直接 os.getenv(),不读.env

如果OSS配置写在.env文件里(大部分Docker部署),oss_helpers读不到配置 → oss_bucket()返回None → 下载静默失败。

修复内容

1. render_adapter.py 素材下载逻辑修复

  • _download_assets() 从 staticmethod 改为实例方法
  • 批量查询 AssetModel 获取 file_url(OSS存储路径)
  • file_url 作为 key 调用 download_asset()
  • 保留原始文件扩展名,不再硬编码 .mp4
  • 无 file_url 的素材跳过下载并标记失败

2. oss_helpers.py 配置读取统一

  • oss_settings() 改用 get_shared_settings() 读取配置
  • 与 SharedStorageService 配置来源保持一致
  • 支持从 .env 文件加载OSS配置

影响范围

  • apps/worker/video_processing/render_adapter.py — _download_assets 方法重写
  • apps/worker/video_processing/oss_helpers.py — oss_settings 配置读取统一
  • 主要影响:剪辑计划走统一渲染引擎的素材下载(P1-2链路)
## 问题根因(两个) ### 根因1(主要):render_adapter.py _download_assets 直接把 asset_id 当 OSS key 用 `RenderAdapter._download_assets()` 把 `clip.asset_id`(UUID主键)直接传给 `download_asset()` 当OSS存储路径,但 asset_id 是数据库主键,不是OSS上的文件路径。正确做法应该是先通过 asset_id 查 `assets` 表拿到 `file_url`(真正的OSS存储路径),再用 file_url 下载。 对比 `edit_plan_generation.py` 里的 legacy 路径和 `_prepare_bgm()` 方法,都是先查 AssetModel 拿 file_url 再下载,唯独 render_adapter 的 _download_assets 写错了。 ### 根因2(次要):两套独立的OSS配置读取路径 Worker端存在两套OSS配置读取: - `SharedStorageService` → pydantic-settings + .env文件 - `oss_helpers.oss_settings()` → 直接 os.getenv(),不读.env 如果OSS配置写在.env文件里(大部分Docker部署),oss_helpers读不到配置 → oss_bucket()返回None → 下载静默失败。 ## 修复内容 ### 1. render_adapter.py 素材下载逻辑修复 - `_download_assets()` 从 staticmethod 改为实例方法 - 批量查询 `AssetModel` 获取 `file_url`(OSS存储路径) - 用 `file_url` 作为 key 调用 `download_asset()` - 保留原始文件扩展名,不再硬编码 .mp4 - 无 file_url 的素材跳过下载并标记失败 ### 2. oss_helpers.py 配置读取统一 - `oss_settings()` 改用 `get_shared_settings()` 读取配置 - 与 SharedStorageService 配置来源保持一致 - 支持从 .env 文件加载OSS配置 ## 影响范围 - `apps/worker/video_processing/render_adapter.py` — _download_assets 方法重写 - `apps/worker/video_processing/oss_helpers.py` — oss_settings 配置读取统一 - 主要影响:剪辑计划走统一渲染引擎的素材下载(P1-2链路)
xiaoxia added 1 commit 2026-07-17 14:40:35 +08:00
fix(worker): 统一OSS配置读取为SharedSettings,解决oss_helpers读不到.env配置的问题
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 18s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 55s
AI Code Review / AI Code Review (pull_request) Successful in 1m0s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 2m52s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 3m17s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m57s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 3m20s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m46s
cd1f6f6b34
xiaoxia added 1 commit 2026-07-17 14:50:17 +08:00
fix(worker): render_adapter素材下载先查assets表拿file_url而非直接用asset_id当key
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 35s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 13s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 2m35s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 4m22s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 3m3s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 3m7s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 41s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m32s
3b96e0c6f6
- _download_assets() 从 staticmethod 改为实例方法,通过 self._db 查询 assets 表
- 批量查询 AssetModel 获取 file_url(OSS 存储路径),再用 file_url 下载
- asset_id 是 UUID 主键,不能直接当作 OSS 存储 key 使用
- 保留原始文件扩展名,不再硬编码 .mp4
- 配套更新单元测试,新增无 file_url 场景测试
xiaoxia changed title from fix(worker): 统一OSS配置读取为SharedSettings,修复素材下载静默失败 to fix(worker): 修复素材下载——asset_id查assets表拿file_url + 统一OSS配置读取 2026-07-17 14:50:35 +08:00
xiaoxia added 1 commit 2026-07-17 15:33:36 +08:00
fix(tests): 修复oss_helpers测试 — 改用patch oss_settings替代patch os.environ + black格式化
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 19s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 48s
AI Code Review / AI Code Review (pull_request) Successful in 59s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m2s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m43s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 3m15s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m27s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 4m5s
cefd97966a
auto-approve-bot approved these changes 2026-07-17 15:36:50 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-17 15:36:50 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 41e3fc7a58 into develop 2026-07-17 15:37:41 +08:00
auto-approve-bot deleted branch fix/worker-oss-settings-unified 2026-07-17 15:37:41 +08:00
Sign in to join this conversation.