补齐平台模板与场景 DSL、预算控制、执行看板和企业场景脚本,增强 Windows 启动/迁移与前端代理和聊天会话记忆,修复执行创建阶段 500 与异步链路排障体验。 Made-with: Cursor
40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
"""
|
||
统一场景 DSL(阶段 3):场景可编程输入契约,供入口 / 模板 / 外部系统对齐。
|
||
"""
|
||
from typing import Any, Dict, List, Tuple
|
||
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class ScenarioDSL(BaseModel):
|
||
"""标准输入:目标、约束、产物、验收 + 业务载荷。"""
|
||
|
||
version: str = "1"
|
||
scene: str = Field(default="", description="场景标识,如 customer_service / dev_codegen")
|
||
goal: str = Field(default="", description="业务目标")
|
||
constraints: List[str] = Field(default_factory=list, description="硬约束")
|
||
deliverables: List[str] = Field(default_factory=list, description="期望产出")
|
||
acceptance: List[str] = Field(default_factory=list, description="验收标准")
|
||
payload: dict[str, Any] = Field(default_factory=dict, description="扩展键值")
|
||
|
||
|
||
def validate_scenario_dsl(raw: Any) -> Tuple[bool, List[str]]:
|
||
"""
|
||
校验场景 DSL。根须为 object,字段通过 Pydantic 校验。
|
||
|
||
Returns:
|
||
(是否通过, 错误文案列表)
|
||
"""
|
||
if not isinstance(raw, dict):
|
||
return False, ["DSL 根须为 JSON object"]
|
||
try:
|
||
ScenarioDSL.model_validate(raw)
|
||
except Exception as e:
|
||
return False, [str(e)]
|
||
return True, []
|
||
|
||
|
||
def normalize_scenario_dsl(raw: dict) -> Dict[str, Any]:
|
||
"""校验后得到规范 dict,便于写入节点上下文。"""
|
||
return ScenarioDSL.model_validate(raw).model_dump()
|