fix(clips): 全面修复 Clips API 响应结构 — 替换 PR #1403 #1404

Merged
xiaoxia merged 6 commits from fix/clips-api-response-structure into develop 2026-08-17 18:18:48 +08:00

6 Commits

Author SHA1 Message Date
CI Bot 1db2ee0808 fix: preserve insertion order in asset_id dedup to fix test ordering
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 38s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m37s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m38s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m47s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m25s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m41s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m28s
AI Code Review / AI Code Review (pull_request) Failing after 4m43s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 4m2s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 4m29s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m44s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m33s
CI/CD Pipeline / CI Gate (pull_request) Successful in 9s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 27s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 46s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 717h12m19s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 717h12m21s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 717h12m20s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 717h12m22s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 717h17m24s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 717h17m24s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 717h18m5s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 717h17m25s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 717h18m6s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 717h18m4s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 717h18m4s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 717h18m6s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 717h18m6s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 717h45m58s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 717h46m0s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 717h51m42s
Changed set-based dedup to order-preserving dedup in _build_asset_url_map.
Set dedup caused non-deterministic iteration order which broke
side_effect-based mock assertions in tests.
2026-08-17 18:08:26 +08:00
CI Bot ac416493e0 fix: update test mocks for batch query + add asset_id dedup
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 35s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m50s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m51s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m53s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m7s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m59s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 3m7s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m48s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m29s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m0s
AI Code Review / AI Code Review (pull_request) Successful in 7m1s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m34s
CI/CD Pipeline / CI Gate (pull_request) Failing after 8s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 718h42m49s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 718h42m52s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 718h42m52s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 718h48m15s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 718h48m17s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 718h42m50s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 718h48m49s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 718h48m49s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 718h48m53s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 718h48m50s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 718h48m52s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 718h48m53s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 719h16m28s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 719h16m29s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 719h21m54s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 719h22m30s
- Replace find_by_id mocks with find_by_ids (returns list) in all 28 tests
- Add .id attributes to mock assets for asset_map key matching
- Dedup asset_ids in _build_asset_url_map to avoid redundant signing
- Fixes AI Code Review blocking issues #1 and #3
2026-08-17 16:37:39 +08:00
CI Bot 9e97473eec fix: batch query assets to resolve N+1 in _build_asset_url_map
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 58s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 0s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m18s
AI Code Review / AI Code Review (pull_request) Failing after 2m19s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m26s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m52s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m45s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 3m50s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m39s
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 718h50m45s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 718h50m46s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 718h50m47s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 718h50m47s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 718h50m47s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 718h56m25s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 718h56m21s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 718h56m27s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 718h57m23s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 718h57m23s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 718h57m25s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 718h57m27s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 718h57m27s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 719h24m23s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 719h31m0s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 719h31m4s
- Add find_by_ids() to SQLAlchemyAssetRepository (single SQL IN query)
- Replace per-id find_by_id loop with single batch call
- Fixes AI Code Review blocking performance issue in PR #1404
2026-08-17 16:28:49 +08:00
CI Bot 34bd9372ce style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 37s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m49s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m50s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m0s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m5s
AI Code Review / AI Code Review (pull_request) Failing after 2m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m26s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m24s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m59s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 4m18s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 7m34s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 5m23s
CI/CD Pipeline / CI Gate (pull_request) Successful in 7s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 719h38m19s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 719h38m23s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 719h38m21s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 719h38m23s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 719h38m23s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 719h45m19s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 719h45m55s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 719h45m20s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 719h45m57s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 719h45m20s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 719h45m59s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 719h45m54s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 719h45m59s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 720h11m58s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 720h19m32s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 720h19m35s
2026-08-17 07:40:34 +00:00
xiaoxia 2e53c59cd7 fix: remove unused typing.Any import + add clips API response structure tests
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 47s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m35s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m45s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m49s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m58s
AI Code Review / AI Code Review (pull_request) Successful in 3m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m37s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m7s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m15s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m41s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Integration 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 / 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 / PR Build Web Image (pull_request) Failing after 719h49m52s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 719h49m53s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 719h50m37s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 719h50m39s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 719h50m39s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 719h50m41s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 719h50m43s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 720h23m30s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 720h24m14s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 720h24m18s
- Remove unused 'from typing import Any' (Ruff F401)
- Add 28 unit/integration tests covering:
  - _clip_to_response: enum conversion, datetime formatting, asset_url param
  - _build_asset_url_map: empty list, storage failure, asset not found,
    no storage_key, success path, exception handling, mixed scenarios
  - Route integration: list/detail/split/merge with asset URL resolution
- Incremental coverage: 100% (95/95 added lines covered)
2026-08-17 15:35:46 +08:00
CI Bot 9aa0c69b26 fix(clips): 全面修复 Clips API 响应结构
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 49s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m51s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m20s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m22s
AI Code Review / AI Code Review (pull_request) Failing after 2m26s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m56s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 3m36s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m51s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m53s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 3m33s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m35s
CI/CD Pipeline / CI Gate (pull_request) Failing after 30s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 720h38m50s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 720h38m52s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 720h38m51s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 720h38m52s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 720h38m51s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 720h42m26s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 720h42m24s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 720h43m12s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 720h43m14s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 720h43m12s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 720h43m16s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 720h43m16s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 720h43m16s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 721h12m29s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 721h16m3s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 721h16m49s
P0: EditorClipResponse 补全所有数据库字段
- 新增 start_time, transition_duration, asset_id, status,
  template_clip_config_id, created_at, updated_at
- 新增 asset_url (OSS签名URL, 1小时有效)

P1: split/merge 端点统一使用 EditorClipResponse
- split 返回 {left_clip, right_clip} 均为 EditorClipResponse
- merge 返回 {merged_clip, deleted_clip_ids}
- 移除 dict[str, Any] 响应类型

P1: asset_url 签名URL解析
- 批量查询 Asset 表获取 storage_key
- 使用 StorageService.get_download_url() 签名
- 列表/详情/split/merge 端点均支持

P2: ClipsFromAssetsResponse 补上 plan_id 字段
2026-08-17 14:42:58 +08:00