63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
"""动作类型统一入口,新增操作时在这里显式加入联合类型"""
|
|
|
|
from typing import Annotated
|
|
|
|
from pydantic import Field
|
|
|
|
from .add import AddAction
|
|
from .base import ActionModel, BaseAction
|
|
from .delete import DeleteAction
|
|
from .layout import AlignAction, ArrangeAction, DistributeAction, SetLayoutAction
|
|
from .move import MoveAction
|
|
from .resize import ResizeAction
|
|
from .set_interaction import SetInteractionAction
|
|
from .update import UpdateAction
|
|
from .update_canvas import UpdateCanvasAction
|
|
|
|
# 按 type 选择对应模型,不维护重复的操作名称映射
|
|
Action = Annotated[
|
|
AddAction
|
|
| DeleteAction
|
|
| MoveAction
|
|
| ResizeAction
|
|
| UpdateAction
|
|
| UpdateCanvasAction
|
|
| SetInteractionAction,
|
|
Field(discriminator="type"),
|
|
]
|
|
|
|
# 模型可以提交的动作:前端协议 + 布局意图
|
|
# 布局意图由后端展开成 move 和 resize,不会返回给前端
|
|
AgentAction = Annotated[
|
|
AddAction
|
|
| DeleteAction
|
|
| MoveAction
|
|
| ResizeAction
|
|
| UpdateAction
|
|
| UpdateCanvasAction
|
|
| SetInteractionAction
|
|
| ArrangeAction
|
|
| AlignAction
|
|
| DistributeAction
|
|
| SetLayoutAction,
|
|
Field(discriminator="type"),
|
|
]
|
|
|
|
__all__ = [
|
|
"Action",
|
|
"AgentAction",
|
|
"AlignAction",
|
|
"ArrangeAction",
|
|
"DistributeAction",
|
|
"SetLayoutAction",
|
|
"ActionModel",
|
|
"AddAction",
|
|
"BaseAction",
|
|
"DeleteAction",
|
|
"MoveAction",
|
|
"ResizeAction",
|
|
"SetInteractionAction",
|
|
"UpdateAction",
|
|
"UpdateCanvasAction",
|
|
]
|