feat: 添加自动化任务(automation_jobs)功能模块

This commit is contained in:
qzl
2026-03-24 12:38:11 +08:00
parent f4b7eb7e09
commit 23359c2d01
43 changed files with 4266 additions and 1139 deletions
+23 -4
View File
@@ -3,14 +3,13 @@ from __future__ import annotations
from datetime import datetime, time
from typing import Self
from uuid import UUID
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
from pydantic import BaseModel, ConfigDict, Field
from pydantic import BaseModel, ConfigDict, Field, field_validator
from models.automation_jobs import AutomationJob as OrmAutomationJob
from models.automation_jobs import AutomationJobStatus, ScheduleType
from schemas.automation import (
AutomationJobConfig,
)
from schemas.automation import AutomationJobConfig
class AutomationJobResponse(BaseModel):
@@ -61,6 +60,15 @@ class AutomationJobCreateRequest(BaseModel):
status: AutomationJobStatus = Field(default=AutomationJobStatus.ACTIVE)
config: AutomationJobConfig
@field_validator("timezone")
@classmethod
def validate_timezone(cls, value: str) -> str:
try:
ZoneInfo(value)
except ZoneInfoNotFoundError as exc:
raise ValueError("timezone must be a valid IANA timezone") from exc
return value
class AutomationJobUpdateRequest(BaseModel):
model_config = ConfigDict(extra="forbid")
@@ -72,6 +80,17 @@ class AutomationJobUpdateRequest(BaseModel):
status: AutomationJobStatus | None = None
config: AutomationJobConfig | None = None
@field_validator("timezone")
@classmethod
def validate_timezone(cls, value: str | None) -> str | None:
if value is None:
return value
try:
ZoneInfo(value)
except ZoneInfoNotFoundError as exc:
raise ValueError("timezone must be a valid IANA timezone") from exc
return value
class AutomationJobListResponse(BaseModel):
items: list[AutomationJobResponse]