Files
shanxia2.0/backend/app/schemas/workflow.py
T
2026-05-17 08:36:37 +08:00

116 lines
3.9 KiB
Python

"""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