fix(test): 修复publish_template_from_draft单元测试失败
AI Code Review / AI Code Review (pull_request) Successful in 2m11s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m47s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 7m35s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 6m57s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 7s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 1388h31m45s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1388h33m8s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1388h33m10s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1388h33m14s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1388h33m16s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1388h33m18s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1388h35m10s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1388h35m12s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1388h35m13s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1388h35m14s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1388h35m15s
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been skipped
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1389h5m21s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1389h7m20s

根因:publish_template_from_draft方法中删除旧片段配置用了self._db.query().delete()
直接操作SQLAlchemy,绕过了_clip_config_repo。单元测试的stub repository
无法感知这个删除操作,导致旧数据残留,发布后片段数量从预期2个变成3个。

修复:将直接db删除改为_clip_config_repo.delete_by_template(),
统一走repository模式,保证测试stub和真实行为一致。
This commit is contained in:
CI Bot
2026-07-20 18:53:39 +08:00
parent 419cc3fb6a
commit 79cec240c3
@@ -754,14 +754,8 @@ class EditTemplateService:
template.bump_version() # 版本号 +1
updated_template = self._template_repo.update(template)
# 批量删除旧的片段配置(N+1 → 1条DELETE,外层事务统一提交)
from packages.adapters.sqlalchemy_impl.models import (
TemplateClipConfigModel,
)
self._db.query(TemplateClipConfigModel).filter(TemplateClipConfigModel.template_id == template_id).delete(
synchronize_session=False
)
# 批量删除旧的片段配置(走 repository,保证测试 stub 和真实行为一致)
self._clip_config_repo.delete_by_template(template_id)
# 创建新的片段配置
created_configs: list[TemplateClipConfig] = []