63 lines
1.6 KiB
Python
63 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
|
|
run_immediately: bool = False
|
|
|
|
|
|
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
|