59 lines
3.0 KiB
Python
59 lines
3.0 KiB
Python
|
#!/usr/bin/env python
|
|||
|
# -*- coding: utf-8 -*-
|
|||
|
|
|||
|
"""
|
|||
|
任务定义模型
|
|||
|
对应vwed_taskdef表
|
|||
|
"""
|
|||
|
|
|||
|
import datetime
|
|||
|
from sqlalchemy import Column, String, Integer, DateTime, Text, Boolean, Index
|
|||
|
from sqlalchemy.dialects.mysql import LONGTEXT, BIT
|
|||
|
from data.models.base import BaseModel
|
|||
|
from data.enum.task_def_enum import EnableStatus, PeriodicTaskStatus
|
|||
|
class VWEDTaskDef(BaseModel):
|
|||
|
"""
|
|||
|
任务定义模型
|
|||
|
对应vwed_taskdef表
|
|||
|
功能:定义任务模板,包含任务流程和逻辑
|
|||
|
"""
|
|||
|
__tablename__ = 'vwed_taskdef'
|
|||
|
|
|||
|
__table_args__ = (
|
|||
|
Index('idx_vwed_taskdef_label', 'label'),
|
|||
|
Index('idx_vwed_taskdef_if_enable', 'if_enable'),
|
|||
|
Index('idx_vwed_taskdef_periodic_task', 'periodic_task'),
|
|||
|
Index('idx_vwed_taskdef_template_name', 'template_name'),
|
|||
|
Index('idx_vwed_taskdef_tenant_id', 'tenant_id'),
|
|||
|
Index('idx_vwed_taskdef_map_id', 'map_id'),
|
|||
|
Index('idx_vwed_taskdef_created_at', 'created_at'),
|
|||
|
{
|
|||
|
'mysql_engine': 'InnoDB',
|
|||
|
'mysql_charset': 'utf8mb4',
|
|||
|
'mysql_collate': 'utf8mb4_general_ci',
|
|||
|
'info': {'order_by': 'created_at DESC'}
|
|||
|
}
|
|||
|
)
|
|||
|
|
|||
|
id = Column(String(255), primary_key=True, nullable=False, comment='任务定义唯一标识')
|
|||
|
label = Column(String(255), comment='任务名称标签')
|
|||
|
created_by = Column(String(255), comment='创建用户ID')
|
|||
|
version = Column(Integer, comment='任务版本号')
|
|||
|
detail = Column(LONGTEXT, comment='任务详细定义(JSON格式,包含输入参数、根块配置等)')
|
|||
|
template_name = Column(String(255), comment='所使用的模板名称')
|
|||
|
period = Column(Integer, nullable=False, default=1000, comment='周期时间(毫秒)')
|
|||
|
periodic_task = Column(Integer, nullable=False, default=PeriodicTaskStatus.NON_PERIODIC, comment='是否为周期任务')
|
|||
|
status = Column(Integer, default=0, comment='任务状态')
|
|||
|
if_enable = Column(Integer, nullable=False, default=EnableStatus.DISABLED, comment='是否启用')
|
|||
|
delay = Column(Integer, nullable=False, default=3000, comment='延迟时间(毫秒)')
|
|||
|
release_sites = Column(BIT(1), comment='释放站点')
|
|||
|
remark = Column(String(255), comment='备注')
|
|||
|
tenant_id = Column(String(255), nullable=False, comment='租户ID,用于多租户隔离')
|
|||
|
map_id = Column(String(255), nullable=False, comment='地图ID')
|
|||
|
user_token = Column(String(500), comment='用户token值,每次请求需要用到的认证信息')
|
|||
|
|
|||
|
def __repr__(self):
|
|||
|
return f"<VWEDTaskDef(id='{self.id}', label='{self.label}', version='{self.version}', if_enable='{self.if_enable}', status='{self.status}', periodic_task='{self.periodic_task}', detail='{self.detail}', release_sites='{self.release_sites}', create_date='{self.create_date}', remark='{self.remark}', tenant_id='{self.tenant_id}', user_token='{self.user_token}')>"
|
|||
|
def remove_label(self):
|
|||
|
return [self.id.__str__(), self.is_deleted.__str__(), self.updated_at.__str__(), self.created_at.__str__(),self.version.__str__()]
|