Files
shanxia2.0/backend/app/schemas/bx/workflow.py
T
2026-09-26 20:55:15 +08:00

66 lines
1.7 KiB
Python

from typing import List, Optional
from pydantic import BaseModel, ConfigDict, field_validator
from pydantic.alias_generators import to_camel
def _coerce_optional_id(value):
if value is None:
return None
return str(value).strip()
class WorkflowNodeCreate(BaseModel):
model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
node_name: str
node_order: int
approver_id: Optional[str] = None
approver_name: Optional[str] = None
action_type: Optional[str] = "approve"
@field_validator("approver_id", mode="before")
@classmethod
def validate_approver_id(cls, value):
return _coerce_optional_id(value)
class WorkflowNodeOut(BaseModel):
model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel)
id: str
node_name: str
node_order: int
approver_id: Optional[str] = None
approver_name: Optional[str] = None
action_type: Optional[str] = "approve"
class WorkflowDefCreate(BaseModel):
model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
biz_type: str
wf_name: str
status: int = 1
nodes: Optional[List[WorkflowNodeCreate]] = None
class WorkflowDefUpdate(BaseModel):
model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
biz_type: Optional[str] = None
wf_name: Optional[str] = None
status: Optional[int] = None
nodes: Optional[List[WorkflowNodeCreate]] = None
class WorkflowDefOut(BaseModel):
model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel)
id: str
biz_type: str
wf_name: str
status: int
create_by: Optional[str] = None
nodes: List[WorkflowNodeOut] = []