import os import platform def get_environment(): """ 获取当前运行环境 优先级: 1. 环境变量 FLASK_ENV 2. 根据操作系统自动判断(Windows -> development, Linux -> production) """ # 首先检查环境变量 env = os.environ.get('FLASK_ENV') if env: return env.lower() # 根据操作系统判断 system = platform.system().lower() if system == 'windows': return 'development' elif system == 'linux': return 'production' else: return 'development' # 其他系统默认使用开发环境 class BaseConfig: """基础配置类,包含所有环境共享的配置""" SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess' JSON_AS_ASCII = False # 平台特定配置 PLATFORM = platform.system().lower() # 文件上传配置 ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'xlsx', 'xls', 'csv'} # PostgreSQL 基础配置 SQLALCHEMY_ENGINE_OPTIONS = { 'pool_pre_ping': True, 'pool_recycle': 300, 'pool_size': 10, 'max_overflow': 20 } # Neo4j 基础配置 NEO4J_ENCRYPTED = False class DevelopmentConfig(BaseConfig): """Windows 开发环境配置""" FLASK_ENV = 'development' DEBUG = True PORT = 5500 # 开发环境 MinIO 配置 MINIO_HOST = '192.168.67.138:9000' MINIO_USER = 'citu-test' MINIO_PASSWORD = 'citu-test' MINIO_SECURE = False BUCKET_NAME = 'dataops-bucket' PREFIX = '' # 开发环境 PostgreSQL 配置 SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:postgres@192.168.67.138:5432/dataops' # 开发环境 Neo4j 配置 NEO4J_URI = "bolt://192.168.67.138:7687" NEO4J_HTTP_URI = "http://192.168.67.138:7474" NEO4J_USER = "neo4j" NEO4J_PASSWORD = "password" # 开发环境文件路径配置 UPLOAD_BASE_PATH = 'C:\\tmp\\upload' ARCHIVE_BASE_PATH = 'C:\\tmp\\archive' class ProductionConfig(BaseConfig): """Linux 生产环境配置""" FLASK_ENV = 'production' DEBUG = False PORT = 80 # 生产环境 MinIO 配置 MINIO_HOST = os.environ.get('MINIO_HOST', 'minio.citupro.com') MINIO_USER = os.environ.get('MINIO_USER', 'default-user') MINIO_PASSWORD = os.environ.get('MINIO_PASSWORD', 'default-password') MINIO_SECURE = True BUCKET_NAME = 'dataops-bucket' PREFIX = '' # 生产环境 PostgreSQL 配置 SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'postgresql://postgres:citupgdba@192.168.3.143:5432/dataops') # 生产环境 Neo4j 配置 NEO4J_URI = os.environ.get('NEO4J_URI', "bolt://192.168.3.143:7687") NEO4J_HTTP_URI = os.environ.get('NEO4J_HTTP_URI', "http://192.168.3.143:7474") NEO4J_USER = os.environ.get('NEO4J_USER', "neo4j") NEO4J_PASSWORD = os.environ.get('NEO4J_PASSWORD', "mxlneo4j") # 生产环境文件路径配置 UPLOAD_BASE_PATH = '/data/upload' ARCHIVE_BASE_PATH = '/data/archive' # 配置字典 config = { 'development': DevelopmentConfig, 'production': ProductionConfig, 'default': DevelopmentConfig } # 获取当前环境 current_env = get_environment()