包含多个会话的累积代码变更: - 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>
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""定时任务管理 — Pydantic 响应模型"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Self
|
|
|
|
from pydantic import BaseModel, model_validator
|
|
|
|
|
|
class TriggerJobItem(BaseModel):
|
|
"""单个定时任务信息"""
|
|
id: int
|
|
job_type: str
|
|
job_name: str
|
|
trigger_condition: str
|
|
trigger_config: dict | None = None
|
|
last_run_at: str | None = None
|
|
next_run_at: str | None = None
|
|
status: str
|
|
description: str | None = None
|
|
last_error: str | None = None
|
|
created_at: str | None = None
|
|
|
|
|
|
class RunJobResult(BaseModel):
|
|
"""手动执行结果"""
|
|
success: bool
|
|
message: str
|
|
|
|
|
|
class UpdateTriggerConfigRequest(BaseModel):
|
|
"""触发器配置编辑请求(部分更新)"""
|
|
cron_expression: str | None = None # 5 字段 cron 表达式
|
|
interval_seconds: int | None = None # 间隔秒数,>= 1
|
|
|
|
@model_validator(mode='after')
|
|
def at_least_one_field(self) -> Self:
|
|
if self.cron_expression is None and self.interval_seconds is None:
|
|
raise ValueError('至少提供 cron_expression 或 interval_seconds 之一')
|
|
return self
|