Compare commits

...

3 Commits

Author SHA1 Message Date
CI Bot 0f4cf246e3 fix(frontend): 修复find回调参数c隐式any类型 2026-07-20 19:55:42 +08:00
CI Bot e644b15f3b fix(frontend): 修复GenerationStatusResponse类型缺少error_message字段
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 / 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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 11s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m44s
AI Code Review / AI Code Review (pull_request) Successful in 1m58s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m55s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m45s
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 / Unit Tests (pull_request) Successful in 42s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 3m53s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 6m44s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 7m52s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 5m13s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
根因:后端EditPlanGenerationStatusResponse有error_message字段,
但前端GenerationStatusResponse和ClipStatusItem类型定义漏了,
导致Frontend Lint报TS2339错误。

修复:
- GenerationStatusResponse增加error_message?: string
- ClipStatusItem增加error_message?: string
- GeneratePage.tsx中防御性的error/message字段访问改用类型断言
2026-07-20 18:56:17 +08:00
CI Bot 79cec240c3 fix(test): 修复publish_template_from_draft单元测试失败
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 / 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 / Check if frontend-only change (pull_request) Successful in 14s
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 / 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
AI Code Review / AI Code Review (pull_request) Successful in 2m11s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m47s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 45s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 4m35s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 6m27s
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 / Integration Tests (pull_request) Successful in 4m49s
根因: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和真实行为一致。
2026-07-20 18:53:39 +08:00
3 changed files with 10 additions and 13 deletions
@@ -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] = []
Regular → Executable
+2
View File
@@ -189,6 +189,7 @@ export interface ClipStatusItem {
asset_id?: string
text_content?: string
duration?: number
error_message?: string
}
/** 生成状态轮询响应 */
@@ -196,6 +197,7 @@ export interface GenerationStatusResponse {
plan_id: string
plan_status: EditPlanStatus
generation_task_id?: string
error_message?: string
clips: ClipStatusItem[]
}
+6 -5
View File
@@ -1053,12 +1053,13 @@ const GeneratePage: React.FC = () => {
setGenerating(false)
// 提取后端返回的错误详情,便于排查
// 注意:后端返回的 error_message/error/message 可能是对象而非字符串
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- 防御性错误提取,后端错误格式不固定
const dataAny = data as Record<string, any>
const rawMsg =
data.error_message ||
data.error ||
data.message ||
(data.clips || []).find((c: { status: string }) => c.status === "failed")
?.error_message ||
dataAny.error_message ||
dataAny.error ||
dataAny.message ||
(data.clips || []).find((c: any) => c.status === "failed")?.error_message ||
"视频生成失败,请联系管理员或重试"
// 安全提取字符串:递归处理嵌套对象(后端可能返回 {code, message: {code, message}} 等嵌套结构)
const safeExtract = (val: unknown): string => {