refactor(test): 第109波 - sticker_config领域模型抽离 + 52单测 #991

Closed
xiaoxia wants to merge 1 commits from test/wave109-sticker-config into develop
Owner

变更内容

  • 从 sticker_engine.py 抽离数据类/常量/位置解析/贴纸列表解析
  • ImageStickerConfig / TextStickerConfig / StickerOverlayResult 数据类
  • resolve_sticker_position 位置计算(9宫格+自定义坐标+钳制)
  • sticker_engine 保留全部导出,完全向后兼容
  • 新增 52 个纯逻辑单测
  • sticker_engine.py: 612→489行 (-123行, -20%)

验证

  • test_sticker_engine (81) + test_sticker_config (52) + test_cover_reverse_sticker (5) = 138 passed
## 变更内容 - 从 sticker_engine.py 抽离数据类/常量/位置解析/贴纸列表解析 - ImageStickerConfig / TextStickerConfig / StickerOverlayResult 数据类 - resolve_sticker_position 位置计算(9宫格+自定义坐标+钳制) - sticker_engine 保留全部导出,完全向后兼容 - 新增 52 个纯逻辑单测 - sticker_engine.py: 612→489行 (-123行, -20%) ## 验证 - test_sticker_engine (81) + test_sticker_config (52) + test_cover_reverse_sticker (5) = 138 passed
xiaoxia added 1 commit 2026-07-27 00:36:17 +08:00
refactor(wave109): 抽离sticker_config领域模型 + 52单测
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 31s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m20s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m4s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m9s
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 / PR Build Worker Image (pull_request) Successful in 48s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m47s
AI Code Review / AI Code Review (pull_request) Successful in 1m40s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m2s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 51s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m5s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m0s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m24s
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 / Unit Tests (pull_request) Failing after 2m51s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m30s
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (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 30s
0be86ea817
- 从sticker_engine.py抽离数据类/常量/位置解析/贴纸列表解析
- sticker_engine保留全部导出,完全向后兼容
- 新增52个纯逻辑单测,覆盖配置解析、位置计算、边界校验
- sticker_engine.py: 612→489行 (-123行, -20%)
Collaborator

代码审查结果 - PR #991

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

  1. packages/domain/sticker_config.py 第118行z_index 的赋值逻辑存在错误,导致无法设置 z_index=0
    • ImageStickerConfig.from_dict 方法中,代码为 z_index=safe_int("z_index", 10) or 10。由于 0 or 10 在 Python 中结果为 10,当用户显式传入 z_index=0 时,会被强制修改为 10z_index=0 是合法的图层索引(通常用于底层),不应被覆盖。
    • 修改建议:删除 or 10,直接使用 z_index=safe_int("z_index", 10)safe_int 内部已经处理了缺失值和转换失败的情况,会返回默认值 10。

💡 建议(1个可选)

  1. packages/domain/sticker_config.pyImageStickerConfigTextStickerConfigz_index 处理逻辑不一致。
    • ImageStickerConfig 中使用了 or 10(如上所述是错误的),而 TextStickerConfig(第246行)仅使用了 safe_int("z_index", 10)。建议保持一致,均移除多余的 or 逻辑。

格式检查通过 | 逻辑审查需修改 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-07-26 16:50:37 | 模型:

## 代码审查结果 - PR #991 ### ⚠️ 问题(1个需要修改) 1. **packages/domain/sticker_config.py 第118行**:`z_index` 的赋值逻辑存在错误,导致无法设置 `z_index=0`。 - 在 `ImageStickerConfig.from_dict` 方法中,代码为 `z_index=safe_int("z_index", 10) or 10`。由于 `0 or 10` 在 Python 中结果为 `10`,当用户显式传入 `z_index=0` 时,会被强制修改为 `10`。`z_index=0` 是合法的图层索引(通常用于底层),不应被覆盖。 - 修改建议:删除 `or 10`,直接使用 `z_index=safe_int("z_index", 10)`。`safe_int` 内部已经处理了缺失值和转换失败的情况,会返回默认值 10。 ### 💡 建议(1个可选) 1. **packages/domain/sticker_config.py**:`ImageStickerConfig` 与 `TextStickerConfig` 的 `z_index` 处理逻辑不一致。 - `ImageStickerConfig` 中使用了 `or 10`(如上所述是错误的),而 `TextStickerConfig`(第246行)仅使用了 `safe_int("z_index", 10)`。建议保持一致,均移除多余的 `or` 逻辑。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-26 16:50:37 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

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

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

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

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

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

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #991 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 31s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m20s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m4s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m9s
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 / PR Build Worker Image (pull_request) Successful in 48s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m47s
AI Code Review / AI Code Review (pull_request) Successful in 1m40s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m2s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 51s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m5s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m0s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m24s
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 / Unit Tests (pull_request) Failing after 2m51s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m30s
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (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 30s

Pull request closed

Sign in to join this conversation.