Files
aiagent/backend/app/services/scenario_dsl.py
renjianbo 0608161c82 feat: 完善企业场景多线路由与执行稳定性
补齐平台模板与场景 DSL、预算控制、执行看板和企业场景脚本,增强 Windows 启动/迁移与前端代理和聊天会话记忆,修复执行创建阶段 500 与异步链路排障体验。

Made-with: Cursor
2026-04-09 21:58:53 +08:00

40 lines
1.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
统一场景 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()