Files
Neo-ZQYY/apps/backend/app/schemas/schedules.py

62 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
"""调度配置 Pydantic 模型
定义 ScheduleConfigSchema 及相关模型,供调度服务和路由使用。
"""
from datetime import datetime
from typing import Any, Literal
from pydantic import BaseModel
class ScheduleConfigSchema(BaseModel):
"""调度配置 — 支持 5 种调度类型"""
schedule_type: Literal["once", "interval", "daily", "weekly", "cron"]
interval_value: int = 1
interval_unit: Literal["minutes", "hours", "days"] = "hours"
daily_time: str = "04:00"
weekly_days: list[int] = [1]
weekly_time: str = "04:00"
cron_expression: str = "0 4 * * *"
enabled: bool = True
start_date: str | None = None
end_date: str | None = None
class CreateScheduleRequest(BaseModel):
"""创建调度任务请求"""
name: str
task_codes: list[str]
task_config: dict[str, Any]
schedule_config: ScheduleConfigSchema
class UpdateScheduleRequest(BaseModel):
"""更新调度任务请求(所有字段可选)"""
name: str | None = None
task_codes: list[str] | None = None
task_config: dict[str, Any] | None = None
schedule_config: ScheduleConfigSchema | None = None
class ScheduleResponse(BaseModel):
"""调度任务响应"""
id: str
site_id: int
name: str
task_codes: list[str]
task_config: dict[str, Any]
schedule_config: dict[str, Any]
enabled: bool
last_run_at: datetime | None = None
next_run_at: datetime | None = None
run_count: int
last_status: str | None = None
created_at: datetime
updated_at: datetime