import os from dotenv import load_dotenv if os.getenv("FLASK_ENV") != "production": load_dotenv() # 自动读取项目根目录的 .env 文件 class Config: """基础配置(所有环境共享的公共参数)""" # 1. 敏感配置:强制从环境变量读取,无默认值(生产环境必须配置) DATABRICKS_TOKEN = os.getenv("DATABRICKS_TOKEN") JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY") # 移除弱默认值 SECRET_KEY = os.getenv("SECRET_KEY") # 移除弱默认值 # 2. 公共非敏感配置 DATABRICKS_HOST = ( "https://adb-3035612432650494.2.databricks.azure.cn" # 固定地址可保留 ) REQUEST_TIMEOUT = 600 # 远程请求超时时间(秒) JWT_ACCESS_TOKEN_EXPIRES = 14400 # 更直观的过期时间(替代 14400 秒) SQLALCHEMY_TRACK_MODIFICATIONS = False # 统一关闭查询跟踪,减少性能损耗 # 3. 安全基础配置(所有环境共享) SESSION_COOKIE_HTTPONLY = True # 禁止 JS 访问 Session Cookie(防 XSS) SESSION_COOKIE_SAMESITE = "Strict" # 限制跨站携带 Cookie(防 CSRF) # 配置链接wedata的参数 WEDATA_SECRET_ID='AKIDtfFdqqgYUflgdZaPFvOfkDd0EGEUkx0u' WEDATA_SECRET_KEY='sBKH5WrESUJwLdljV6Yrysc9TaTAh3Gk' WEDATA_ENGINE='gen6_prod_aiag' WEDATA_DATABASE='dws' # 图片上传的配置 UPLOAD_FOLDER = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'uploads') MAX_CONTENT_LENGTH = 5 * 1024 * 1024 # 5MB(开发环境) IMAGE_BASE_URL='http://127.0.0.1:5221' class DevelopmentConfig(Config): """开发环境配置(本地开发用,配置宽松)""" SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:12345@localhost:3306/incid_db?charset=utf8mb4" # 开发库临时密码 GEN5_TABLE_NAME = os.getenv( "GEN5_TABLE_NAME", "hive_metastore.taf_level_two_plus.accident_report_raw_data" ) CLUSTER_ID = os.getenv("CLUSTER_ID", "1203-054146-wkjf95i0") CLIENT_ID = os.getenv("CLIENT_ID","A17336FC-A8D7-4CEA-8777-384BFEABABC1") CLIENT_PASSWORD = os.getenv("CLIENT_PASSWORD","U7-C1BZQdL8V5c.z~qA_64SO2l9F3J0o") SS0_HOST = os.getenv("SS0_HOST","https://ssoalpha.dvb.corpinter.net.cn/") REDIRECT_URL = os.getenv("REDIRECT_URL","http://localhost:5221/report") DOMAIN = os.getenv("DOMAIN","http://localhost:3001") # 2. 开发模式开关 DEBUG = True TESTING = True # 3. 开发环境 Cookie 配置(无 HTTPS,禁用 secure) SESSION_COOKIE_SECURE = False HEADERS_SECRET_KEY=os.getenv("HEADERS_SECRET_KEY","mbincid-server12") class ProductionConfig(Config): """生产环境配置""" SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL") TABLE_NAME = os.getenv("TABLE_NAME") CLUSTER_ID = os.getenv("CLUSTER_ID") CLIENT_ID = os.getenv("CLIENT_ID","A17336FC-A8D7-4CEA-8777-384BFEABABC1") CLIENT_PASSWORD = os.getenv("CLIENT_PASSWORD","U7-C1BZQdL8V5c.z~qA_64SO2l9F3J0o") SS0_HOST = os.getenv("SS0_HOST","https://ssoalpha.dvb.corpinter.net.cn/") REDIRECT_URL = os.getenv("REDIRECT_URL","http://localhost:5221/report") DOMAIN = os.getenv("DOMAIN","http://localhost:3001") DEBUG = False # 禁用调试(关键!避免生产环境暴露敏感信息) TESTING = False UPLOAD_FOLDER=os.getenv('UPLOAD_FOLDER','/app/uploads') MAX_CONTENT_LENGTH=int(os.getenv('MAX_CONTENT_LENGTH', 5242880)) IMAGE_BASE_URL=os.getenv('IMAGE_BASE_URL','http://127.0.0.1:5221') GEN5_TABLE_NAME = os.getenv( "GEN5_TABLE_NAME", "hive_metastore.taf_level_two_plus.accident_report_raw_data" ) HEADERS_SECRET_KEY=os.getenv("HEADERS_SECRET_KEY","mbincid-server12") env = os.getenv("FLASK_ENV", "development") config = {"development": DevelopmentConfig, "production": ProductionConfig}[env]