"""应用配置模块。""" import os class BaseConfig: """基础配置。""" DEBUG = False TESTING = False SECRET_KEY = os.environ.get("SECRET_KEY", "yg-rules-secret-key-change-in-production") # 日志配置 LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO") LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs") LOG_MAX_BYTES = 10 * 1024 * 1024 # 10MB LOG_BACKUP_COUNT = 5 # 请求日志中间件 LOG_REQUEST_BODY = True LOG_RESPONSE_BODY = True LOG_BODY_MAX_LENGTH = 2048 # 超过此长度的 body 会被截断 # 规则生成配置 CREATE_SQL = os.environ.get("CREATE_SQL", "false").strip().lower() in {"1", "true", "yes", "on"} class DevelopmentConfig(BaseConfig): """开发环境配置。""" DEBUG = True LOG_LEVEL = "DEBUG" class ProductionConfig(BaseConfig): """生产环境配置。""" LOG_LEVEL = "WARNING" class TestingConfig(BaseConfig): """测试环境配置。""" TESTING = True LOG_LEVEL = "DEBUG" config_map = { "development": DevelopmentConfig, "production": ProductionConfig, "testing": TestingConfig, "default": DevelopmentConfig, } def get_config(env_name: str | None = None) -> type[BaseConfig]: """根据环境名获取配置类。""" env = env_name or os.environ.get("FLASK_ENV", "development") return config_map.get(env, DevelopmentConfig)