feat: 转场特效引擎 — TransitionEngine + 14种转场预设 + 时长边界校验 + 降级策略
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1m32s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1540h27m26s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1540h27m26s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1540h27m26s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Failing after 1540h27m28s
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 / Deploy Production (pull_request) Failing after 1540h59m3s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Failing after 1540h59m4s

This commit is contained in:
xiaoxia-bot
2026-07-14 10:58:39 +08:00
parent 527eb61f19
commit 7dbff690cd
12 changed files with 958 additions and 6 deletions
+3
View File
@@ -54,6 +54,7 @@ class SQLAlchemyEditPlanClipRepository:
start_time=clip.start_time,
duration=clip.duration,
transition_effect=clip.transition_effect,
transition_duration=clip.transition_duration,
status=clip.status,
config=clip.config,
)
@@ -76,6 +77,7 @@ class SQLAlchemyEditPlanClipRepository:
model.start_time = clip.start_time
model.duration = clip.duration
model.transition_effect = clip.transition_effect
model.transition_duration = clip.transition_duration
model.status = clip.status
model.config = clip.config
model.updated_at = clip.updated_at
@@ -120,6 +122,7 @@ class SQLAlchemyEditPlanClipRepository:
start_time=model.start_time or 0.0,
duration=model.duration or 0.0,
transition_effect=model.transition_effect or "cut",
transition_duration=getattr(model, "transition_duration", 0.0) or 0.0,
status=EditPlanClipStatus(model.status) if model.status else EditPlanClipStatus.PENDING,
config=model.config or {},
created_at=model.created_at,
@@ -196,6 +196,7 @@ class EditPlanClipModel(Base):
start_time = Column(Float, nullable=False, default=0.0)
duration = Column(Float, nullable=False, default=0.0)
transition_effect = Column(String(20), nullable=False, default="cut")
transition_duration = Column(Float, nullable=False, default=0.0)
status = Column(String(20), nullable=False, default="pending", index=True)
config = Column(JSON, nullable=False, default=dict)
created_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))