第89波 - 拆分asset_analyzer评分纯逻辑 + 64单测 #938

Closed
xiaoxia wants to merge 1 commits from test/wave89-asset-analyzer-split into develop
Owner
No description provided.
xiaoxia added 1 commit 2026-07-26 16:30:28 +08:00
refactor+test(asset): 第89波 - 拆分asset_analyzer评分纯逻辑 + 64单测
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 9s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 59s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 29s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m36s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 58s
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 / PR Build Worker Image (pull_request) Successful in 29s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m4s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 2m3s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 26s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 45s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
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 Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m23s
AI Code Review / AI Code Review (pull_request) Successful in 3m42s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m58s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m4s
CI/CD Pipeline / CI Gate (pull_request) 失败: CI/CD Pipeline / Validate - Code Quality (pull_request), CI/CD Pipeline / Frontend Lint (pull_request), CI/CD Pipeline / PR Build Web Image (pull_request) [backend-only]
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 56s
3be0aca709
- 从799行asset_analyzer.py拆出asset_quality_scoring.py纯逻辑模块
- 质量评分:分辨率/帧率/码率/清晰度/稳定性 5个维度纯函数
- 分类评分:9个分类(风景/产品/人物/动物/美食/科技/运动/音乐/其他)
- 64个单测全覆盖:边界值、numpy数组、分类组合、数据类
- 原文件从799行瘦身到467行(-332行)
- 向后兼容:classify_asset_real / calculate_quality_score_real 入口不变
Collaborator

代码审查结果 - PR #938

⚠️ 问题(0个需要修改)

💡 建议(3个可选)

  1. apps/worker/worker_app/tasks/asset_quality_scoring.py 第215行:循环内重复导入模块

    • 问题描述:from scipy import signal 位于 for 循环内部。虽然代码逻辑上可行(为了配合 try-except 捕获 ImportError),但每次循环都会执行导入操作,造成不必要的性能开销。
    • 修改建议:将 from scipy import signal 移至 try 块的开始处(循环外部)。如果 scipy 缺失,会在进入循环前抛出 ImportError 并被捕获,效果相同且更高效。
  2. apps/worker/worker_app/tasks/asset_quality_scoring.py 第435行:冗余的空值检查

    • 问题描述:if not scores: 检查是死代码。调用的 calculate_category_scores 函数始终会返回包含至少一个键(AssetClassification.OTHER.value)的字典,因此 scores 永远不会为空。
    • 修改建议:删除 if not scores: 及其对应的 return 分支,直接执行后续的 max 逻辑。
  3. apps/worker/worker_app/tasks/asset_quality_scoring.py 第204行 & 第254行:异常捕获过于宽泛且缺少日志

    • 问题描述:except Exception: 捕获了所有异常。虽然对于非关键的评分任务,返回默认分(10.0)可以防止任务中断,但静默吞掉异常(如内存错误、意外的数据类型错误)会掩盖潜在的问题。
    • 修改建议:建议捕获具体异常(如 ImportError, ValueError),或在 except Exception 块中添加 logger.warning 记录异常堆栈,便于排查问题。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-26 08:44:33 | 模型:

## 代码审查结果 - PR #938 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(3个可选) 1. **apps/worker/worker_app/tasks/asset_quality_scoring.py 第215行**:循环内重复导入模块 - 问题描述:`from scipy import signal` 位于 `for` 循环内部。虽然代码逻辑上可行(为了配合 try-except 捕获 ImportError),但每次循环都会执行导入操作,造成不必要的性能开销。 - 修改建议:将 `from scipy import signal` 移至 `try` 块的开始处(循环外部)。如果 scipy 缺失,会在进入循环前抛出 ImportError 并被捕获,效果相同且更高效。 2. **apps/worker/worker_app/tasks/asset_quality_scoring.py 第435行**:冗余的空值检查 - 问题描述:`if not scores:` 检查是死代码。调用的 `calculate_category_scores` 函数始终会返回包含至少一个键(`AssetClassification.OTHER.value`)的字典,因此 `scores` 永远不会为空。 - 修改建议:删除 `if not scores:` 及其对应的 return 分支,直接执行后续的 `max` 逻辑。 3. **apps/worker/worker_app/tasks/asset_quality_scoring.py 第204行 & 第254行**:异常捕获过于宽泛且缺少日志 - 问题描述:`except Exception:` 捕获了所有异常。虽然对于非关键的评分任务,返回默认分(10.0)可以防止任务中断,但静默吞掉异常(如内存错误、意外的数据类型错误)会掩盖潜在的问题。 - 修改建议:建议捕获具体异常(如 `ImportError`, `ValueError`),或在 `except Exception` 块中添加 `logger.warning` 记录异常堆栈,便于排查问题。 --- ✅ 格式检查通过 | ✅ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-26 08:44:33 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia closed this pull request 2026-07-27 19:48:57 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #938 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 9s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 59s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 29s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m36s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 58s
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 / PR Build Worker Image (pull_request) Successful in 29s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m4s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 2m3s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 26s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 45s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
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 Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m23s
AI Code Review / AI Code Review (pull_request) Successful in 3m42s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m58s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m4s
CI/CD Pipeline / CI Gate (pull_request) 失败: CI/CD Pipeline / Validate - Code Quality (pull_request), CI/CD Pipeline / Frontend Lint (pull_request), CI/CD Pipeline / PR Build Web Image (pull_request) [backend-only]
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 56s

Pull request closed

Sign in to join this conversation.