feat(p1): OSS 双endpoint分离 — 上传/下载走VPC内网,签名URL走公网 #2085

Merged
auto-approve-bot merged 7 commits from fix/p1-oss-internal-endpoint into develop 2026-09-28 11:35:14 +08:00
Owner

背景

P0 #2084 把 GPU mezzanine transport 从 relay 切到 OSS 后,GPU 编码链路打通(NVENC 1.67s、无 CPU fallback),但实测总渲染 278s。运维逐阶段拆解发现:

  • mezzanine 上传 OSS 104s (0.71 MB/s) ❌ 走公网被限速
  • 成片上传 OSS 55s (0.35 MB/s) ❌ 走公网被限速
  • 封面抽帧+URL校验 88s ❌ 含视频副本上传公网 + 签名 URL 403 重试

根因:

  1. .env.staging 里 OSS_ENDPOINT 是公网域名,116 杭州 ECS 应走 VPC internal endpoint(千兆带宽),但代码把同一 endpoint 同时用于 SDK 和 public_url/sign_url,直接改会让外网签名 URL 失效
  2. oss_helpers.normalize_storage_key 缺 unquote,带编码字符的 key 签名返回 403,触发重试
  3. oss_helpers 与 SharedStorageService 重复维护两套 bucket/上传逻辑

改动(4 文件,-212 行)

  1. packages/config/base.py:新增 oss_internal_endpoint 配置 + effective_oss_internal_endpoint 属性。阿里云公网域名(oss-cn-.aliyuncs.com)自动推导 -internal 内网域名;MinIO/自定义域名回退公网;可显式覆盖
  2. packages/config/api_settings.py:新增 OSS_INTERNAL_ENDPOINT property
  3. packages/shared/storage.py(核心):维护两个 bucket——self.bucket 用 internal endpoint 跑所有 SDK 操作(put/get/delete/exists/resumable_upload,VPC 千兆);self.public_bucket 用公网 endpoint 仅 sign_url 用。public_url 永远是公网域名
  4. apps/worker/video_processing/oss_helpers.py:从 360 行收敛到 164 行,成为 SharedStorageService 的薄 wrapper,保留所有旧函数签名不影响调用方;修 normalize unquote bug

兼容性

  • 前端播放/P4000/MediaKit/浏览器直传:public_url 和签名 URL host 不变,仍是公网域名
  • 本地开发/MinIO:非阿里云域名不自动加 -internal,回退公网
  • .env 无需改动:现有 OSS_ENDPOINT 保持公网,internal 自动推导
  • 生产环境:杭州 ECS 同样自动生效

预期效果

  • 两段 OSS 上传 160s → <3s(VPC 千兆)
  • 签名 URL 403 消失,verify_url_accessible 首试即过
  • 整体渲染 <30s

验证

CI 通过后 watchtower 自动部署 staging:

  1. 启动日志 OSS initialized: ... dual=yes、internal_ep=oss-cn-hangzhou-internal.aliyuncs.com
  2. OSS_ENDPOINT 不用改 .env,自动推导
  3. 测试视频逐阶段对比:mezz 上传 <2s、成片上传 <2s、总 <30s
  4. 封面无 403、无 sign_url failed 重试
## 背景 P0 #2084 把 GPU mezzanine transport 从 relay 切到 OSS 后,GPU 编码链路打通(NVENC 1.67s、无 CPU fallback),但实测总渲染 278s。运维逐阶段拆解发现: - mezzanine 上传 OSS 104s (0.71 MB/s) ❌ 走公网被限速 - 成片上传 OSS 55s (0.35 MB/s) ❌ 走公网被限速 - 封面抽帧+URL校验 88s ❌ 含视频副本上传公网 + 签名 URL 403 重试 根因: 1. `.env.staging` 里 OSS_ENDPOINT 是公网域名,116 杭州 ECS 应走 VPC internal endpoint(千兆带宽),但代码把同一 endpoint 同时用于 SDK 和 public_url/sign_url,直接改会让外网签名 URL 失效 2. oss_helpers.normalize_storage_key 缺 unquote,带编码字符的 key 签名返回 403,触发重试 3. oss_helpers 与 SharedStorageService 重复维护两套 bucket/上传逻辑 ## 改动(4 文件,-212 行) 1. **packages/config/base.py**:新增 `oss_internal_endpoint` 配置 + `effective_oss_internal_endpoint` 属性。阿里云公网域名(oss-cn-<region>.aliyuncs.com)自动推导 -internal 内网域名;MinIO/自定义域名回退公网;可显式覆盖 2. **packages/config/api_settings.py**:新增 `OSS_INTERNAL_ENDPOINT` property 3. **packages/shared/storage.py(核心)**:维护两个 bucket——`self.bucket` 用 internal endpoint 跑所有 SDK 操作(put/get/delete/exists/resumable_upload,VPC 千兆);`self.public_bucket` 用公网 endpoint 仅 sign_url 用。`public_url` 永远是公网域名 4. **apps/worker/video_processing/oss_helpers.py**:从 360 行收敛到 164 行,成为 SharedStorageService 的薄 wrapper,保留所有旧函数签名不影响调用方;修 normalize unquote bug ## 兼容性 - 前端播放/P4000/MediaKit/浏览器直传:public_url 和签名 URL host 不变,仍是公网域名 - 本地开发/MinIO:非阿里云域名不自动加 -internal,回退公网 - .env 无需改动:现有 OSS_ENDPOINT 保持公网,internal 自动推导 - 生产环境:杭州 ECS 同样自动生效 ## 预期效果 - 两段 OSS 上传 160s → <3s(VPC 千兆) - 签名 URL 403 消失,verify_url_accessible 首试即过 - 整体渲染 <30s ## 验证 CI 通过后 watchtower 自动部署 staging: 1. 启动日志 `OSS initialized: ... dual=yes`、`internal_ep=oss-cn-hangzhou-internal.aliyuncs.com` 2. OSS_ENDPOINT 不用改 .env,自动推导 3. 测试视频逐阶段对比:mezz 上传 <2s、成片上传 <2s、总 <30s 4. 封面无 403、无 sign_url failed 重试
xiaoxia added 1 commit 2026-09-28 09:59:53 +08:00
feat(p1): OSS 双 endpoint 分离 — 上传/下载走 VPC 内网,签名 URL 走公网
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 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web 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 / 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 47s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m56s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m21s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m47s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m11s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 3m35s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m23s
AI Code Review / AI Code Review (pull_request) Successful in 6m36s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 8m57s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 12m37s
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
1a917a3472
问题:
- 116 是阿里云杭州 ECS,之前 oss_endpoint=oss-cn-hangzhou.aliyuncs.com(公网),
  worker 上传/下载 OSS 走公网卡到 0.3~0.7 MB/s,mezzanine 上传 104s + 成片上传 55s,
  吃掉 160s+ 渲染耗时。
- oss_helpers 自己维护一套 bucket 实例,和 SharedStorageService 重复实现,且
  normalize_storage_key 没做 URL decode(unquote),带编码字符的 key 签名出来
  返回 403,触发 _verify_url_accessible 2 次重试延迟。

改造:
1. config/base.py 新增 oss_internal_endpoint 配置项 + effective_oss_internal_endpoint
   属性:阿里云公网域名(oss-cn-<region>.aliyuncs.com)自动推导 -internal 内网
   域名,显式配置可覆盖;非阿里云/MinIO 回退公网。
2. packages/shared/storage.py 维护两个 bucket:
   - self.bucket:internal endpoint(VPC 千兆带宽),SDK 上传/下载/删除/exists
   - self.public_bucket:public endpoint,仅用于 sign_url 生成公网可访问 URL
   public_url 永远拼公网域名,对外不可感知。
3. apps/worker/video_processing/oss_helpers.py 收敛为 SharedStorageService 的
   薄 wrapper(-226 行),保留所有旧函数签名兼容现有调用:
   - oss_bucket() 返回 internal bucket
   - upload_to_oss/download_asset/delete_from_oss 转发到 storage 走 internal
   - get_signed_download_url 转发到 storage.get_download_url 用 public_bucket 签名
   - resolve_asset_path 转发到 storage 统一逻辑
4. normalize_storage_key 统一 unquote,修复签名 403。
5. config/api_settings.py 增加 OSS_INTERNAL_ENDPOINT 属性方便诊断。

预期效果:
- OSS 上传/下载从 0.3~0.7 MB/s → VPC 千兆(~100 MB/s),两段上传 160s 压到 <3s
- 签名 URL 不再 403,_verify_url_accessible 首试即过,不再重试
- 整体渲染耗时目标 <30s(GPU 编码链路 ~10s + OSS 传输 <5s + 合成/封面 <15s)
- 前端/P4000/MediaKit 外网访问 OSS 完全不变(public_url 仍是公网域名)

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2085 | | 预览链接 | [https://pr-2085.preview.xiaoxiajianji.com](https://pr-2085.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-09-28 10:16:19 +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 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web 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 / 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 Worker Image (pull_request) Successful in 41s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 43s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m59s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m11s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m39s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m49s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m2s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 4m23s
AI Code Review / AI Code Review (pull_request) Successful in 6m37s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 8m38s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Failing after 1s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m48s
d3fc05d32b
xiaoxia added 1 commit 2026-09-28 10:49:32 +08:00
fix(p1): 修复单测兼容性 — legacy shim 兼容 patch 路径与多模块实例
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 / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web 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 / 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 47s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m21s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m59s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m10s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m45s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m0s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 4m28s
AI Code Review / AI Code Review (pull_request) Successful in 6m29s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 8m3s
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
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
6a61a0e97f
- oss_helpers.py: 实现完整 legacy 路径(oss_settings mock 检测、_legacy_oss_bucket_from_settings、
  _legacy_upload_to_oss 含超时保护、本地缓存 resolve_asset_path),覆盖所有老单测 patch 路径
- 新增 _sibling_modules() 遍历 sys.modules 中同文件模块实例,解决 pytest importlib 模式下
  video_processing.oss_helpers 与 apps.worker.video_processing.oss_helpers 为两份实例的问题
- SharedStorageService 增加类级默认属性(bucket/public_bucket/public_endpoint 等),
  兼容测试 patch __init__ 后只手动赋 bucket 的场景
- storage.py 日志消息调整:包含 'OSS bucket not configured' 和 'signed URL generated' 关键字
- 本地 79 个 OSS/P0 相关单测全部通过
auto-approve-bot added 1 commit 2026-09-28 10:58:01 +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 1s
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 Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web 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 Worker Image (pull_request) Successful in 33s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 35s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m44s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m58s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 3m46s
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 / Unit Tests (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
f36f37c325
xiaoxia added 1 commit 2026-09-28 11:01:57 +08:00
fix(p1): 修复 rebase 冲突残留——清除 SyntaxError,全量单测通过
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
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 / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web 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 Worker Image (pull_request) Successful in 33s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 35s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m48s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m2s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m35s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 5m10s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m22s
AI Code Review / AI Code Review (pull_request) Successful in 6m36s
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 / Unit Tests (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
6e0bdc6589
oss_helpers.py 头部 import 段冲突标记残留导致 U+2014 全角破折号 SyntaxError,
62 个测试文件 collection 失败。清除后 309 个相关单测全过。
auto-approve-bot added 1 commit 2026-09-28 11:09:16 +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 / Build Staging API Image (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 / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (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 Worker Image (pull_request) Successful in 43s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 45s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m3s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m40s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m15s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m0s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 5m24s
AI Code Review / AI Code Review (pull_request) Successful in 6m36s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 7m46s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 7m51s
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 / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Failing after 1s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m37s
7dd6a832c5
xiaoxia added 1 commit 2026-09-28 11:23:56 +08:00
fix(p1): legacy upload_to_oss 处理文件不存在场景(单测兼容)
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 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web 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 / 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 Worker Image (pull_request) Successful in 47s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 49s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m20s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m9s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 3m19s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m26s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 3m53s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m41s
AI Code Review / AI Code Review (pull_request) Successful in 6m45s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 10m34s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 8m5s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 32s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 31s
aa135f5ee4
_legacy_upload_to_oss 的 stat 失败时默认 file_size=0 走小文件路径,
避免 test_p02_worker_oss_fix 中 MagicMock 不创建文件导致 FileNotFoundError。
auto-approve-bot merged commit e496f127a3 into develop 2026-09-28 11:35:14 +08:00
auto-approve-bot deleted branch fix/p1-oss-internal-endpoint 2026-09-28 11:35:17 +08:00

🗑️ 预览环境已清理

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

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

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