from typing import Optional from pydantic import BaseModel, Field, field_validator # 定时任务表单验证 class JobForm(BaseModel): id: Optional[int] = Field(None, description="任务ID") job_name: str = Field(..., min_length=1, max_length=255, description="任务名称") job_alias: Optional[str] = Field(None, max_length=255, description="任务别名") job_group: Optional[str] = Field(None, max_length=255, description="任务分组") job_trigger: Optional[str] = Field(None, max_length=255, description="任务触发器") status: int = Field(..., ge=0, le=3, description="任务状态") cron_expression: Optional[str] = Field(None, max_length=255, description="Cron表达式") execute_policy: int = Field(..., ge=1, le=3, description="执行策略") is_sync: int = Field(..., ge=0, le=1, description="是否同步任务") url: Optional[str] = Field(None, max_length=255, description="任务URL") params: Optional[str] = Field(None, max_length=2000, description="任务参数") note: Optional[str] = Field(None, max_length=255, description="任务备注") @field_validator('cron_expression') @classmethod def validate_cron(cls, v): if v: v = v.strip() return v # 任务状态表单 class JobStatusForm(BaseModel): id: int = Field(..., gt=0, description="任务ID") status: int = Field(..., ge=0, le=3, description="任务状态")