108 lines
3.5 KiB
Python
108 lines
3.5 KiB
Python
|
# config/settings.py
|
|||
|
"""
|
|||
|
应用全局配置文件
|
|||
|
包含应用基本信息、服务配置、数据库配置、日志配置等
|
|||
|
"""
|
|||
|
import os
|
|||
|
from dataclasses import dataclass
|
|||
|
from typing import List, Dict, Any
|
|||
|
|
|||
|
# 应用基本信息
|
|||
|
class AppConfig:
|
|||
|
"""应用基本配置"""
|
|||
|
NAME = "天风任务模块" # 应用名称
|
|||
|
VERSION = "1.0.0" # 应用版本号
|
|||
|
DEBUG = os.environ.get("DEBUG", "True").lower() == "true" # 调试模式开关,可通过环境变量设置
|
|||
|
|
|||
|
# 服务配置
|
|||
|
class ServerConfig:
|
|||
|
"""服务器配置"""
|
|||
|
HOST = os.environ.get("HOST", "0.0.0.0") # 服务监听地址
|
|||
|
PORT = int(os.environ.get("PORT", 8000)) # 服务监听端口
|
|||
|
RELOAD = AppConfig.DEBUG # 是否启用热重载,默认与DEBUG模式一致
|
|||
|
|
|||
|
# API配置
|
|||
|
class ApiConfig:
|
|||
|
"""API配置"""
|
|||
|
PREFIX = "/api/v1"
|
|||
|
TITLE = "天风任务模块API" # API文档标题
|
|||
|
DESCRIPTION = "AMR调度系统中天风任务模块的API接口" # API文档描述
|
|||
|
VERSION = AppConfig.VERSION # API版本号
|
|||
|
|
|||
|
# CORS配置(跨域资源共享)
|
|||
|
class CorsConfig:
|
|||
|
"""CORS配置"""
|
|||
|
ALLOW_ORIGINS = ["*"] # 允许的源,* 表示允许所有源
|
|||
|
ALLOW_CREDENTIALS = True # 是否允许携带凭证
|
|||
|
ALLOW_METHODS = ["*"] # 允许的HTTP方法
|
|||
|
ALLOW_HEADERS = ["*"] # 允许的HTTP头
|
|||
|
|
|||
|
# 数据库配置
|
|||
|
class DatabaseConfig:
|
|||
|
"""数据库配置"""
|
|||
|
HOST = os.environ.get("DB_HOST", "localhost") # 数据库主机
|
|||
|
PORT = int(os.environ.get("DB_PORT", 3306)) # 数据库端口
|
|||
|
USER = os.environ.get("DB_USER", "root") # 数据库用户名
|
|||
|
PASSWORD = os.environ.get("DB_PASSWORD", "password") # 数据库密码
|
|||
|
DATABASE = os.environ.get("DB_NAME", "tianfeng_task") # 数据库名
|
|||
|
CHARSET = "utf8mb4" # 字符集
|
|||
|
|
|||
|
@classmethod
|
|||
|
def as_dict(cls) -> Dict[str, Any]:
|
|||
|
"""返回数据库配置字典"""
|
|||
|
return {
|
|||
|
"host": cls.HOST,
|
|||
|
"port": cls.PORT,
|
|||
|
"user": cls.USER,
|
|||
|
"password": cls.PASSWORD,
|
|||
|
"database": cls.DATABASE,
|
|||
|
"charset": cls.CHARSET
|
|||
|
}
|
|||
|
|
|||
|
# 日志配置
|
|||
|
class LogConfig:
|
|||
|
"""日志配置"""
|
|||
|
LEVEL = os.environ.get("LOG_LEVEL", "INFO") # 日志级别
|
|||
|
FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" # 日志格式
|
|||
|
FILE = os.environ.get("LOG_FILE", "logs/tianfeng_task.log") # 日志文件路径
|
|||
|
|
|||
|
@classmethod
|
|||
|
def as_dict(cls) -> Dict[str, Any]:
|
|||
|
"""返回日志配置字典"""
|
|||
|
return {
|
|||
|
"level": cls.LEVEL,
|
|||
|
"format": cls.FORMAT,
|
|||
|
"file": cls.FILE
|
|||
|
}
|
|||
|
|
|||
|
# 组件配置
|
|||
|
class ComponentConfig:
|
|||
|
"""组件配置"""
|
|||
|
PACKAGES = ["components"] # 组件包路径
|
|||
|
|
|||
|
# 响应码配置
|
|||
|
class ResponseCode:
|
|||
|
"""响应码配置"""
|
|||
|
SUCCESS = 200 # 成功
|
|||
|
BAD_REQUEST = 400 # 请求错误
|
|||
|
UNAUTHORIZED = 401 # 未授权
|
|||
|
FORBIDDEN = 403 # 禁止访问
|
|||
|
NOT_FOUND = 404 # 资源不存在
|
|||
|
SERVER_ERROR = 500 # 服务器错误
|
|||
|
|
|||
|
# 任务状态配置
|
|||
|
class TaskStatus:
|
|||
|
"""任务状态配置"""
|
|||
|
PENDING = "待执行" # 待执行
|
|||
|
RUNNING = "执行中" # 执行中
|
|||
|
COMPLETED = "已完成" # 已完成
|
|||
|
FAILED = "执行失败" # 执行失败
|
|||
|
CANCELED = "已取消" # 已取消
|
|||
|
PAUSED = "暂停中" # 暂停中
|
|||
|
WAITING = "等待中" # 等待中
|
|||
|
|
|||
|
# 导出日志配置字典,供其他模块使用
|
|||
|
LOG_CONFIG = LogConfig.as_dict()
|
|||
|
|
|||
|
# 导出组件包列表,供组件注册使用
|
|||
|
COMPONENT_PACKAGES = ComponentConfig.PACKAGES
|