Files
Neo-ZQYY/apps/backend/app/schemas/schedules.py
Neo 6f8f12314f feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本
包含多个会话的累积代码变更:
- backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔
- admin-web: ETL 状态页、任务管理、调度配置、登录优化
- miniprogram: 看板页面、聊天集成、UI 组件、导航更新
- etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强
- tenant-admin: 项目初始化
- db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8)
- packages/shared: 枚举和工具函数更新
- tools: 数据库工具、报表生成、健康检查
- docs: PRD/架构/部署/合约文档更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:03:48 +08:00

80 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- 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 MinRunIntervalItem(BaseModel):
"""单个任务的最小执行间隔"""
value: int = 0
unit: Literal["minutes", "hours", "days"] = "minutes"
class CreateScheduleRequest(BaseModel):
"""创建调度任务请求"""
name: str
task_codes: list[str]
task_config: dict[str, Any]
schedule_config: ScheduleConfigSchema
run_immediately: bool = False
min_run_interval_value: int = 0 # 0 表示无限制schedule 级别默认)
min_run_interval_unit: Literal["minutes", "hours", "days"] = "minutes"
min_run_intervals: dict[str, MinRunIntervalItem] = {} # per-task-code 间隔
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
min_run_interval_value: int | None = None
min_run_interval_unit: Literal["minutes", "hours", "days"] | None = None
min_run_intervals: dict[str, MinRunIntervalItem] | 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
min_run_interval_value: int = 0
min_run_interval_unit: str = "minutes"
last_success_at: datetime | None = None
min_run_intervals: dict[str, Any] = {}
created_at: datetime
updated_at: datetime