mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-21 20:55:14 +00:00
feat: 重构任务调度系统和工作流节点管理
- 重构任务调度系统,将定时任务改为调度器监控,优化状态管理和日志记录 - 重构工作流节点模型,简化分类并增加执行相关字段 - 优化工作流执行逻辑,移除对开始/结束节点的强制要求 - 前端新增终端组件和工作流节点操作按钮优化 - 移除无用代码和文件,清理后端任务调度相关代码 - 更新系统菜单结构,调整任务管理相关权限和名称
This commit is contained in:
@@ -1,86 +1,35 @@
|
||||
from sqlalchemy import Boolean, ForeignKey, Integer, String, Text
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
import enum
|
||||
|
||||
from app.core.base_model import ModelMixin, UserMixin
|
||||
from sqlalchemy import String, Text
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.core.base_model import ModelMixin
|
||||
|
||||
|
||||
class JobModel(ModelMixin, UserMixin):
|
||||
class JobStatusEnum(enum.Enum):
|
||||
"""执行状态枚举"""
|
||||
|
||||
PENDING = "pending"
|
||||
RUNNING = "running"
|
||||
SUCCESS = "success"
|
||||
FAILED = "failed"
|
||||
TIMEOUT = "timeout"
|
||||
CANCELLED = "cancelled"
|
||||
|
||||
|
||||
class JobModel(ModelMixin):
|
||||
"""
|
||||
定时任务调度表
|
||||
- 0: 运行中
|
||||
- 1: 暂停中
|
||||
任务执行日志表
|
||||
"""
|
||||
|
||||
__tablename__: str = "task_job"
|
||||
__table_args__: dict[str, str] = {"comment": "定时任务调度表"}
|
||||
__loader_options__: list[str] = ["job_logs", "created_by", "updated_by"]
|
||||
__table_args__: dict[str, str] = {"comment": "任务执行日志表"}
|
||||
|
||||
name: Mapped[str | None] = mapped_column(
|
||||
String(64), nullable=True, default="", comment="任务名称"
|
||||
)
|
||||
jobstore: Mapped[str | None] = mapped_column(
|
||||
String(64), nullable=True, default="default", comment="存储器"
|
||||
)
|
||||
executor: Mapped[str | None] = mapped_column(
|
||||
String(64), nullable=True, default="default", comment="执行器"
|
||||
)
|
||||
trigger: Mapped[str] = mapped_column(String(64), nullable=False, comment="触发器")
|
||||
trigger_args: Mapped[str | None] = mapped_column(Text, nullable=True, comment="触发器参数")
|
||||
func: Mapped[str] = mapped_column(Text, nullable=False, comment="任务函数")
|
||||
args: Mapped[str | None] = mapped_column(Text, nullable=True, comment="位置参数")
|
||||
kwargs: Mapped[str | None] = mapped_column(Text, nullable=True, comment="关键字参数")
|
||||
coalesce: Mapped[bool] = mapped_column(
|
||||
Boolean,
|
||||
nullable=True,
|
||||
default=False,
|
||||
comment="是否合并运行",
|
||||
)
|
||||
max_instances: Mapped[int] = mapped_column(
|
||||
Integer, nullable=True, default=1, comment="最大实例数"
|
||||
)
|
||||
start_date: Mapped[str | None] = mapped_column(String(64), nullable=True, comment="开始时间")
|
||||
end_date: Mapped[str | None] = mapped_column(String(64), nullable=True, comment="结束时间")
|
||||
|
||||
# 关联关系
|
||||
job_logs: Mapped[list["JobLogModel"] | None] = relationship(
|
||||
back_populates="job", lazy="selectin"
|
||||
)
|
||||
|
||||
|
||||
class JobLogModel(ModelMixin):
|
||||
"""
|
||||
定时任务调度日志表
|
||||
"""
|
||||
|
||||
__tablename__: str = "task_job_log"
|
||||
__table_args__: dict[str, str] = {"comment": "定时任务调度日志表"}
|
||||
__loader_options__: list[str] = ["job"]
|
||||
|
||||
job_name: Mapped[str] = mapped_column(String(64), nullable=False, comment="任务名称")
|
||||
job_group: Mapped[str] = mapped_column(String(64), nullable=False, comment="任务组名")
|
||||
job_executor: Mapped[str] = mapped_column(String(64), nullable=False, comment="任务执行器")
|
||||
invoke_target: Mapped[str] = mapped_column(
|
||||
String(500), nullable=False, comment="调用目标字符串"
|
||||
)
|
||||
job_args: Mapped[str | None] = mapped_column(
|
||||
String(255), nullable=True, default="", comment="位置参数"
|
||||
)
|
||||
job_kwargs: Mapped[str | None] = mapped_column(
|
||||
String(255), nullable=True, default="", comment="关键字参数"
|
||||
)
|
||||
job_trigger: Mapped[str | None] = mapped_column(
|
||||
String(255), nullable=True, default="", comment="任务触发器"
|
||||
)
|
||||
job_message: Mapped[str | None] = mapped_column(
|
||||
String(500), nullable=True, default="", comment="日志信息"
|
||||
)
|
||||
exception_info: Mapped[str | None] = mapped_column(
|
||||
String(2000), nullable=True, default="", comment="异常信息"
|
||||
)
|
||||
|
||||
# 任务关联
|
||||
job_id: Mapped[int | None] = mapped_column(
|
||||
ForeignKey("task_job.id", ondelete="CASCADE"), nullable=True, index=True, comment="任务ID"
|
||||
)
|
||||
|
||||
job: Mapped["JobModel | None"] = relationship(back_populates="job_logs", lazy="selectin")
|
||||
job_id: Mapped[str] = mapped_column(String(64), nullable=False, index=True, comment="任务ID")
|
||||
job_name: Mapped[str | None] = mapped_column(String(128), nullable=True, comment="任务名称")
|
||||
trigger_type: Mapped[str | None] = mapped_column(String(32), nullable=True, comment="触发方式: cron/interval/date/manual")
|
||||
status: Mapped[str] = mapped_column(String(16), nullable=False, default=JobStatusEnum.PENDING.value, comment="执行状态")
|
||||
next_run_time: Mapped[str | None] = mapped_column(String(64), nullable=True, comment="下次执行时间")
|
||||
job_state: Mapped[str | None] = mapped_column(Text, nullable=True, comment="任务状态信息")
|
||||
result: Mapped[str | None] = mapped_column(Text, nullable=True, comment="执行结果")
|
||||
error: Mapped[str | None] = mapped_column(Text, nullable=True, comment="错误信息")
|
||||
|
||||
Reference in New Issue
Block a user