Files
Incidents-Data-Portal/backend/app/config.py
T

90 lines
3.8 KiB
Python
Raw Normal View History

2026-07-10 18:55:55 +08:00
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]