290 lines
7.2 KiB
Python
290 lines
7.2 KiB
Python
|
#!/usr/bin/env python
|
|||
|
# -*- coding: utf-8 -*-
|
|||
|
|
|||
|
"""
|
|||
|
任务配置模块
|
|||
|
包含任务类型、状态等配置信息
|
|||
|
"""
|
|||
|
|
|||
|
from enum import Enum
|
|||
|
|
|||
|
# 任务类型枚举
|
|||
|
class TaskType(str, Enum):
|
|||
|
NORMAL = "NORMAL"
|
|||
|
SCHEDULED = "SCHEDULED"
|
|||
|
|
|||
|
# 任务状态枚举
|
|||
|
class TaskStatus(str, Enum):
|
|||
|
PENDING = "PENDING"
|
|||
|
RUNNING = "RUNNING"
|
|||
|
COMPLETED = "COMPLETED"
|
|||
|
CANCELLED = "CANCELLED"
|
|||
|
FAILED = "FAILED"
|
|||
|
PAUSED = "PAUSED"
|
|||
|
WAITING = "WAITING"
|
|||
|
|
|||
|
# 任务类型配置
|
|||
|
class TaskTypeConfig:
|
|||
|
"""任务类型配置"""
|
|||
|
NORMAL = TaskType.NORMAL.value
|
|||
|
SCHEDULED = TaskType.SCHEDULED.value
|
|||
|
|
|||
|
# 任务类型详细信息
|
|||
|
DETAILS = {
|
|||
|
NORMAL: {
|
|||
|
"name": "普通任务",
|
|||
|
"description": "立即执行的一次性任务"
|
|||
|
},
|
|||
|
SCHEDULED: {
|
|||
|
"name": "定时任务",
|
|||
|
"description": "按照预设时间执行的任务"
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@classmethod
|
|||
|
def get_name(cls, task_type_key):
|
|||
|
"""
|
|||
|
获取任务类型的显示名称
|
|||
|
|
|||
|
Args:
|
|||
|
task_type_key (str): 任务类型的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务类型的显示名称
|
|||
|
"""
|
|||
|
return cls.DETAILS.get(task_type_key, {}).get("name", task_type_key)
|
|||
|
|
|||
|
@classmethod
|
|||
|
def get_description(cls, task_type_key):
|
|||
|
"""
|
|||
|
获取任务类型的描述
|
|||
|
|
|||
|
Args:
|
|||
|
task_type_key (str): 任务类型的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务类型的描述
|
|||
|
"""
|
|||
|
return cls.DETAILS.get(task_type_key, {}).get("description", "")
|
|||
|
|
|||
|
@classmethod
|
|||
|
def get_all(cls):
|
|||
|
"""
|
|||
|
获取所有任务类型
|
|||
|
|
|||
|
Returns:
|
|||
|
list: 任务类型列表,每个元素包含key、name和description
|
|||
|
"""
|
|||
|
task_types = []
|
|||
|
for key, config in cls.DETAILS.items():
|
|||
|
task_types.append({
|
|||
|
"key": key,
|
|||
|
"name": config["name"],
|
|||
|
"description": config["description"]
|
|||
|
})
|
|||
|
return task_types
|
|||
|
|
|||
|
|
|||
|
# 任务状态配置
|
|||
|
class TaskStatusConfig:
|
|||
|
"""任务状态配置"""
|
|||
|
PENDING = TaskStatus.PENDING.value
|
|||
|
RUNNING = TaskStatus.RUNNING.value
|
|||
|
COMPLETED = TaskStatus.COMPLETED.value
|
|||
|
CANCELLED = TaskStatus.CANCELLED.value
|
|||
|
FAILED = TaskStatus.FAILED.value
|
|||
|
PAUSED = TaskStatus.PAUSED.value
|
|||
|
WAITING = TaskStatus.WAITING.value
|
|||
|
|
|||
|
# 任务状态详细信息
|
|||
|
DETAILS = {
|
|||
|
PENDING: {
|
|||
|
"name": "待执行",
|
|||
|
"description": "任务已创建但尚未开始执行"
|
|||
|
},
|
|||
|
RUNNING: {
|
|||
|
"name": "执行中",
|
|||
|
"description": "任务正在执行"
|
|||
|
},
|
|||
|
COMPLETED: {
|
|||
|
"name": "已完成",
|
|||
|
"description": "任务已成功完成"
|
|||
|
},
|
|||
|
CANCELLED: {
|
|||
|
"name": "已取消",
|
|||
|
"description": "任务被用户取消"
|
|||
|
},
|
|||
|
FAILED: {
|
|||
|
"name": "执行失败",
|
|||
|
"description": "任务执行过程中出现错误"
|
|||
|
},
|
|||
|
PAUSED: {
|
|||
|
"name": "暂停中",
|
|||
|
"description": "任务被暂停"
|
|||
|
},
|
|||
|
WAITING: {
|
|||
|
"name": "等待中",
|
|||
|
"description": "任务正在等待某些条件满足"
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@classmethod
|
|||
|
def get_name(cls, task_status_key):
|
|||
|
"""
|
|||
|
获取任务状态的显示名称
|
|||
|
|
|||
|
Args:
|
|||
|
task_status_key (str): 任务状态的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务状态的显示名称
|
|||
|
"""
|
|||
|
return cls.DETAILS.get(task_status_key, {}).get("name", task_status_key)
|
|||
|
|
|||
|
@classmethod
|
|||
|
def get_description(cls, task_status_key):
|
|||
|
"""
|
|||
|
获取任务状态的描述
|
|||
|
|
|||
|
Args:
|
|||
|
task_status_key (str): 任务状态的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务状态的描述
|
|||
|
"""
|
|||
|
return cls.DETAILS.get(task_status_key, {}).get("description", "")
|
|||
|
|
|||
|
@classmethod
|
|||
|
def get_all(cls):
|
|||
|
"""
|
|||
|
获取所有任务状态
|
|||
|
|
|||
|
Returns:
|
|||
|
list: 任务状态列表,每个元素包含key、name和description
|
|||
|
"""
|
|||
|
task_statuses = []
|
|||
|
for key, config in cls.DETAILS.items():
|
|||
|
task_statuses.append({
|
|||
|
"key": key,
|
|||
|
"name": config["name"],
|
|||
|
"description": config["description"]
|
|||
|
})
|
|||
|
return task_statuses
|
|||
|
|
|||
|
|
|||
|
# 默认值配置
|
|||
|
class DefaultConfig:
|
|||
|
"""默认值配置"""
|
|||
|
TASK_DESCRIPTION = "" # 默认任务描述(备注)
|
|||
|
TEMPLATE_DESCRIPTION = "用户自有模板" # 默认模板描述
|
|||
|
|
|||
|
|
|||
|
# 为了向后兼容,保留原有的函数和变量
|
|||
|
TASK_TYPE_CONFIG = TaskTypeConfig.DETAILS
|
|||
|
TASK_STATUS_CONFIG = TaskStatusConfig.DETAILS
|
|||
|
|
|||
|
# 任务类型常量
|
|||
|
TASK_TYPE_NORMAL = TaskTypeConfig.NORMAL
|
|||
|
TASK_TYPE_SCHEDULED = TaskTypeConfig.SCHEDULED
|
|||
|
|
|||
|
# 默认值配置
|
|||
|
DEFAULT_TASK_DESCRIPTION = DefaultConfig.TASK_DESCRIPTION
|
|||
|
DEFAULT_TEMPLATE_DESCRIPTION = DefaultConfig.TEMPLATE_DESCRIPTION
|
|||
|
|
|||
|
# 获取任务类型名称
|
|||
|
def get_task_type_name(task_type_key):
|
|||
|
"""
|
|||
|
获取任务类型的显示名称
|
|||
|
|
|||
|
Args:
|
|||
|
task_type_key (str): 任务类型的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务类型的显示名称
|
|||
|
"""
|
|||
|
return TaskTypeConfig.get_name(task_type_key)
|
|||
|
|
|||
|
# 获取任务类型描述
|
|||
|
def get_task_type_description(task_type_key):
|
|||
|
"""
|
|||
|
获取任务类型的描述
|
|||
|
|
|||
|
Args:
|
|||
|
task_type_key (str): 任务类型的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务类型的描述
|
|||
|
"""
|
|||
|
return TaskTypeConfig.get_description(task_type_key)
|
|||
|
|
|||
|
# 获取任务状态名称
|
|||
|
def get_task_status_name(task_status_key):
|
|||
|
"""
|
|||
|
获取任务状态的显示名称
|
|||
|
|
|||
|
Args:
|
|||
|
task_status_key (str): 任务状态的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务状态的显示名称
|
|||
|
"""
|
|||
|
return TaskStatusConfig.get_name(task_status_key)
|
|||
|
|
|||
|
# 获取任务状态描述
|
|||
|
def get_task_status_description(task_status_key):
|
|||
|
"""
|
|||
|
获取任务状态的描述
|
|||
|
|
|||
|
Args:
|
|||
|
task_status_key (str): 任务状态的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务状态的描述
|
|||
|
"""
|
|||
|
return TaskStatusConfig.get_description(task_status_key)
|
|||
|
|
|||
|
# 获取所有任务类型
|
|||
|
def get_all_task_types():
|
|||
|
"""
|
|||
|
获取所有任务类型
|
|||
|
|
|||
|
Returns:
|
|||
|
list: 任务类型列表,每个元素包含key、name和description
|
|||
|
"""
|
|||
|
return TaskTypeConfig.get_all()
|
|||
|
|
|||
|
# 获取所有任务状态
|
|||
|
def get_all_task_statuses():
|
|||
|
"""
|
|||
|
获取所有任务状态
|
|||
|
|
|||
|
Returns:
|
|||
|
list: 任务状态列表,每个元素包含key、name和description
|
|||
|
"""
|
|||
|
return TaskStatusConfig.get_all()
|
|||
|
|
|||
|
# 获取任务类型枚举
|
|||
|
def get_task_type_enum(task_type_key):
|
|||
|
"""
|
|||
|
获取任务类型的枚举值
|
|||
|
|
|||
|
Args:
|
|||
|
task_type_key (str): 任务类型的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务类型的枚举值(小写)
|
|||
|
"""
|
|||
|
return task_type_key.lower()
|
|||
|
|
|||
|
# 获取任务状态枚举
|
|||
|
def get_task_status_enum(task_status_key):
|
|||
|
"""
|
|||
|
获取任务状态的枚举值
|
|||
|
|
|||
|
Args:
|
|||
|
task_status_key (str): 任务状态的键名
|
|||
|
|
|||
|
Returns:
|
|||
|
str: 任务状态的枚举值(小写)
|
|||
|
"""
|
|||
|
return task_status_key.lower()
|