"""动作类型统一入口,新增操作时在这里显式加入联合类型""" from typing import Annotated from pydantic import Field, TypeAdapter from .add import AddAction from .base import ActionModel, BaseAction from .delete import DeleteAction from .move import MoveAction from .resize import ResizeAction from .update import UpdateAction from .update_canvas import UpdateCanvasAction # 按 type 选择对应模型,不维护重复的操作名称映射 Action = Annotated[ AddAction | DeleteAction | MoveAction | ResizeAction | UpdateAction | UpdateCanvasAction, Field(discriminator="type"), ] action_adapter = TypeAdapter(Action) class ActionBatch(ActionModel): actions: list[Action] = Field(description="按数组顺序执行的动作列表,允许为空") __all__ = [ "Action", "ActionBatch", "AddAction", "BaseAction", "DeleteAction", "MoveAction", "ResizeAction", "UpdateAction", "UpdateCanvasAction", "action_adapter", ]