2025-03-17 14:58:05 +08:00

108 lines
3.5 KiB
Python
Raw 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.

# 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