2025-04-30 16:57:46 +08:00

59 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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__()]