fix: 修复定时任务模型字段与数据库表不匹配的问题
All checks were successful
continuous-integration/drone/push Build is passing

- task_type -> execution_type
- status -> is_enabled
- 移除不存在的字段 webhook_method, webhook_headers, script_timeout
- time_points/input_params 适配 JSON 类型
This commit is contained in:
2026-01-28 16:45:58 +08:00
parent 104487f082
commit d9fa9708ce
3 changed files with 66 additions and 81 deletions

View File

@@ -1,6 +1,6 @@
"""定时任务相关模型"""
from datetime import datetime
from sqlalchemy import Column, BigInteger, Integer, String, Text, Enum, SmallInteger, TIMESTAMP, DateTime
from sqlalchemy import Column, BigInteger, Integer, String, Text, Enum, SmallInteger, TIMESTAMP, DateTime, JSON, Boolean
from ..database import Base
@@ -11,40 +11,43 @@ class ScheduledTask(Base):
id = Column(Integer, primary_key=True, autoincrement=True)
tenant_id = Column(String(50))
task_name = Column(String(100), nullable=False)
task_type = Column(Enum('webhook', 'script'), nullable=False, default='script')
task_desc = Column(String(500))
# 调度配置
schedule_type = Column(Enum('simple', 'cron'), nullable=False, default='simple')
time_points = Column(Text) # JSON数组 ["08:00", "12:00"]
time_points = Column(JSON) # JSON数组 ["08:00", "12:00"]
cron_expression = Column(String(100))
timezone = Column(String(50), default='Asia/Shanghai')
# 执行类型
execution_type = Column(Enum('webhook', 'script'), nullable=False, default='script')
# Webhook配置
webhook_url = Column(String(500))
webhook_method = Column(String(10), default='POST')
webhook_headers = Column(Text) # JSON格式
# 脚本配置
script_content = Column(Text)
script_timeout = Column(Integer, default=300)
script_deps = Column(Text) # 脚本依赖
# 输入参数
input_params = Column(Text) # JSON格式
input_params = Column(JSON) # JSON格式
# 重试配置
retry_count = Column(Integer, default=0)
retry_interval = Column(Integer, default=60)
# 告警配置
alert_on_failure = Column(SmallInteger, default=0)
alert_on_failure = Column(Boolean, default=False)
alert_webhook = Column(String(500))
# 状态
status = Column(SmallInteger, default=1) # 0-禁用 1-启用
is_enabled = Column(Boolean, default=True)
last_run_at = Column(DateTime)
last_run_status = Column(String(20))
last_run_status = Column(Enum('success', 'failed', 'running'))
last_run_message = Column(Text)
created_at = Column(TIMESTAMP, default=datetime.now)
updated_at = Column(TIMESTAMP, default=datetime.now, onupdate=datetime.now)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
class TaskLog(Base):