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
This commit is contained in:
CI Bot
2026-08-17 16:28:49 +08:00
parent 34bd9372ce
commit 9e97473eec
2 changed files with 16 additions and 1 deletions
@@ -101,6 +101,13 @@ class SQLAlchemyAssetRepository:
return None
return self._to_domain(model)
def find_by_ids(self, asset_ids: list[str]) -> list[Asset]:
"""批量查询素材(单次 SQL IN 查询,避免 N+1)。"""
if not asset_ids:
return []
models = self.session.query(AssetModel).filter(AssetModel.id.in_(asset_ids)).all()
return [self._to_domain(m) for m in models]
def get(self, asset_id: str) -> Asset | None:
return self.find_by_id(asset_id)