feat: 添加 Action 协议
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
"""修改范围及后续能力需求"""
|
||||
|
||||
from typing import Literal, Self
|
||||
|
||||
from pydantic import Field, model_validator
|
||||
|
||||
from app.schemas.base import ExtensibleModel, NonBlankString
|
||||
|
||||
|
||||
class ChangeScope(ExtensibleModel):
|
||||
scope: Literal["local", "screen"] = Field(
|
||||
description="local=局部修改或新增;screen=整体设计或修改"
|
||||
)
|
||||
target_ids: list[NonBlankString] = Field(
|
||||
default_factory=list, description="涉及的已有组件 ID,新增内容和画布属性可为空"
|
||||
)
|
||||
needs_planning: bool = Field(
|
||||
description="是否需要布局、组件组合或设计规划,与范围大小分别判断"
|
||||
)
|
||||
resource_needs: list[NonBlankString] = Field(
|
||||
default_factory=list,
|
||||
description="需要补充查询的数据、组件、模板或素材及用途,已有信息足够则为空",
|
||||
)
|
||||
reason: NonBlankString = Field(description="简短说明范围、规划和资源判断依据")
|
||||
|
||||
@model_validator(mode="after")
|
||||
def unique_targets(self) -> Self:
|
||||
if len(self.target_ids) != len(set(self.target_ids)):
|
||||
raise ValueError("target_ids 不能包含重复 ID")
|
||||
return self
|
||||
Reference in New Issue
Block a user