mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
Some checks are pending
检查bot是否运行正常 / bot check (push) Waiting to run
CodeQL Code Security Analysis / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Waiting to run
CodeQL Code Security Analysis / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
Sequential Lint and Type Check / ruff-call (push) Waiting to run
Sequential Lint and Type Check / pyright-call (push) Blocked by required conditions
Release Drafter / Update Release Draft (push) Waiting to run
Force Sync to Aliyun / sync (push) Waiting to run
Update Version / update-version (push) Waiting to run
* ♻️ refactor(scheduler): 重构定时任务系统并增强功能 - 【模型重命名】将 `ScheduleInfo` 模型及其数据库表重命名为 `ScheduledJob`,以提高语义清晰度。 - 【触发器抽象】引入 `Trigger` 工厂类,提供类型安全的 Cron、Interval 和 Date 触发器配置。 - 【执行策略】新增 `ExecutionPolicy` 模型,允许为定时任务定义重试策略、延迟、异常类型以及成功/失败回调。 - 【任务执行】重构任务执行逻辑,支持 NoneBot 的依赖注入,并根据 `ExecutionPolicy` 处理任务的重试和回调。 - 【临时任务】增加声明式和编程式的临时任务调度能力,支持非持久化任务在运行时动态创建和执行。 - 【管理命令】更新定时任务管理命令 (`schedule_admin`),使其适配新的 `ScheduledJob` 模型和参数验证逻辑。 - 【展示优化】改进定时任务列表和状态展示,使用新的触发器格式化逻辑和参数模型信息。 - 【重试装饰器】为 `Retry.api` 装饰器添加 `on_success` 回调,允许在任务成功执行后触发额外操作。 * 🚨 auto fix by pre-commit hooks --------- Co-authored-by: webjoin111 <455457521@qq.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
from tortoise import fields
|
|
|
|
from zhenxun.services.db_context import Model
|
|
|
|
|
|
class ScheduledJob(Model):
|
|
id = fields.IntField(pk=True, generated=True, auto_increment=True)
|
|
"""自增id"""
|
|
bot_id = fields.CharField(
|
|
255, null=True, default=None, description="任务关联的Bot ID"
|
|
)
|
|
"""任务关联的Bot ID"""
|
|
plugin_name = fields.CharField(255, description="插件模块名")
|
|
"""插件模块名"""
|
|
group_id = fields.CharField(
|
|
255,
|
|
null=True,
|
|
description="群组ID, '__ALL_GROUPS__' 表示所有群, 为空表示全局任务",
|
|
)
|
|
"""群组ID, 为空表示全局任务"""
|
|
trigger_type = fields.CharField(
|
|
max_length=20, default="cron", description="触发器类型 (cron, interval, date)"
|
|
)
|
|
"""触发器类型 (cron, interval, date)"""
|
|
trigger_config = fields.JSONField(description="触发器具体配置")
|
|
"""触发器具体配置"""
|
|
job_kwargs = fields.JSONField(
|
|
default=dict, description="传递给任务函数的额外关键字参数"
|
|
)
|
|
"""传递给任务函数的额外关键字参数"""
|
|
is_enabled = fields.BooleanField(default=True, description="是否启用")
|
|
"""是否启用"""
|
|
create_time = fields.DatetimeField(auto_now_add=True)
|
|
"""创建时间"""
|
|
|
|
class Meta: # pyright: ignore [reportIncompatibleVariableOverride]
|
|
table = "scheduled_jobs"
|
|
table_description = "通用定时任务表"
|