test(wave114): 抽离color_grade_config领域模型 + 56单测 #1000

Closed
xiaoxia wants to merge 1 commits from test/wave114-color-grade-config into develop
Owner

变更内容

  • 抽离 ColorGradeConfig 数据类、8个预设、PARAM_RANGES/DEFAULT_PARAMS 到 packages/domain/color_grade_config.py
  • 新增 get_preset_names/get_preset_params/clamp_param 工具函数
  • color_grade_engine.py: 416→211 行 (-49%),保留向后兼容导入

单测

  • 新增 56 个纯逻辑单测(test_color_grade_config.py)
  • 原有 31 个测试无回归(test_color_grade_engine.py)
  • 合计 87 passed
## 变更内容 - 抽离 ColorGradeConfig 数据类、8个预设、PARAM_RANGES/DEFAULT_PARAMS 到 packages/domain/color_grade_config.py - 新增 get_preset_names/get_preset_params/clamp_param 工具函数 - color_grade_engine.py: 416→211 行 (-49%),保留向后兼容导入 ## 单测 - 新增 56 个纯逻辑单测(test_color_grade_config.py) - 原有 31 个测试无回归(test_color_grade_engine.py) - 合计 **87 passed**
xiaoxia added 1 commit 2026-07-27 07:14:40 +08:00
test(wave114): 抽离color_grade_config领域模型 + 56单测
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 27s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m6s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m14s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m30s
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 37s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 52s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 55s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 51s
AI Code Review / AI Code Review (pull_request) Successful in 2m4s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m57s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m51s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m21s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m32s
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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 26s
abb081f07b
- 抽离ColorGradeConfig数据类、8个预设、PARAM_RANGES/DEFAULT_PARAMS到packages/domain/color_grade_config.py
- 新增get_preset_names/get_preset_params/clamp_param工具函数
- color_grade_engine.py: 416→211行 (-49%),保留向后兼容导入
- 56个纯逻辑单测全绿,原有31个测试无回归
- 合计87 passed

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1000 | | 预览链接 | [https://pr-1000.preview.xiaoxiajianji.com](https://pr-1000.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Collaborator

代码审查结果 - PR #1000

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

💡 建议(2个可选)

  1. packages/domain/color_grade_config.py 第229行_get_float 函数未处理 NaN(非数字)情况。

    • 说明:float("NaN")float("nan") 会成功解析为 nan,后续的数值比较(如 val <)均返回 False,导致 validate 校验通过,但传递给底层引擎(如FFmpeg)时可能导致错误或非预期行为。
    • 建议:在 _get_float 中增加对 math.isnan(val) 的检查,返回 None 以使用默认值。
  2. packages/domain/color_grade_config.py 第218行from_dict 函数对输入参数 data 的类型防御不足。

    • 说明:虽然类型注解为 dict,但如果调用方传入非字典类型(如列表、字符串),data.get 会抛出 AttributeError。考虑到这是配置解析入口,建议增加 isinstance(data, dict) 检查。

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


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

## 代码审查结果 - PR #1000 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(2个可选) 1. **packages/domain/color_grade_config.py 第229行**:`_get_float` 函数未处理 `NaN`(非数字)情况。 - 说明:`float("NaN")` 或 `float("nan")` 会成功解析为 `nan`,后续的数值比较(如 `val <`)均返回 False,导致 `validate` 校验通过,但传递给底层引擎(如FFmpeg)时可能导致错误或非预期行为。 - 建议:在 `_get_float` 中增加对 `math.isnan(val)` 的检查,返回 None 以使用默认值。 2. **packages/domain/color_grade_config.py 第218行**:`from_dict` 函数对输入参数 `data` 的类型防御不足。 - 说明:虽然类型注解为 `dict`,但如果调用方传入非字典类型(如列表、字符串),`data.get` 会抛出 `AttributeError`。考虑到这是配置解析入口,建议增加 `isinstance(data, dict)` 检查。 --- ✅ 格式检查通过 | ✅ 逻辑审查需修改 | ✅ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-26 23:19:08 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia closed this pull request 2026-07-27 15:26:23 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1000 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 27s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m6s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m14s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m30s
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 37s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 52s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 55s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 51s
AI Code Review / AI Code Review (pull_request) Successful in 2m4s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m57s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m51s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m21s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m32s
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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 26s

Pull request closed

Sign in to join this conversation.