fix: P0 upload 404 (project/library mismatch) + worker 3 bugs + 秒传 URL #2109

Merged
xiaoxia merged 5 commits from fix/2109-p0-upload-404-and-worker-bugs into develop 2026-09-30 23:31:52 +08:00
Owner

修复列表

P0 前端上传 404

根因:getAssetLibraries() 不传 project_id 返回所有项目的库,但 uploadAssetDirect 内部 getOrCreateDefaultProject() 只取第一个项目,两者不匹配导致后端返回 404。

  • apps/web/src/api/assets/upload.ts:library_id 改为可选,内部 getOrCreateDefaultProject + ensureDefaultLibrary 自动解析正确的 project/library 配对;新增 inferKindFromFile 按 MIME/扩展名推断
  • 5 处调用点简化:ViralVideoPage / useVoiceUpload / useBatchCovers / Step6CoverSettings / useVoiceMaterials,全部去掉手动 getAssetLibraries+find 模式

Bug1 (P0): upload_to_oss TypeError

_step_upload 传了不存在的 prefix= kwarg。按 generation.py 同模式构造 storage_key = generated/viral-video/{user_id}/{job_id}/{filename}。

Bug2 (P0): Seedance API 404

代码里端点、模型名(Doubao-Seedance-2-5-251128)、base_url 都与火山官方一致。404 几乎必然是模型未开通/Key 无权限/应用推理接入点。增强 ai_client 日志:create 请求打印 URL/model/参数,4xx/5xx 完整打响应体,失败时输出排查指引。

Bug3 (P1): TTS import services 模块路径

services.tts_service_factory 改为绝对路径 apps.worker.services.tts_service_factory;加 synthesize(text, voice_id) TypeError 兜底。

额外:秒传命中时前端拿到空 URL

DirectUploadPrepareResponse 加 url 字段;prepare 端 duplicated 时填 existing.file_url 或 storage URL;前端 duplicated 短路时返回 prepared.url。

CI/CD:worker 容器 tag 被旧 override 钉死

ci_staging_deploy.sh 部署前主动清理 docker-compose.override.yml / compose.override.yml。

## 修复列表 ### P0 前端上传 404 根因:getAssetLibraries() 不传 project_id 返回所有项目的库,但 uploadAssetDirect 内部 getOrCreateDefaultProject() 只取第一个项目,两者不匹配导致后端返回 404。 - apps/web/src/api/assets/upload.ts:library_id 改为可选,内部 getOrCreateDefaultProject + ensureDefaultLibrary 自动解析正确的 project/library 配对;新增 inferKindFromFile 按 MIME/扩展名推断 - 5 处调用点简化:ViralVideoPage / useVoiceUpload / useBatchCovers / Step6CoverSettings / useVoiceMaterials,全部去掉手动 getAssetLibraries+find 模式 ### Bug1 (P0): upload_to_oss TypeError _step_upload 传了不存在的 prefix= kwarg。按 generation.py 同模式构造 storage_key = generated/viral-video/{user_id}/{job_id}/{filename}。 ### Bug2 (P0): Seedance API 404 代码里端点、模型名(Doubao-Seedance-2-5-251128)、base_url 都与火山官方一致。404 几乎必然是模型未开通/Key 无权限/应用推理接入点。增强 ai_client 日志:create 请求打印 URL/model/参数,4xx/5xx 完整打响应体,失败时输出排查指引。 ### Bug3 (P1): TTS import services 模块路径 services.tts_service_factory 改为绝对路径 apps.worker.services.tts_service_factory;加 synthesize(text, voice_id) TypeError 兜底。 ### 额外:秒传命中时前端拿到空 URL DirectUploadPrepareResponse 加 url 字段;prepare 端 duplicated 时填 existing.file_url 或 storage URL;前端 duplicated 短路时返回 prepared.url。 ### CI/CD:worker 容器 tag 被旧 override 钉死 ci_staging_deploy.sh 部署前主动清理 docker-compose.override.yml / compose.override.yml。
xiaoxia added 1 commit 2026-09-30 22:15:10 +08:00
fix: P0 upload 404 (project/library mismatch) + worker bug fixes
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m10s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m21s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m43s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 2m14s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m2s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 4m5s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 6m32s
AI Code Review / AI Code Review (pull_request) Successful in 7m14s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
8bdc39a1ab
- upload.ts: library_id optional, auto ensureDefaultLibrary via getOrCreateDefaultProject
- 5 call sites simplified (ViralVideoPage/useVoiceUpload/useBatchCovers/Step6Cover/useVoiceMaterials)
- Bug1 (P0): upload_to_oss prefix kwarg → construct storage_key per generation.py pattern
- Bug2 (P0): Seedance 404 enhanced logging w/ URL/model/response body + troubleshooting hints
- Bug3 (P1): TTS import from services.* → apps.worker.services.* + synthesize fallback
- duplicated=true: backend returns existing asset URL in prepare, frontend uses it
- CI: ci_staging_deploy.sh auto-clean stale docker-compose.override.yml

Refs: #2109
xiaoxia added 1 commit 2026-09-30 22:26:23 +08:00
fix(web): eslint/tsc errors - prefer-const + unused arg prefix
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m2s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m23s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m30s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m38s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m8s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 5m54s
AI Code Review / AI Code Review (pull_request) Successful in 7m17s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 8m49s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m39s
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
87eb480f3c

🚀 预览环境已部署

项目 详情
PR号 #2109
预览链接 https://pr-2109.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2109 | | 预览链接 | [https://pr-2109.preview.xiaoxiajianji.com](https://pr-2109.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-09-30 22:45:29 +08:00
style(web): prettier formatting for useVoiceUpload
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 3s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m11s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m45s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m45s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m10s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 4m26s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 4m24s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 5m16s
AI Code Review / AI Code Review (pull_request) Successful in 7m24s
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
fa9545f79b
xiaoxia added 1 commit 2026-09-30 22:58:53 +08:00
style(web): prettier --write all modified files
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 0s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m22s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m41s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m41s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m55s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m7s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m51s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m53s
AI Code Review / AI Code Review (pull_request) Successful in 7m27s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m38s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 26m2s
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
3fbc1bbfe6
auto-approve-bot added 1 commit 2026-09-30 23:26:24 +08:00
style: auto-format with black + isort + ruff + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m12s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m18s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m47s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m55s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m50s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m46s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 5m21s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Failing after 17s
AI Code Review / AI Code Review (pull_request) Successful in 7m31s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m50s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 3m55s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 22m41s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 24m4s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 30m10s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 30m41s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 50m5s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Failing after 1s
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
17a95eb8f0
xiaoxia merged commit c7f8db383f into develop 2026-09-30 23:31:52 +08:00

🗑️ 预览环境已清理

PR #2109 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #2109 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.