Files
Incidents-Data-Portal/backend/app/config.py
T
2026-07-10 21:10:17 +08:00

94 lines
4.1 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.
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")
# 前端回调路由(dev 根路径)
FRONTEND_CALLBACK_PATH = os.getenv("FRONTEND_CALLBACK_PATH", "/callback")
# 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","https://cadb.dvb.corpinter.net.cn/accidentportal/api/incident/authorized")
DOMAIN = os.getenv("DOMAIN","https://cadb.dvb.corpinter.net.cn")
# 前端回调路由(prod 带域名前缀)
FRONTEND_CALLBACK_PATH = os.getenv("FRONTEND_CALLBACK_PATH", "/accidentportal/callback")
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]