"""Pydantic schemas - 工作流""" from typing import Any, Dict, List, Optional from pydantic import BaseModel, Field class ProcessDefCreate(BaseModel): processCode: str = Field(..., description="流程编码") processName: str = Field(..., description="流程名称") status: Optional[str] = Field("1", description="1启用 0停用") orderNum: Optional[int] = Field(None, description="排序号") remark: Optional[str] = Field(None, description="备注") class ProcessDefUpdate(BaseModel): processCode: Optional[str] = Field(None, description="流程编码") processName: Optional[str] = Field(None, description="流程名称") status: Optional[str] = Field(None, description="1启用 0停用") orderNum: Optional[int] = Field(None, description="排序号") remark: Optional[str] = Field(None, description="备注") class ProcessDefResponse(BaseModel): id: str processCode: str processName: str status: str latestVersion: Optional[int] = None tenantNo: Optional[str] = None orderNum: Optional[int] = None remark: Optional[str] = None createTime: Optional[str] = None updateTime: Optional[str] = None class Config: from_attributes = True class NodeData(BaseModel): nodeKey: str = Field(..., description="节点唯一键") nodeType: str = Field(..., description="start/end/approval/condition 等") nodeName: Optional[str] = Field(None, description="节点名称") configJson: Optional[str] = Field(None, description="审批人/SQL/会签策略等配置") class TransitionData(BaseModel): fromNodeKey: str = Field(..., description="起始节点key") toNodeKey: str = Field(..., description="目标节点key") conditionExpr: Optional[str] = Field(None, description="条件表达式或分支说明") class PublishVersionRequest(BaseModel): graphJson: str = Field(..., description="节点与连线等配置JSON") nodes: List[NodeData] = Field(..., description="节点列表") transitions: List[TransitionData] = Field(default_factory=list, description="连线列表") remark: Optional[str] = Field(None, description="备注") class VersionResponse(BaseModel): id: str versionNo: int isLatest: Optional[str] = None remark: Optional[str] = None createTime: Optional[str] = None updateTime: Optional[str] = None class Config: from_attributes = True class StartInstanceRequest(BaseModel): processCode: str = Field(..., description="流程编码") businessType: Optional[str] = Field(None, description="业务类型") businessId: Optional[str] = Field(None, description="业务主键") variables: Optional[Dict[str, Any]] = Field(default_factory=dict, description="流程变量") callbackUrl: Optional[str] = Field(None, description="业务回调地址") class ApproveRequest(BaseModel): commentText: Optional[str] = Field(None, description="审批意见") class TaskResponse(BaseModel): id: str instanceId: str nodeKey: Optional[str] = None assigneeUserId: Optional[str] = None status: Optional[str] = None commentText: Optional[str] = None createTime: Optional[str] = None updateTime: Optional[str] = None processName: Optional[str] = None businessType: Optional[str] = None businessId: Optional[str] = None starterUserId: Optional[str] = None instanceStatus: Optional[str] = None instanceCreateTime: Optional[str] = None class Config: from_attributes = True class InstanceResponse(BaseModel): id: str processVersionId: str businessType: Optional[str] = None businessId: Optional[str] = None starterUserId: Optional[str] = None status: Optional[str] = None createTime: Optional[str] = None updateTime: Optional[str] = None tasks: List[Dict[str, Any]] = Field(default_factory=list) class Config: from_attributes = True