tianfeng_task_modules/config/task_config.py

290 lines
7.2 KiB
Python
Raw Normal View History

2025-03-17 14:58:05 +08:00
#!/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: 任务类型列表每个元素包含keyname和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: 任务状态列表每个元素包含keyname和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: 任务类型列表每个元素包含keyname和description
"""
return TaskTypeConfig.get_all()
# 获取所有任务状态
def get_all_task_statuses():
"""
获取所有任务状态
Returns:
list: 任务状态列表每个元素包含keyname和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()