"""EditTemplateVersion — 模板发布版本快照,用于回滚和版本历史.""" from __future__ import annotations from dataclasses import dataclass, field from datetime import datetime, timezone from typing import Any from uuid import uuid4 @dataclass(slots=True) class EditTemplateVersion: """模板发布版本快照 每次发布时保存模板当时的完整状态(config + clip_configs), 支持回滚到任意历史版本。 """ id: str template_id: str version: int name: str = "" editing_mode: str = "one_take" config: dict[str, Any] = field(default_factory=dict) clip_configs: list[dict[str, Any]] = field(default_factory=list) change_note: str = "" published_by: str = "" created_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc)) @classmethod def create( cls, template_id: str, version: int, *, name: str = "", editing_mode: str = "one_take", config: dict[str, Any] | None = None, clip_configs: list[dict[str, Any]] | None = None, change_note: str = "", published_by: str = "", ) -> "EditTemplateVersion": return cls( id=uuid4().hex, template_id=template_id, version=version, name=name, editing_mode=editing_mode, config=config or {}, clip_configs=clip_configs or [], change_note=change_note, published_by=published_by, )