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() |