config.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import os
  2. from dotenv import load_dotenv
  3. # 加载项目根目录下的 .env 文件
  4. env_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), '.env')
  5. load_dotenv(env_path, interpolate=True)
  6. def _build_database_uri():
  7. """从 .env 中的独立配置项拼接 DATABASE_URL"""
  8. user = os.environ.get('DB_USER', '')
  9. password = os.environ.get('DB_PASSWORD', '')
  10. host = os.environ.get('DB_HOST', '')
  11. port = os.environ.get('DB_PORT', '5432')
  12. name = os.environ.get('DB_NAME', '')
  13. if not all([user, password, host, name]):
  14. raise RuntimeError(
  15. "缺少 PostgreSQL 数据库配置,请在 .env 中设置 "
  16. "DB_USER, DB_PASSWORD, DB_HOST, DB_NAME"
  17. )
  18. return f'postgresql://{user}:{password}@{host}:{port}/{name}'
  19. class Config:
  20. APP_NAME = os.environ.get('APP_NAME', '路桥采集平台')
  21. SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
  22. SQLALCHEMY_DATABASE_URI = _build_database_uri()
  23. SQLALCHEMY_TRACK_MODIFICATIONS = False
  24. # JWT 配置(用于本地 Token 签发)
  25. JWT_SECRET_KEY = os.environ.get('JWT_SECRET_KEY') or 'jwt-secret-change-me'
  26. JWT_ACCESS_TOKEN_EXPIRES = 1200 # 20 分钟
  27. JWT_REFRESH_TOKEN_EXPIRES = 86400 # 24 小时
  28. # SSO 统一认证配置
  29. SSO_BASE_URL = os.environ.get('SSO_BASE_URL', 'http://192.168.92.61:8200')
  30. SSO_CLIENT_ID = os.environ.get('SSO_CLIENT_ID', '')
  31. SSO_CLIENT_SECRET = os.environ.get('SSO_CLIENT_SECRET', '')
  32. SSO_REDIRECT_URI = os.environ.get('SSO_REDIRECT_URI', 'http://localhost:5000/auth/callback')
  33. SSO_FRONTEND_URL = os.environ.get('SSO_FRONTEND_URL', 'http://localhost:5000')
  34. SSO_SCOPE = os.environ.get('SSO_SCOPE', 'email')
  35. SSO_LOGOUT_REDIRECT_URL = os.environ.get('SSO_LOGOUT_REDIRECT_URL', 'http://192.168.92.61:9200/login')
  36. # 样本中心配置
  37. SAMPLE_CENTER_BASE_URL = os.environ.get('SAMPLE_CENTER_BASE_URL', 'http://192.168.92.61')
  38. SAMPLE_CENTER_APP_ID = os.environ.get('SAMPLE_CENTER_APP_ID', '')
  39. SAMPLE_CENTER_APP_SECRET = os.environ.get('SAMPLE_CENTER_APP_SECRET', '')